---
title: "Deploy Paperless-ngx (Self-Hosted Document Manager)"
description: "Unofficial template: scan, OCR, tag and search documents with Paperless-ngx"
category: "Other"
url: https://railway.com/deploy/paperless-ngx-self-1
---

# Deploy Paperless-ngx (Self-Hosted Document Manager)

Unofficial template: scan, OCR, tag and search documents with Paperless-ngx

**[Deploy Paperless-ngx (Self-Hosted Document Manager) on Railway](https://railway.com/template/paperless-ngx-self-1)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/paperless-ngx-self-1/manifest.json

- **Creator:** Rebusque Labs
- **Category:** Other
- **Total deploys:** 1

## Template content

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

- **Image:** ghcr.io/railwayapp-templates/postgres-ssl:18

### Paperless-ngx

- **Image:** ghcr.io/paperless-ngx/paperless-ngx:3.4.2
- **Health check:** /accounts/login/
- **Public domain:** Yes

### Redis https://cdn.sanity.io/images/sy1jschh/production/0ce0bfdcfbdbf69662b1116671f97c2dd788b655-157x157.svg

- **Image:** redis:8.2
- **Start command:** `/bin/sh -c "rm -rf $RAILWAY_VOLUME_MOUNT_PATH/lost+found/ && exec docker-entrypoint.sh redis-server --requirepass $REDIS_PASSWORD --save 60 1 --dir $RAILWAY_VOLUME_MOUNT_PATH"`

## Documentation

# Deploy and Host Paperless-ngx (Self-Hosted Document Manager) with Railway

Paperless-ngx is an open-source document management system. It scans, OCRs, indexes and tags your paperwork (bills, receipts, letters, contracts) so you can search the full text and stop keeping paper. This template runs the official Paperless-ngx image with Postgres and Redis, persistent storage and a working Railway healthcheck.

> **Unofficial template, not affiliated with or endorsed by the Paperless-ngx project.** Community template by Rebusque Labs. "Paperless-ngx" is used only to describe the software this template deploys.

## About Hosting Paperless-ngx (Self-Hosted Document Manager)

Hosting Paperless-ngx needs three pieces: the web app (Django, plus a Celery task worker and a document consumer in the same container), a Postgres database for metadata, and Redis as the task queue. Documents, thumbnails and the search index must live on persistent storage or they vanish on redeploy. Railway allows one volume per service, so this template mounts a single volume at `/data` and points all three Paperless storage paths at it. It also allow-lists Railway's healthcheck host, so deploys are gated on the app really answering instead of failing with HTTP 400.

## Common Use Cases

- Go paperless at home: scan mail and receipts, find any of them by full-text search
- Small-office document archive with users, permissions, tags and saved views
- Email (IMAP) ingestion of invoices and statements into a searchable archive
- Auto-tagging and filing of documents with matching rules and the built-in classifier

## Dependencies for Paperless-ngx (Self-Hosted Document Manager) Hosting

- Paperless-ngx (official image `ghcr.io/paperless-ngx/paperless-ngx`, pinned to 3.4.2)
- Railway Postgres
- Railway Redis

### Deployment Dependencies

- Paperless-ngx docs: https://docs.paperless-ngx.com/
- Configuration reference: https://docs.paperless-ngx.com/configuration/
- Source and license (GPL-3.0): https://github.com/paperless-ngx/paperless-ngx

### Implementation Details

- Healthcheck: `/accounts/login/`, 300 s timeout. `PAPERLESS_ALLOWED_HOSTS=healthcheck.railway.app` lets Railway's healthcheck through (Django otherwise answers 400).
- One volume at `/data` holds `data/`, `media/` and `consume/`.
- Secrets (`PAPERLESS_SECRET_KEY`, the first admin password) are generated per deploy; there are no default credentials.
- Database and Redis connect over Railway private networking with reference variables.
- After the first deploy: open the generated domain, log in as `admin` with `PAPERLESS_ADMIN_PASSWORD` from the Paperless-ngx service's Variables tab, then change the password. If you add a custom domain, update `PAPERLESS_URL`.
- Sizing: in our local test the idle stack used about 0.65 GB RAM. OCR of large scans spikes CPU and RAM. Set `PAPERLESS_TASK_WORKERS=1` and `PAPERLESS_WEBSERVER_WORKERS=1` to keep it small.
- Plan limits: volumes are capped at 0.5 GB per service on Trial/Free and 5 GB on Hobby. Railway disables outbound SMTP below the Pro plan, so password-reset and notification emails need Pro (or stay off).

### Why Deploy Paperless-ngx (Self-Hosted Document Manager) 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 Paperless-ngx (Self-Hosted Document Manager) 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.

## Credits and license

Paperless-ngx © the Paperless-ngx contributors, licensed under GPL-3.0 (https://github.com/paperless-ngx/paperless-ngx/blob/main/LICENSE). This template does not modify or redistribute Paperless-ngx source; it references the project's official container image. Template configuration © 2026 Rebusque Labs.

## 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/paperless-ngx-self-1
