Railway

Deploy Papra

Document archiving with persistent SQLite metadata and file storage.

Deploy Papra

/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

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

More templates in this category

View Template
Garage S3 Storage
Ultra-light S3 server: fast, open-source, plug-and-play.

PROJETOS
7
View Template
NEW
Redis
Self Host Latest Redis with Railway

Arloodots
0
View Template
Postgres Backup to Cloudflare R2 (S3-Compatible)
Automated PostgreSQL backups to S3-compatible storage with encryption

Artour
7