No description
Find a file
2025-01-09 08:47:39 +01:00
nginx more documentation 2023-09-26 22:03:52 +02:00
python Migration Skript (Redis -> PostgreSQL) 2025-01-08 14:22:47 +01:00
src code cleanup 2025-01-09 08:47:39 +01:00
systemd fix environment 2025-01-08 15:11:04 +01:00
.gitignore Initial commit 2023-09-25 15:12:47 +02:00
Cargo.lock 2025-01-08 14:55:59 +01:00
Cargo.toml bump version number 2025-01-08 14:23:46 +01:00
README.md more on readme 2025-01-08 14:22:44 +01:00

KOreader Sync Server

This is a KOreader sync server, implemented in Rust. It uses the crates axum, sqlx, serde and serde_json.

Requirements

  • Rust toolchain for compilation
  • A running PostgreSQL server
  • Nginx (or Apache) webserver as a reverse proxy, since kosyncrs only listens locally and uses HTTP.

Installation

Just compile it with cargo build --release. You can then copy the executable for example to /usr/local/bin/.

If you want to start the service automatically, you can adapt the example systemd file for your needs. Please pay particularly attention to the PG_URL environment variable.You have to adjust the database username and password.

You can also use nginx as a reverse proxy, so that the sync server listens on port 443. An example file is provided.

Database setup

First, create a new database user and set a password:

$ createuser -P kosync

Then, create a new database which is owned by the newly created user:

$ createdb -O kosync kosync

Connect to the database as user kosync (with psql) and create the database tables:

CREATE TABLE users (
  id BIGSERIAL PRIMARY KEY,
  username TEXT UNIQUE NOT NULL,
  password TEXT
);

CREATE TABLE progresses (
  id BIGSERIAL PRIMARY KEY,
  user_id BIGINT,
  document TEXT NOT NULL,
  progress TEXT NOT NULL,
  percentage REAL NOT NULL,
  device TEXT NOT NULL,
  device_id TEXT NOT NULL,
  timestamp BIGINT NOT NULL,
  FOREIGN KEY (user_id)
     REFERENCES users(id) ON DELETE CASCADE,
  UNIQUE (user_id, document)
);