more on readme
This commit is contained in:
parent
0f275ca4cf
commit
43b79f92f6
1 changed files with 41 additions and 7 deletions
48
README.md
48
README.md
|
@ -1,14 +1,48 @@
|
|||
# KOreader Sync Server
|
||||
This is a KOreader sync server, implemented in Rust. It uses the crates *axum*, *redis*, *serde* and *serde_json*.
|
||||
This is a KOreader sync server, implemented in Rust. It uses the crates *axum*, *sqlx*, *serde* and *serde_json*.
|
||||
|
||||
## Requirements
|
||||
- Rust toolchain (≥ 1.63) for compilation
|
||||
- A running Redis server
|
||||
- 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. You can also use nginx as a reverse proxy, so that the sync server listens on port 443.
|
||||
Just compile it with `cargo build --release`. You can then copy the executable for example to `/usr/local/bin/`.
|
||||
|
||||
## Todo
|
||||
- Test, if it really works, and if it works reliably. Feedback is very welcome!
|
||||
- Make it more configurable
|
||||
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 (with psql) and create the database tables:
|
||||
```sql
|
||||
CREATE TABLE users (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
username TEXT NOT NULL,
|
||||
password TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE progresses (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT,
|
||||
document TEXT UNIQUE 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)
|
||||
);
|
||||
```
|
Loading…
Reference in a new issue