
Deploy Paperless-ng on Your Own Server
Paperless is an application by Daniel Quinn and others that indexes your scanned documents and allows you to easily search for documents and store metadata alongside your documents.
Want to deploy Paperless-ng on your server faster? Try Senate with one-command setup, automatic HTTPS and monitoring.
What is Paperless-ng?
Paperless is an application by Daniel Quinn and others that indexes your scanned documents and allows you to easily search for documents and store metadata alongside your documents.
Self-Host Paperless-ng
Follow these steps to deploy on your own server.
Install Docker
Skip this step if Docker is already installed on your server.
curl -fsSL https://get.docker.com | sh
Configure
Customize the settings below. Defaults work for most cases.
General
Deploy
Copy the configuration and run it on your server.
services:
paperless_ng:
image: jonaswinkler/paperless-ng:1.4.1
environment:
APP_URL: http://paperless_ng.your-domain.com
PAPERLESS_ADMIN_MAIL: root@localhost
PAPERLESS_ADMIN_PASSWORD: 7fcfba5bac
PAPERLESS_ADMIN_USER: admin
PAPERLESS_ALLOWED_HOSTS: paperless_ng.your-domain.com
PAPERLESS_CONSUMER_DELETE_DUPLICATES: "false"
PAPERLESS_CONSUMER_POLLING: "0"
PAPERLESS_CONSUMER_RECURSIVE: "false"
PAPERLESS_CONSUMER_SUBDIRS_AS_TAGS: "false"
PAPERLESS_CONVERT_MEMORY_LIMIT: "0"
PAPERLESS_CONVERT_TMPDIR: ""
PAPERLESS_COOKIE_PREFIX: paperless_ng
PAPERLESS_CORS_ALLOWED_HOSTS: http://paperless_ng.your-domain.com
PAPERLESS_DBHOST: paperless_ng-db
PAPERLESS_DBNAME: paperless
PAPERLESS_DBPASS: f325aa520e718dcc54dfb275aae97231a0f88f7b67302c63b8ecfdf9d96a7a08
PAPERLESS_DBUSER: paperless
PAPERLESS_FILENAME_DATE_ORDER: ""
PAPERLESS_FILENAME_FORMAT: ""
PAPERLESS_IGNORE_DATES: ""
PAPERLESS_LOGROTATE_MAX_BACKUPS: "20"
PAPERLESS_LOGROTATE_MAX_SIZE: ""
PAPERLESS_OCR_CLEAN: clean
PAPERLESS_OCR_DESKEW: "true"
PAPERLESS_OCR_IMAGE_DPI: ""
PAPERLESS_OCR_LANGUAGE: eng
PAPERLESS_OCR_LANGUAGES: ""
PAPERLESS_OCR_MODE: skip
PAPERLESS_OCR_OUTPUT_TYPE: pdfa
PAPERLESS_OCR_PAGES: "0"
PAPERLESS_OCR_ROTATE_PAGES: "true"
PAPERLESS_OCR_ROTATE_PAGES_THRESHOLD: "12"
PAPERLESS_OCR_USER_ARGS: $cap_ocr_user_args
PAPERLESS_OPTIMIZE_THUMBNAILS: "true"
PAPERLESS_POST_CONSUME_SCRIPT: ""
PAPERLESS_PRE_CONSUME_SCRIPT: ""
PAPERLESS_REDIS: redis://paperless_ng-redis:6379/0
PAPERLESS_SECRET_KEY: 7e336ba2f74e9a33c892db04ebfd9c3593f34ed3b4ee3086a3f83a4f8af737d0
PAPERLESS_THUMBNAIL_FONT_NAME: /usr/share/fonts/liberation/LiberationSerif-Regular.ttf
PAPERLESS_TIKA_ENABLED: "1"
PAPERLESS_TIKA_ENDPOINT: http://paperless_ng-tika:9998
PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://paperless_ng-gotenberg:3000
PAPERLESS_TIME_ZONE: UTC
PAPERLESS_WEBSERVER_WORKERS: "2"
USERMAP_GID: "1000"
USERMAP_UID: "1000"
volumes:
- paperless_ng-data:/usr/src/paperless/data
- paperless_ng-media:/usr/src/paperless/media
- paperless_ng-export:/usr/src/paperless/export
- paperless_ng-consume:/usr/src/paperless/consume
depends_on:
- paperless_ng-db
- paperless_ng-redis
paperless_ng-db:
image: postgres:13
environment:
POSTGRES_DB: paperless
POSTGRES_PASSWORD: f325aa520e718dcc54dfb275aae97231a0f88f7b67302c63b8ecfdf9d96a7a08
POSTGRES_USER: paperless
volumes:
- paperless_ng-db:/var/lib/postgresql/data
paperless_ng-gotenberg:
image: thecodingmachine/gotenberg:6
environment:
DISABLE_GOOGLE_CHROME: "1"
paperless_ng-redis:
volumes:
- paperless_ng-redis-data:/data
paperless_ng-tika:
image: apache/tika
volumes:
paperless_ng-data: {}
paperless_ng-media: {}
paperless_ng-export: {}
paperless_ng-consume: {}
paperless_ng-db: {}
paperless_ng-redis-data: {}
Then run:
docker compose up -d
Access
Once started, access your app at http://localhost:8000
Why Self-Host Paperless-ng?
Full Data Ownership
Your data stays on your servers. No third-party access.
No Monthly Fees
Pay only for your server. No per-seat or usage charges.
Complete Control
Customize, backup, and scale on your own terms.
Privacy & Compliance
Meet GDPR, HIPAA, or internal security requirements.
Technical Details
Docker Image
jonaswinkler/paperless-ng:${app_version}Official Docs
paperless-ng.readthedocs.ioWant to go faster?
Try Senate! Senate handles Docker, HTTPS, updates, and monitoring for you. Deploy any of our 300+ apps with a single command.
Install on any Linux server:
sh -c "$(curl -sSL https://get.senate.sh)"