diff --git a/paperless/stack.yml b/paperless/stack.yml new file mode 100644 index 0000000..0c6363b --- /dev/null +++ b/paperless/stack.yml @@ -0,0 +1,96 @@ +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