services: paperless_redis: image: redis:alpine networks: - frostlabs healthcheck: test: [ "CMD", "redis-cli", "ping" ] interval: 30s timeout: 5s retries: 3 start_period: 10s deploy: replicas: 1 placement: constraints: - node.labels.task == compute resources: limits: memory: 512M reservations: memory: 128M paperless_webserver: image: ghcr.io/paperless-ngx/paperless-ngx:latest volumes: - /home/doc/projects/swarm-data/paperless/data:/usr/src/paperless/data - /home/doc/projects/swarm-data/paperless/media:/usr/src/paperless/media - /home/doc/projects/swarm-data/paperless/export:/usr/src/paperless/export - /home/doc/projects/swarm-data/paperless/consume:/usr/src/paperless/consume secrets: - postgres-master - paperless-secret-key - paperless-admin-pass environment: - PAPERLESS_DBPASS_FILE=/run/secrets/postgres-master - PAPERLESS_SECRET_KEY_FILE=/run/secrets/paperless-secret-key - PAPERLESS_ADMIN_PASSWORD_FILE=/run/secrets/paperless-admin-pass - PAPERLESS_URLS=https://docs.frostlabs.me - PAPERLESS_ALLOWED_HOSTS=docs.frostlabs.me - PAPERLESS_CSRF_TRUSTED_ORIGINS=https://docs.frostlabs.me - PAPERLESS_REDIS=redis://paperless_redis:6379 - PAPERLESS_DBHOST=10.0.4.10 - PAPERLESS_DBPORT=5432 - PAPERLESS_DBNAME=paperless - PAPERLESS_DBUSER=admin - PAPERLESS_TIME_ZONE=America/New_York - PAPERLESS_OCR_LANGUAGE=eng - PAPERLESS_CONSUMER_POLLING=5 - PAPERLESS_CONSUMER_DELETE_DUPLICATES=true - PAPERLESS_CONSUMER_RECURSIVE=true - PAPERLESS_CONSUMER_SUBDIRS_AS_TAGS=false - PAPERLESS_CONSUMER_IGNORE_PATTERNS=[".DS_Store","._*",".stfolder",".stversions","Thumbs.db"] - PAPERLESS_ENABLE_CLASSIFIER=true - PAPERLESS_ADMIN_USER=admin - PAPERLESS_ADMIN_MAIL=john.allisonwin@outlook.com networks: - frostlabs healthcheck: test: [ "CMD", "curl", "-f", "http://localhost:8000" ] interval: 30s timeout: 10s retries: 3 start_period: 90s deploy: replicas: 1 placement: constraints: - node.labels.task == compute resources: limits: memory: 2G cpus: '2.0' reservations: memory: 1G labels: - "traefik.enable=true" - "traefik.swarm.network=frostlabs" - "traefik.http.routers.paperless.rule=Host(`docs.frostlabs.me`)" - "traefik.http.routers.paperless.entrypoints=websecure" - "traefik.http.routers.paperless.tls=true" - "traefik.http.routers.paperless.tls.certresolver=cloudflare" - "traefik.http.services.paperless.loadbalancer.server.port=8000" depends_on: - paperless_redis networks: frostlabs: external: true secrets: paperless-admin-pass: external: true paperless-secret-key: external: true postgres-master: external: true