Files
helm-charts/paperless-ngx/values.yaml
T
jklein 29ac6d09c5 Paperless-ngx chart: naming scheme, secret refs, pinned init images (conventions batch 3)
Batch-3 major PR for paperless-ngx (issue #32):

- secrets.redisRef/databaseRef/paperlessRef -> redisSecretRef/
  databaseSecretRef/paperlessSecretRef (consistent with the other
  SecretRef values in the same block); CI fixtures updated
- TLS secret renamed to the standard tls-<release>-<chart>-ingress
  (domain no longer part of the name)
- busybox init/cronjob image pinned via paperless.busybox.image
  values, default bumped 1.28 -> 1.38.0
- probes values-configurable (defaults unchanged, incl. the 600s
  startup budget); consume CronJob deliberately stays probe-less
- ingress standard: ingress.className (default nginx) and
  ingress.annotations merge; domain/clusterIssuer stay required
- additive paperless.env block rendered through tpl (value,
  secretKeyRef, configMapKeyRef forms)
- disabled scripts ConfigMap renamed to ...-configmap; PVC names kept
  as documented naming-scheme exception (comments in the templates)
- chart 8.0.1+up3.0.5 -> 9.0.0+up3.0.5 (breaking values changes)
2026-08-22 19:39:54 +02:00

172 lines
5.7 KiB
YAML

# Scale the whole chart down without uninstalling it: scaleDown: true renders
# every Deployment/StatefulSet with replicas: 0 (and suspends CronJobs) and
# takes precedence over any per-workload replicas value. PVCs, Secrets and
# Services stay in place; scaleDown: false brings the workloads back up.
scaleDown: false
secrets:
redisSecretRef: null
databaseSecretRef: null
paperlessSecretRef: null
smbConnectionSecretRef: null
oidcSecretRef: null
ingress:
clusterIssuer: "letsencrypt-issuer"
domain: null
className: nginx
# Extra annotations for the Ingress; merged with the cert-manager
# cluster-issuer and upload-size annotations the chart always sets.
annotations: {}
paperless:
# Replica count for this workload; 0 is allowed and scales it down.
# The chart-global scaleDown flag takes precedence.
replicas: 1
# Auxiliary busybox image, used by the /run-ownership init container and the
# SMB consume-mover CronJob. Pinned independently of appVersion (which
# tracks paperless-ngx); reviewed alongside every app-version update round.
busybox:
image:
repository: busybox
tag: "1.38.0"
ocr:
languages: "eng"
# Paperless-ngx 3.x modes: auto (default, skips OCR when embedded text
# exists), redo, force, off. The 2.x values "skip"/"skip_noarchive" were
# removed upstream; "skip" maps to "auto".
mode: "auto"
# Archive (PDF/A) generation, decoupled from OCR in 3.0: auto (default,
# skip archive for born-digital PDFs), always (2.x behavior), never.
archiveFileGeneration: "auto"
rotate_pages: "true"
output_type: "pdfa"
files:
filenameFormat: "{{ created_year }}/{{ correspondent }}/{{ title }}"
storage: 20Gi
maxUploadFileSize: 10m
# The barcode scanner backend is no longer configurable: paperless-ngx 3.0
# removed pyzbar and PAPERLESS_CONSUMER_BARCODE_SCANNER; zxing-cpp is the
# only backend now.
barcodes:
enabled: true
barcodeString: "PATCHT"
retainBarcodePage: false
asn:
enabled: true
# Paperless-ngx 3.0 no longer rejects duplicate documents by default; set
# to true to restore the 2.x behavior of deleting duplicates on consume.
deleteDuplicates: false
tikaGotenberg:
enabled: false
tikaEndpoint: null
gotenbergEndpoint: null
scripts:
postConsumptionScripts: []
preConsumptionScripts: []
livenessProbe:
httpGet:
path: /
port: 8000
periodSeconds: 30
failureThreshold: 3
successThreshold: 1
timeoutSeconds: 5
readinessProbe:
httpGet:
path: /
port: 8000
periodSeconds: 10
failureThreshold: 3
successThreshold: 1
timeoutSeconds: 5
# The startup probe gates liveness/readiness. Paperless runs database
# migrations on startup, and since 3.0 the first start after an upgrade
# also rebuilds the search index from scratch (Whoosh -> Tantivy):
# budget 10s * 60 = 600s.
startupProbe:
httpGet:
path: /
port: 8000
periodSeconds: 10
failureThreshold: 60
timeoutSeconds: 5
# Extra environment variables, appended to the ones the chart always sets.
# Values are rendered through tpl; value, secretKeyRef and configMapKeyRef
# forms are supported.
env: []
resources:
# Limits are optional: memory and ephemeral-storage limits default to
# limitFactor x the request, an explicitly set limit always wins, and a
# CPU limit is only set when configured explicitly under "limits".
limitFactor: 3
requests:
cpu: 0.2
memory: 1024Mi
ephemeralStorage: 200Mi
# Paperless-ngx supports rootless operation: the pod runs as uid/gid 1000
# (the image's default paperless user), fsGroup makes the PVCs writable and
# /tmp + /run are emptyDirs so the root filesystem stays read-only.
# Documented deviation: s6-overlay requires /run to be OWNED by the runtime
# uid (group-write is not enough), so a minimal root init container chowns
# the /run emptyDir to runAsUser/runAsGroup before the hardened main
# container starts.
securityContext:
pod:
runAsNonRoot: true
runAsUser: 1000
runAsGroup: 1000
fsGroup: 1000
fsGroupChangePolicy: Always
container:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
runAsNonRoot: true
capabilities:
drop:
- ALL
smbConnection:
enabled: false
server: null
cronJob: "0 0,12 * * *"
cron:
# The consume mover only shuffles files between the SMB share (mounted
# with 0777 modes) and the consume PVC, so it runs as the same non-root
# uid/gid as paperless itself with a fully hardened context.
securityContext:
pod:
runAsNonRoot: true
runAsUser: 1000
runAsGroup: 1000
fsGroup: 1000
fsGroupChangePolicy: Always
container:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
runAsNonRoot: true
capabilities:
drop:
- ALL
resources:
# Limits are optional: memory and ephemeral-storage limits default to
# limitFactor x the request, an explicitly set limit always wins, and a
# CPU limit is only set when configured explicitly under "limits".
limitFactor: 3
requests:
cpu: 10m
memory: 16Mi
ephemeralStorage: 10Mi
oidc:
enabled: false
autoLoginWithProvider: false
disableRegularLogin: false
provider:
id: null
name: null
clientId: null
discoveryUrl: null
# Optional: explicit token endpoint auth method (e.g. client_secret_basic).
# Some providers need this since the allauth update in paperless-ngx 3.0
# (login fails at the callback with invalid_client otherwise).
tokenAuthMethod: null