version: "3.8" services: broker: image: docker.io/library/redis:7 container_name: paperless_redis restart: unless-stopped volumes: - ${CONFIG_ROOT}/paperless/redis:/data db: image: docker.io/library/postgres:16 container_name: paperless_db restart: unless-stopped volumes: - ${CONFIG_ROOT}/paperless/pgdata:/var/lib/postgresql/data environment: POSTGRES_DB: paperless POSTGRES_USER: paperless POSTGRES_PASSWORD: ${PAPERLESS_DB_PASS:-paperless} webserver: image: ghcr.io/paperless-ngx/paperless-ngx:latest container_name: paperless restart: unless-stopped depends_on: - db - broker environment: PAPERLESS_REDIS: redis://broker:6379 PAPERLESS_DBHOST: db PAPERLESS_DBPORT: 5432 PAPERLESS_DBNAME: paperless PAPERLESS_DBUSER: paperless PAPERLESS_DBPASS: ${PAPERLESS_DB_PASS:-paperless} PAPERLESS_SECRET_KEY: ${PAPERLESS_SECRET_KEY} PAPERLESS_URL: https://paperless.${DOMAIN} PAPERLESS_TIME_ZONE: ${TZ:-Etc/UTC} USERMAP_UID: ${PUID:-1000} USERMAP_GID: ${PGID:-1000} volumes: - ${CONFIG_ROOT}/paperless/data:/usr/src/paperless/data - ${CONFIG_ROOT}/paperless/media:/usr/src/paperless/media - ${CONFIG_ROOT}/paperless/export:/usr/src/paperless/export - ${CONFIG_ROOT}/paperless/consume:/usr/src/paperless/consume labels: # Traefik traefik.enable: "true" traefik.http.routers.paperless.rule: "Host(`paperless.${DOMAIN}`)" traefik.http.routers.paperless.entrypoints: "https" traefik.http.routers.paperless.service: "paperless" traefik.http.routers.paperless.tls.certresolver: "cloudflare" traefik.http.services.paperless.loadbalancer.server.port: "8000" # Homepage homepage.group: "Documents" homepage.name: "Paperless-ngx" homepage.icon: "paperless-ngx.svg" homepage.href: "https://paperless.${DOMAIN}" homepage.description: "Document Management" networks: - traefik_public - default networks: traefik_public: external: true