services: db: image: docker.io/library/postgres:16-alpine restart: always volumes: - ./pgdata:/var/lib/postgresql/data environment: POSTGRES_DB: paperless POSTGRES_USER: paperless POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} networks: - web_traffic broker: image: docker.io/library/redis:7-alpine restart: always networks: - web_traffic webserver: image: ghcr.io/paperless-ngx/paperless-ngx:latest container_name: paperless-ngx restart: always depends_on: - db - broker healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000"] interval: 30s timeout: 10s retries: 5 volumes: - ./data:/usr/src/paperless/data - ./media:/usr/src/paperless/media - ./export:/usr/src/paperless/export - ./consume:/usr/src/paperless/consume environment: PAPERLESS_REDIS: redis://broker:6379 PAPERLESS_DBHOST: db PAPERLESS_DBUSER: paperless PAPERLESS_DBPASS: ${POSTGRES_PASSWORD} PAPERLESS_URL: https://paperless.georgew.dev PAPERLESS_CSRF_TRUSTED_ORIGINS: https://paperless.georgew.dev PAPERLESS_TIME_ZONE: UTC PAPERLESS_OCR_LANGUAGE: eng networks: - web_traffic networks: web_traffic: external: true