---
title: "Deploy bookorbit"
description: "Self-hosted digital library and reader with Kobo/OPDS sync"
category: "Other"
url: https://railway.com/deploy/bookorbit
---

# Deploy bookorbit

Self-hosted digital library and reader with Kobo/OPDS sync

**[Deploy bookorbit on Railway](https://railway.com/template/bookorbit)**

- **Creator:** kmaki's Projects
- **Category:** Other
- **Total deploys:** 7

## Template content

### Postgres https://devicons.railway.app/i/postgresql.svg

- **Image:** pgvector/pgvector:pg18

### app

- **Image:** ghcr.io/bookorbit/bookorbit:1.8.0
- **Public domain:** Yes

## Documentation

# Deploy and Host BookOrbit on Railway

## About Hosting BookOrbit on Railway
BookOrbit runs on Railway as a Docker-image based self-hosted digital library platform. The template uses the official BookOrbit GHCR image, a pgvector-enabled PostgreSQL service, public HTTPS routing, and persistent storage for app data and database files.

## Tech Stack
- BookOrbit web app and API
- Node.js / NestJS backend
- Vue frontend served by the app container
- PostgreSQL with pgvector
- Railway public HTTPS domain and private service networking
- Docker image deployment from GHCR and Docker Hub

## Why Deploy BookOrbit on Railway
Railway provides one-click Docker deployments, managed private networking between services, public HTTPS domains, automatic restarts, and persistent volumes. This makes BookOrbit easy to host without managing servers while still keeping your library and reading data under your control.

## Common Use Cases
- Host a private ebook, PDF, audiobook, and comic library
- Read books directly in the browser
- Track reading progress and library statistics
- Sync with Kobo, KOReader, and OPDS-compatible readers
- Manage metadata, collections, smart shelves, and multi-user access
- Use Send-to-Kindle and email features after configuring SMTP in the admin UI

## Deployment Notes
The app listens on port 3000 and requires `PORT=3000` for Railway routing. BookOrbit uses PostgreSQL with the pgvector extension, so the database service uses `pgvector/pgvector:pg18` rather than a plain PostgreSQL image. The app persists runtime files, covers, uploads, cache, and Book Dock data at `/data`; PostgreSQL persists its database files at `/var/lib/postgresql/data`.

On first launch, open the generated Railway domain and complete setup with `SETUP_BOOTSTRAP_TOKEN`. The token is generated as a template variable and is also required by BookOrbit's initial `/auth/setup` endpoint. `APP_URL` and `CLIENT_URL` are derived from the app public domain. No custom start command is required; the upstream image entrypoint handles migrations, permission checks, and server startup.

## Dependencies for BookOrbit on Railway
BookOrbit depends on a pgvector-enabled PostgreSQL database over Railway private networking. The app service connects to the Postgres service through template variable references and stores app-managed files on its mounted `/data` volume.

### Deployment Dependencies

| Service | Image | Port | Volume |
|---------|-------|------|--------|
| app | ghcr.io/bookorbit/bookorbit:1.8.0 | 3000 | /data |
| Postgres | pgvector/pgvector:pg18 | 5432 | /var/lib/postgresql/data |

## Similar templates

- [Rocky Linux](https://railway.com/deploy/rocky-linux) — Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀
- [Foundry Virtual Tabletop](https://railway.com/deploy/X5tR6G) — A Self-Hosted & Modern Roleplaying Platform
- [Letta Code Remote](https://railway.com/deploy/letta-code-remote) — Run a Letta Code agent 24/7. No inbound ports, just deploy.

Open this page in a browser: https://railway.com/deploy/bookorbit
