Get your library syncing in about 10 minutes.
You will want:
- Your ebook folder path on the Docker host
- Your Audiobookshelf URL, API token, and library ID if you want ABS sync or audiobook matching
Optional for later:
- KOSync credentials
- Grimmory credentials
- Storyteller credentials
- Open Audiobookshelf.
- Go to Settings -> Users -> Your user.
- Click Generate API Token.
- Copy the token.
- Open your audiobook library in Audiobookshelf.
- Look at the URL.
- Copy the part after
/library/.
mkdir ~/abs-kosync
cd ~/abs-kosyncUse this compose file:
services:
abs-kosync:
container_name: abs_kosync
image: ghcr.io/cporcellijr/abs-kosync-bridge:latest
restart: unless-stopped
ports:
- "8080:5757"
# - "5758:5758" # Optional: expose the sync-only port when using KOSYNC_PORT=5758
environment:
- TZ=America/New_York
- LOG_LEVEL=INFO
# - KOSYNC_PORT=5758 # Optional: enable split-port mode
# Configure ABS, KOSync, Grimmory, Storyteller, and other services in the Web UI.
volumes:
- ./data:/data
- /path/to/ebooks:/books
# - /path/to/storyteller/library:/storyteller_library # Optional: Forge output
# - /path/to/storyteller/assets:/storyteller/assets # Optional: Storyteller transcript ingestReplace:
/path/to/ebookswith your real EPUB folder- The optional Storyteller paths if you plan to use Forge or transcript ingest
docker compose up -dCheck the logs:
docker compose logs -fPress Ctrl+C when you are done watching.
Open http://localhost:8080 and go to Settings.
Add your:
- Audiobookshelf Server URL
- Audiobookshelf API Token
- ABS Library ID
Then add any optional services you want:
- KOSync for KOReader sync
- Grimmory for ebook sync and Grimmory audiobook matching
- Storyteller for read-along links and transcript ingest
Use the Test button on any service section if you want to check a service before saving.
If you are setting up an ebook-only or maintenance-focused install, you can enter disabled in the ABS URL or token field instead of connecting Audiobookshelf.
If you mounted Storyteller assets, set Storyteller Assets Path to /storyteller and not /storyteller/assets.
Save settings and wait a moment for the app to come back.
You now have two easy options:
- Open Suggestions.
- Click Scan Library.
- Review the likely matches.
- Click Add to Queue for the good ones.
- Click Process All.
- Open Add Book.
- Pick an ABS audiobook, a Grimmory audiobook, or leave audio on None / Skip for an ebook-only link.
- Optionally pick a Storyteller title.
- Pick the standard ebook.
- Click Create Mapping.
You should now be able to sync between:
- Audiobookshelf
- KOReader / KOSync
- Grimmory
- Storyteller
- Hardcover, if enabled
The normal background sync runs every 5 minutes by default, and instant sync can react faster when supported.
docker compose logsLook for path, permission, or connection errors.
- Check that port
8080is free. - Run
docker compose ps. - Try
http://YOUR_SERVER_IP:8080from another device on your LAN.
- Open Settings.
- Click Refresh Grimmory Cache.
- Run Full Refresh from the Suggestions page if you changed a lot of books.
Once the basics work, try:
- Suggestions for bulk review and queueing
- Forge for Storyteller processing
- Storyteller Backfill in Settings
- Bridge Sync plugin + Grimmory shelf settings if you want plugin-managed KOReader collections
- Split-port mode if you want to expose only the sync endpoint