# Paperless-ngx Helm chart This independent chart packages the upstream Paperless-ngx image without bundling PostgreSQL or Valkey. It declares the Paperless Deployment, Service, Ingress, probes, Secret references, and optional PVCs. The chart Git tag follows the upstream application release (`v3.3.2`); later chart-only commits append Git describe's count and hash. The default image tag comes from `appVersion`. Supply existing Secret names for the Paperless key and PostgreSQL password. The chart never renders credentials. Set `persistence.data.existingClaim` and `persistence.runtime.existingClaim` to retain existing claims. The shared data claim may also be mounted by a separate scanner release. Scheduling affinity, tolerations, OCR worker count, and cluster hostname are values, not chart constants. The homelab deployment is in [homelab-gitops/apps/paperless](https://code.brunner.ninja/feedc0de/homelab-gitops/src/branch/main/apps/paperless). Uploads and PDF-edit inputs are staged in the data claim's `scratch` subdirectory, mounted at `/tmp/paperless`, so a pod replacement does not erase queued inputs. Use persistent Valkey storage too: the database task list is history, not a replacement for lost broker messages. Drain active tasks before upgrades; Celery does not automatically resume every task interrupted after it has started. ```sh helm repo add brunner.ninja https://brunner.ninja/charts helm repo update brunner.ninja helm upgrade --install paperless brunner.ninja/paperless-ngx \ --namespace paperless-ngx --create-namespace -f values.yaml --wait --timeout 15m ``` For local testing run `./test.sh`; `./install.sh values.yaml` uses the current Kubernetes context and the chart in this checkout. CI publishes the chart, then promotes only its chart version to GitOps. Required Actions secrets are `PACKAGE_USERNAME`, `PACKAGE_TOKEN`, and `GITOPS_TOKEN`.