Deploy Papra
Document archiving with persistent SQLite metadata and file storage.
Just deployed
/app/app-data
Deploy and Host Papra on Railway
Papra is an open-source document management and archiving application for storing, organizing, searching, tagging, and sharing personal or team documents. It combines a browser interface, SQLite metadata, filesystem-backed document storage, and background tasks in one compact self-hosted service.
About Hosting Papra
This template runs Papra 26.6.1 from the official digest-pinned rootless image.
Railway provides the public HTTPS endpoint, a database-aware health check, and
one persistent volume for the SQLite database, documents, and optional
configuration. Migrations and the web/worker processes run from Papra's
documented container entrypoint. Every mandatory setting is prefilled:
APP_BASE_URL follows the generated Railway domain and AUTH_SECRET is created
fresh for each deployment. No external credentials or manual variable input
are required. The service is intended for one replica because Railway volumes
cannot be shared across replicas.
Common Use Cases
- Archive receipts, warranties, invoices, statements, and reference documents.
- Organize a private household or small-team document library.
- Search and retrieve uploaded documents through a self-hosted web interface.
Dependencies for Papra Hosting
- Papra
26.6.1, pinned to the official rootless GHCR image digest. - One Railway persistent volume mounted at
/app/app-data.
Deployment Dependencies
- Papra Docker deployment guide
- Papra configuration reference
- Papra 26.6.1 release
- Railway volume constraints
Implementation Details
Papra listens on port 1221. Railway routes the public domain to that port and
checks GET /api/health, which executes a database query before returning HTTP
200. APP_BASE_URL=https://${{RAILWAY_PUBLIC_DOMAIN}} keeps authentication,
CSRF origin validation, and generated links aligned with Railway HTTPS.
AUTH_SECRET=${{secret(96, "abcdef0123456789")}} creates the 48 random bytes
recommended by upstream without exposing or reusing a source-project secret.
The official container runs pnpm start:with-migrations, applying all pending
SQLite migrations before starting the combined web and background-worker
process. Its built-in paths are ./app-data/db/db.sqlite and
./app-data/documents, both captured by the /app/app-data volume. Railway
mounts volumes as root, so the documented RAILWAY_RUN_UID=0 compatibility
setting is required even though the image itself is built from Papra's
rootless variant.
Back up the complete /app/app-data volume before upgrading. Review the Papra
release notes, test the new immutable image digest against a restored copy, and
verify /api/health, sign-in, document upload/download, and persistence. Roll
back to the prior image digest together with the matching volume backup if a
database migration is incompatible.
This community template is maintained independently and does not imply affiliation with or endorsement by Papra.
Why Deploy Papra 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 Papra 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