One-click deploy of BookLore – a self-hosted book and audiobook manager with metadata fetching, reading progress tracking, and library organisation.
- BookLore – latest version, auto-updates with
:latesttag - MariaDB – persistent database for your library metadata
- Persistent volume – your books and app data survive redeploys
After deploying, open your BookLore URL and create an account. You'll be prompted to set up your first library.
When creating a library, you'll be asked to add book directories:
- Click Add Book Folder → Browse for directories
- Select
/books– this is your main library folder (persistent, volume-backed) - Optionally add
/bookdrop– a watched inbox that auto-imports new files - Click Select Directories → Create Library
- Via the UI – use BookLore's built-in upload to add books directly
- Via Bookdrop – any files placed in
/bookdropare automatically detected and imported into your library
| Service | Image | Purpose |
|---|---|---|
| BookLore | booklore/booklore:latest |
App server (port 6060) |
| MariaDB | mariadb:latest |
Database |
Railway supports one volume per service. This template mounts a single volume at /booklore-data and uses bind mounts to map subdirectories:
| Container Path | Backed By | Contents |
|---|---|---|
/app/data |
/booklore-data/app-data |
App config, covers, icons |
/books |
/booklore-data/books |
Your book library |
/bookdrop |
Local (non-persistent) | Temporary import inbox |
/bookdropis intentionally non-persistent – it's a transient inbox. Files are moved to/booksafter import.
These are pre-configured in the template:
| Variable | Default | Description |
|---|---|---|
TZ |
Etc/UTC |
Timezone |
DISK_TYPE |
LOCAL |
Storage type |
DATABASE_URL |
Auto-configured | MariaDB connection string |
DATABASE_USERNAME |
booklore |
DB user |
DATABASE_PASSWORD |
Auto-generated | DB password |