Deploy Kavita
Self-hosted Kavita reader for manga, comics and ebooks, admin set at deploy
Kavita
Just deployed
/data
Deploy and Host Kavita on Railway
Kavita is an open-source, self-hosted reading server for manga, comics, webtoons, ebooks and PDFs. It scans your folders into a library with series, covers and metadata, and lets you read in the browser or in OPDS apps. Progress, collections, reading lists and multiple users with per-library access are built in.
About Hosting Kavita
Kavita is one .NET service that keeps its settings and SQLite database in a config folder and reads books from library folders on disk. This template runs the official jvmilazz0/kavita image, pinned by version and digest, with one Railway volume at /data: /data/config holds the database, covers and logs, and /data/library holds your books. Upstream, the first person to open a new server registers as admin. This template creates that admin at first start while Kavita still listens on localhost only, so the public URL can't be claimed. Books go onto the volume with railway ssh.
Common Use Cases
- Read your manga, comics and webtoons from any browser, with progress synced across devices
- Host an ebook and PDF library for yourself, family or friends, each with their own account and library access
- Serve your collection to OPDS reader apps (KOReader, Panels, Chunky and others)
Dependencies for Kavita Hosting
- The official Kavita Docker image (
jvmilazz0/kavita, v0.9.1.4) - A Railway volume mounted at
/datafor the database, settings and library
Deployment Dependencies
- Kavita: https://github.com/Kareadita/Kavita
- Release notes (v0.9.1.4): https://github.com/Kareadita/Kavita/releases/tag/v0.9.1.4
- Installation docs: https://wiki.kavitareader.com/installation/docker/
- Docker image: https://hub.docker.com/r/jvmilazz0/kavita
Implementation Details
First login. Open the service's public URL and sign in as KAVITA_ADMIN_USERNAME (default admin). The password is the generated KAVITA_ADMIN_PASSWORD: open the Kavita service, then Variables. You can change it in your account settings after the first login; the variable is only read on the very first start.
Adding books. Kavita has no book upload in its web UI, so put files on the volume with the Railway CLI. One folder per series works best:
railway link # pick this project and the Kavita service
railway ssh -- mkdir -p "/data/library/Books/My Book"
cat "My Book.epub" | railway ssh -- dd "of=/data/library/Books/My Book/My Book.epub" status=none
# or download straight onto the volume
railway ssh -- curl -fL --create-dirs -o "/data/library/Manga/One Series/Vol 1.cbz" "https://example.com/vol1.cbz"
Then, in Kavita, go to Settings → Libraries → Add Library, pick a type, add the folder (/data/library/Manga, /data/library/Comics or /data/library/Books are created for you) and scan. Folder watching picks up later additions.
Notes. Kavita listens on Railway's PORT; the start script writes it into Kavita's settings on every boot. Kavita's own Docker image ignores those settings, so the script starts Kavita without its container flag, and the update banner may show the non-Docker update steps. To upgrade, change the image tag to a newer Kavita release; your data stays on the volume.
Why Deploy Kavita on Railway?
Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.
By deploying Kavita on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.
Template Content
Kavita
jvmilazz0/kavita:0.9.1