homelab-codex-ws/services/paperless/service.yaml

49 lines
2.3 KiB
YAML
Raw Normal View History

service:
name: paperless
owner_node: piha
role: document-management # KB pillar #2 source of truth for scans/invoices (archiwum = REFERENCJA)
exposure: private # LAN/Tailscale only via npm@PIHA (paper.kapala.org); NO public ingress
dependencies:
- forgejo # OIDC identity provider (forgejo.kapala.org)
# paperless-worker@SOLARIA is a consumer of this service (Redis broker,
# Postgres, NFS-exported storage) — not a dependency; the stack is fully
# functional (slow OCR fallback) with SOLARIA powered down.
ports:
- container: 8000
host: 8210 # LAN_BIND_IP only, never 0.0.0.0
protocol: tcp
- container: 5432
host: 5434 # postgres for paperless-worker@SOLARIA (LAN bind)
protocol: tcp
- container: 6379
host: 6380 # redis broker for paperless-worker@SOLARIA (LAN bind)
protocol: tcp
healthcheck:
type: http
endpoint: http://192.168.31.5:8210/ # LAN bind — localhost does not answer
interval: 30s
timeout: 10s
retries: 5
restart_policy: unless-stopped
persistence:
# Paperless is the KB REFERENCE archive — this storage is the single source
# of truth for documents and its backup is MANDATORY (kb-02 hybrid boundary
# condition). data/media/consume are also the NFS export consumed by
# paperless-worker@SOLARIA.
paths:
- /opt/homelab/data/paperless/data # search index, classifier — rebuildable
- /opt/homelab/data/paperless/media # ORIGINALS + archived PDFs — irreplaceable
- /opt/homelab/data/paperless/consume # ingest drop dir
- /opt/homelab/data/paperless/export # document_exporter output (backup staging)
- paperless_pgdata # named volume: postgres (metadata, tags, correspondents)
- paperless_redisdata # named volume: redis AOF (queued OCR tasks)
runtime:
config_files:
- .env # secrets (gitignored, from env.example)
env_vars:
- LAN_BIND_IP # required — compose port-bind interpolation (192.168.31.5)
- PAPERLESS_SECRET_KEY
- PAPERLESS_DBPASS
- POSTGRES_PASSWORD # must equal PAPERLESS_DBPASS
- PAPERLESS_SOCIALACCOUNT_PROVIDERS # OIDC provider JSON incl. Forgejo client secret