
Deploy grimmory
Grimmory is a self-hosted digital library for comics and books
Deploy and Host Grimmory on Railway
About Hosting
Grimmory is a self-hosted digital library and book manager for EPUB, PDF, comics, and audiobooks. It is the community successor to BookLore and keeps the same general runtime shape: one web application plus one MariaDB database on private networking.
This Railway template mirrors the working grimmory deployment closely, but fixes the database side for Railway portability. The app service runs from the official grimmory/grimmory:v2.3.0 image on port 6060, uses GET /api/v1/healthcheck for health checks, and stores runtime data on a persistent volume mounted at /app/data. The database runs as a private mariadb:11.4 sidecar with its data volume mounted at /var/lib/mysql.
Use template_env_grimmory.json for the app service variables and template_env_mariadb.json for the database bootstrap variables.
Why Deploy
- Run a private, self-hosted digital library without depending on third-party SaaS.
- Get smart shelves, metadata lookup, a built-in reader, and multi-user support in one stack.
- Keep database traffic on Railway private networking while exposing only the web app publicly.
- Start from the official Grimmory image with a pinned release tag instead of a moving
latest. - Leave room to add extra library storage later with optional
/booksor/bookdropmounts.
Common Use Cases
- Personal ebook, PDF, and comic library with browser reading and progress sync.
- Family or small-team shared library with separate accounts and reading state.
- Kobo, KOReader, and OPDS-friendly library server hosted on Railway.
- Migration path for existing BookLore users who want the Grimmory fork.
Dependencies for Deployment
Deployment Dependencies
| Dependency | Details |
|---|---|
| App Image | grimmory/grimmory:v2.3.0 |
| Database Image | mariadb:11.4 |
| App Port | 6060 |
| Database Port | 3306 |
| Health Check | GET /api/v1/healthcheck |
| Persistent Volumes | /app/data on the app service, /var/lib/mysql on the database service |
| Required App Vars | PORT, BOOKLORE_PORT, DATABASE_URL, DATABASE_USERNAME, DATABASE_PASSWORD |
| Recommended App Vars | TZ, USER_ID, GROUP_ID, DISK_TYPE, SWAGGER_ENABLED, FORCE_DISABLE_OIDC |
| Required Database Vars | MYSQL_DATABASE, MYSQL_USER, MYSQL_PASSWORD, MYSQL_ROOT_PASSWORD |
| Public Access | Railway public domain routed to PORT=6060 |
| Private Networking | DATABASE_URL points at ${{mariadb.RAILWAY_PRIVATE_DOMAIN}}:3306 |
Template Content
mariadb
mariadb:11.4grimmory
grimmory/grimmory:v2.3.0