Paperless-ngx
v1.0.0Document management system that turns scanned and uploaded documents into a searchable archive.
x-arcane:
icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/paperless-ngx.svg
urls:
- https://docs.paperless-ngx.com/
- https://github.com/paperless-ngx/paperless-ngx
services:
broker:
image: docker.io/library/redis:8
restart: unless-stopped
volumes:
- redis-data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
labels:
com.getarcaneapp.arcane.icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/redis.svg
db:
image: docker.io/library/postgres:18
restart: unless-stopped
volumes:
- postgres-data:/var/lib/postgresql
environment:
POSTGRES_DB: ${POSTGRES_DB:-paperless}
POSTGRES_USER: ${POSTGRES_USER:-paperless}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 10s
timeout: 5s
retries: 5
labels:
com.getarcaneapp.arcane.icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/postgresql.svg
webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
restart: unless-stopped
depends_on:
- db
- broker
ports:
- "${APP_PORT:-8000}:8000"
environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBHOST: db
PAPERLESS_DBNAME: ${POSTGRES_DB:-paperless}
PAPERLESS_DBUSER: ${POSTGRES_USER:-paperless}
PAPERLESS_DBPASS: ${POSTGRES_PASSWORD}
PAPERLESS_SECRET_KEY: ${PAPERLESS_SECRET_KEY}
PAPERLESS_URL: ${PAPERLESS_URL}
PAPERLESS_TIME_ZONE: ${PAPERLESS_TIME_ZONE:-Etc/UTC}
PAPERLESS_OCR_LANGUAGE: ${PAPERLESS_OCR_LANGUAGE:-eng}
volumes:
- data:/usr/src/paperless/data
- media:/usr/src/paperless/media
- ./export:/usr/src/paperless/export
- ./consume:/usr/src/paperless/consume
labels:
com.getarcaneapp.arcane.icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/paperless-ngx.svg
volumes:
data:
media:
postgres-data:
redis-data:
APP_PORT=8000
POSTGRES_DB=paperless
POSTGRES_USER=paperless
POSTGRES_PASSWORD=change-this-paperless-db-password
PAPERLESS_SECRET_KEY=change-this-to-a-long-random-secret
PAPERLESS_URL=http://localhost:8000
PAPERLESS_TIME_ZONE=Etc/UTC
PAPERLESS_OCR_LANGUAGE=eng
README
Paperless-ngx stores documents in Docker volumes and watches the local consume folder for imports.
Change PAPERLESS_SECRET_KEY before using this with real documents. Set PAPERLESS_URL to the externally reachable URL when running behind a reverse proxy.