Deploy Reading Tracker (Bookplate-based)
Self-hosted reading tracker and bookshelf with Open Library lookup
bookplate
Just deployed
/data/uploads
Postgres
Just deployed
/var/lib/postgresql/data
Deploy and Host self hosted Reading Tracker (based on Bookplate) on Railway
This template deploys a Bookplate-based reading tracker: the unmodified upstream image plus a start script, with an app and Postgres 17. It is independent packaging, not the Bookplate project and not endorsed by it.
About Hosting Bookplate-based Reading Tracker open-source software on Railway (self hosted Bookplate-based Reading Tracker template)
On Railway your library lives on a server you control, with your data, sign-in password and export backups.
Why Deploy Bookplate-based Reading Tracker, the self-hosted reading tracker on Railway (Railway Free Trial)
Goodreads is free, but your log, notes and ratings sit on a service you don't control.
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 Bookplate-based Reading Tracker 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.
Railway vs Other Hosting Providers and VPS for Bookplate-based Reading Tracker self hosting
Railway runs the app and Postgres 17 as managed services; a VPS leaves setup to you.
| Provider | What You Get with Railway | What You Get with the Other Provider |
|---|---|---|
| DigitalOcean | A template with generated secrets, a public domain and a volume for uploads. | A Droplet you control, where you install Docker and the compose file yourself. |
| AWS | One template deploy, owner account created on first boot. | More building blocks to configure. |
| Hetzner | The same template flow, with no sizing or OS upkeep. | You manage Compose, proxy and backups. |
Pick Railway for speed, or a VPS for control.
Common Use Cases for hosted Bookplate-based Reading Tracker
- Private reading log: Record books read, reading or wanted, with a 1 to 5 star rating and finish date.
- Notes per book: Write markdown notes with screenshots or quotes inline.
- Vocabulary from your reading: Save words you learn, look them up in Wiktionary inside the app, and tag each with its source book.
- Adding books without an API key: Search Open Library to autofill title, author, page count and cover without typing details.
- Yearly statistics: Review books finished and ratings by year or genre.
Dependencies for Bookplate-based Reading Tracker Docker hosted on Railway
The template runs the app and Postgres 17, with a volume for covers and note images.
Deployment Dependencies for Managed Bookplate-based Reading Tracker Service (app plus Postgres 17)
The app listens on port 8080, mounts a volume at /data/uploads, and uses /api/health for its health check.
Implementation Details for Bookplate-based Reading Tracker (unmodified Bookplate 4.4.3 image plus a Railway start script)
The app image is ghcr.io/onepush-dev/bookplate:4.4.3-r1, which wraps the unmodified upstream Bookplate 4.4.3 image with a start script.
Railway generates or references every variable below, so no manual input is needed. BOOKPLATE_OWNER_PASSWORD only sets the owner account on first boot.
| Variable | Service | Purpose |
|---|---|---|
| DATABASE_URL | bookplate | Postgres connection string, built from the Postgres service (private network). |
| AUTH_SECRET | bookplate | Secret that signs session cookies; generated per deploy. |
| BOOKPLATE_OWNER_PASSWORD | bookplate | Password for the owner account admin@example.com, generated per deploy; the account is created on first start. |
| PUBLIC_URL | bookplate | Public https address of the app (the Railway domain); used for cookies and email links. |
| POSTGRES_PASSWORD | Postgres | Password of the bundled Postgres database, generated per deploy. |
| PGDATA | Postgres | Data directory, kept in a subfolder of the Postgres volume. |
How does Bookplate-based Reading Tracker compare against other tools
Reading tracker vs Goodreads (Goodreads Alternative)
- Where it differs: Goodreads is a hosted social community; this template keeps your library on your server.
- Where Goodreads wins: It has a large catalogue, many reviews and a mature mobile app; Bookplate is a smaller personal tool.
- Data ownership: Bookplate exports the library as a zip of JSON, markdown and images.
Reading tracker vs StoryGraph (StoryGraph Alternative)
- Where it differs: StoryGraph is hosted and focuses on statistics and recommendations; Bookplate focuses on notes and images.
- Where StoryGraph wins: Its recommendations and statistics are more advanced.
- Vocabulary: Bookplate includes a vocabulary registry where words can be looked up in Wiktionary and linked to a book.
Reading tracker vs Calibre-Web (Calibre-Web Alternative)
- Different purpose: Calibre-Web is a self-hosted ebook server. Bookplate is a reading log and does not serve book files.
- Where Calibre-Web wins: For reading ebooks in a browser or managing a large file collection, it is stronger.
- Using both: Some readers keep files in Calibre-Web and the log in Bookplate.
Bookplate with Docker Compose vs Railway (Docker Compose Alternative)
- Same software: Both run the unmodified Bookplate 4.4.3 app with Postgres; the template adds a start script.
- Railway advantage: No compose file or reverse proxy to build.
- Docker Compose advantage: On your own machine you control host, update timing and backups.
How to use Bookplate-based Reading Tracker on Railway?
After deploying, follow these steps.
- Open the public URL shown on the app service in Railway. It is built from your Railway domain and PUBLIC_URL.
- Sign in as admin@example.com with the password from BOOKPLATE_OWNER_PASSWORD, which you can read in the Variables tab of the app service.
- Open Settings and change the email address and password.
- Add a first book using the Open Library search, which needs no API key. Picking a result fills in the title, author and page count, and fetches the cover.
- Open Settings, then Import and export, and choose Export library to download the backup zip. Keep a copy safe.
To confirm the app is healthy, request the health endpoint:
curl https://your-domain/api/health
Registration is closed by default, so only the owner can sign in.
How to self host Bookplate-based Reading Tracker on other VPS Services (Bookplate-based Reading Tracker self hosting guide)
You can run the tracker on a VPS with the upstream Compose setup and your own HTTPS.
Clone the Repository
Download the two files from the pinned v4.4.3 tag.
mkdir bookplate && cd bookplate
curl -fsSLO https://raw.githubusercontent.com/LeoPhh/bookplate/v4.4.3/docker-compose.yml
curl -fsSL https://raw.githubusercontent.com/LeoPhh/bookplate/v4.4.3/.env.example -o .env
Install Dependencies
The only host requirement is Docker with the Compose plugin.
Configure Environment Variables
Open .env and fill in three values: AUTH_SECRET, DB_PASSWORD and PUBLIC_URL (for example https://your-domain). Generate the two secrets with:
openssl rand -base64 32 # AUTH_SECRET
openssl rand -hex 24 # DB_PASSWORD
To pin a release, also set BOOKPLATE_VERSION=4.4.3.
Start the Bookplate-based Reading Tracker Application
Start the stack, then open PUBLIC_URL. On stock upstream, the first visit creates the owner account, so do this before exposing the server.
docker compose up -d
The app listens on port 3000. Put a reverse proxy such as Caddy in front of it for HTTPS. Railway handles the proxy, certificate and domain for you.
Pricing and License of Bookplate-based Reading Tracker (Bookplate-based Reading Tracker pricing)
The code is Apache-2.0 licensed, so you can run, change and host it yourself at no licence cost.
Bookplate-based Reading Tracker hosted vs self hosted comparison (Pricing, features, costs, and more)
Bookplate is free software and no hosted plan is described upstream, so the choice is who runs the server.
Monthly cost of self hosting Bookplate-based Reading Tracker on Railway
Railway bills by usage, so cost depends on RAM, CPU and volume size; note images grow storage.
System Requirements for Hosting Bookplate-based Reading Tracker on a VPS
A VPS needs memory and disk for both containers plus Docker.
Frequently Asked Questions (FAQs)
How do I sign in to my Bookplate-based Reading Tracker?
Sign in at your public URL as admin@example.com with the BOOKPLATE_OWNER_PASSWORD value, then change them in Settings.
Can strangers sign up on my server?
No. The template sets REGISTRATION=closed, so only the owner account exists. Set REGISTRATION=open only if you want other people to have separate libraries.
How do I back up my library?
Use Settings, Import and export, Export library for a zip of books, notes, images and vocabulary. For a full backup, also copy Postgres and /data/uploads.
Is email included in this template?
No. The template does not set the optional SMTP_HOST or related upstream SMTP variables, so password reset by email is off until you add them.
Why does this template use a neutral name?
Upstream TRADEMARK.md says the code is Apache-2.0, but the name and logo are not licensed for hosted or modified versions offered as Bookplate. This template is a reading tracker based on Bookplate, an independent community packaging, not the Bookplate project and not endorsed by it. The template therefore uses a neutral name and a neutral icon.
Can friends share one server?
Not in this template as deployed. Upstream offers optional SOCIAL=true and REGISTRATION=open, which are not enabled here. Enabling them makes readers on your server visible to each other, so mention it in your privacy policy.
Template Content
Postgres
postgres:17-alpine