A self-hostable sync server for KOReader. Keeps reading progress in sync across all your devices.

Requirements: Docker. That's it.
docker run -d -p 3000:3000 -v koreader-data:/app/data ghcr.io/nperez0111/koreader-sync:latest
The server is now running at http://localhost:3000. The SQLite database is persisted in the koreader-data volume.
For a more permanent setup:
services:
kosync:
image: ghcr.io/nperez0111/koreader-sync:latest
container_name: kosync
ports:
- 3000:3000
restart: unless-stopped
volumes:
- data:/app/data
volumes:
data:Save as docker-compose.yml and run docker compose up -d.
Note: Registration is open by default. Set DISABLE_USER_REGISTRATION=true to block new accounts after you've registered.