Setup Paperless-NGX
Overview
Paperless-ngx is a community-supported open-source document management system that transforms your physical documents into a searchable online archive so you can keep, well, less paper.
Important Docker Files
.env file
.env
NAME=paperless
DOMAIN=
URL=https://${NAME}.${DOMAIN}
DB_NAME=paperless
DB_USER=paperless
DB_PASS=
APPDATA=
ID=1000
SECRET=
TZ=America/New_York
DATE_FORMAT=MDY
SHARED=
PORT=8000
docker-compose.yml file
docker-compose.yml
services:
paperless:
image: ghcr.io/paperless-ngx/paperless-ngx
container_name: ${NAME}
restart: unless-stopped
networks:
- proxy
- internal-db
dns:
- '10.1.10.1'
depends_on:
- ${NAME}-db
- ${NAME}-redis
volumes:
- ${APPDATA}/${NAME}/data:/usr/src/paperless/data
- ${SHARED}/${NAME}/media:/usr/src/paperless/media
- ${APPDATA}/${NAME}/export:/usr/src/paperless/export
- ${APPDATA}/${NAME}/scripts:/usr/src/paperless/scripts
- ${SHARED}/${NAME}/consume:/usr/src/paperless/consume
environment:
PAPERLESS_REDIS: redis://${NAME}-redis:6379
PAPERLESS_DBHOST: ${NAME}-db
PAPERLESS_DBNAME: ${DB_NAME}
PAPERLESS_DBUSER: ${DB_USER}
PAPERLESS_DBPASS: ${DB_PASS}
USERMAP_GID: ${ID}
USERMAP_UID: ${ID}
PAPERLESS_URL: ${URL}
PAPERLESS_SECRET_KEY: ${SECRET}
PAPERLESS_TIME_ZONE: ${TZ}
PAPERLESS_OCR_USER_ARGS: '{"tesseract_timeout": 180}'
PAPERLESS_DATE_ORDER: ${DATE_FORMAT}
PAPERLESS_PRE_CONSUME_SCRIPT: /usr/src/paperless/scripts/removepassword.py
PAPERLESS_WEBSERVER_WORKERS: 2
labels:
swag: enable
swag_address: ${NAME}
swag_port: ${PORT}
swag_proto: http
swag_url: ${NAME}.${DOMAIN}
com.centurylinklabs.watchtower.enable: true
paperless-redis:
image: redis:alpine
container_name: ${NAME}-redis
restart: unless-stopped
volumes:
- ${APPDATA}/${NAME}/${NAME}-redis:/data
networks:
- internal-db
labels:
traefik.enable: false
com.centurylinklabs.watchtower.enable: true
paperless-db:
#image: pgautoupgrade/pgautoupgrade:17-alpine
image: postgres:17-alpine
container_name: ${NAME}-db
restart: unless-stopped
volumes:
- ${APPDATA}/${NAME}/${NAME}-db:/var/lib/postgresql/data
environment:
TZ: ${TZ}
POSTGRES_DB: ${DB_NAME}
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASS}
healthcheck:
interval: 10s
retries: 10
test: pg_isready -U ${DB_USER} -d ${DB_NAME}
timeout: 2s
networks:
- internal-db
labels:
traefik.enable: false
com.centurylinklabs.watchtower.enable: true
networks:
proxy:
external: true
internal-db:
external: true
Start the Container
Start the Container
docker compose up -d