Compare commits
2 commits
f0af0ff4a7
...
43b79f92f6
Author | SHA1 | Date | |
---|---|---|---|
43b79f92f6 | |||
0f275ca4cf |
2 changed files with 42 additions and 7 deletions
48
README.md
48
README.md
|
@ -1,14 +1,48 @@
|
||||||
# KOreader Sync Server
|
# 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
|
## Requirements
|
||||||
- Rust toolchain (≥ 1.63) for compilation
|
- Rust toolchain for compilation
|
||||||
- A running Redis server
|
- A running PostgreSQL server
|
||||||
- Nginx (or Apache) webserver as a reverse proxy, since kosyncrs only listens locally and uses HTTP.
|
- Nginx (or Apache) webserver as a reverse proxy, since kosyncrs only listens locally and uses HTTP.
|
||||||
|
|
||||||
## Installation
|
## 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
|
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.
|
||||||
- Test, if it really works, and if it works reliably. Feedback is very welcome!
|
|
||||||
- Make it more configurable
|
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)
|
||||||
|
);
|
||||||
|
```
|
|
@ -11,6 +11,7 @@ User=myuser
|
||||||
Group=users
|
Group=users
|
||||||
WorkingDirectory=/home/myuser
|
WorkingDirectory=/home/myuser
|
||||||
ExecStart=/usr/local/bin/kosyncrs
|
ExecStart=/usr/local/bin/kosyncrs
|
||||||
|
Environment="PG_URL=postgresql://kosync:password@localhost/kosync"
|
||||||
Restart=always
|
Restart=always
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue