paperless

This commit is contained in:
Philip Haupt
2025-05-18 00:28:35 +02:00
parent cfbc806b74
commit ea7d112ded
4 changed files with 492 additions and 0 deletions

View File

@@ -0,0 +1,6 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- main.yaml

349
paperless/main.yaml Normal file
View File

@@ -0,0 +1,349 @@
apiVersion: v1
data:
postgres-password: V3R5azRIQklOSg==
kind: Secret
metadata:
labels:
app.kubernetes.io/instance: paperless
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: postgresql
helm.sh/chart: postgresql-11.6.12
name: paperless-postgresql
namespace: paperless
type: Opaque
---
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/component: primary
app.kubernetes.io/instance: paperless
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: postgresql
helm.sh/chart: postgresql-11.6.12
name: paperless-postgresql
namespace: paperless
spec:
ports:
- name: tcp-postgresql
nodePort: null
port: 5432
targetPort: tcp-postgresql
selector:
app.kubernetes.io/component: primary
app.kubernetes.io/instance: paperless
app.kubernetes.io/name: postgresql
sessionAffinity: None
type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/component: primary
app.kubernetes.io/instance: paperless
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: postgresql
helm.sh/chart: postgresql-11.6.12
service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
name: paperless-postgresql-hl
namespace: paperless
spec:
clusterIP: None
ports:
- name: tcp-postgresql
port: 5432
targetPort: tcp-postgresql
publishNotReadyAddresses: true
selector:
app.kubernetes.io/component: primary
app.kubernetes.io/instance: paperless
app.kubernetes.io/name: postgresql
type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/instance: paperless
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: paperless
app.kubernetes.io/version: 1.8.0
helm.sh/chart: paperless-9.1.3
name: paperless
spec:
ports:
- name: http
port: 8000
protocol: TCP
targetPort: http
selector:
app.kubernetes.io/instance: paperless
app.kubernetes.io/name: paperless
type: ClusterIP
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
app.kubernetes.io/instance: paperless
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: paperless
app.kubernetes.io/version: 1.8.0
helm.sh/chart: paperless-9.1.3
name: paperless-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: openebs-3-replicas
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
app.kubernetes.io/instance: paperless
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: paperless
app.kubernetes.io/version: 1.8.0
helm.sh/chart: paperless-9.1.3
name: paperless-media
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: openebs-3-replicas
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/instance: paperless
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: paperless
app.kubernetes.io/version: 1.8.0
helm.sh/chart: paperless-9.1.3
name: paperless
spec:
replicas: 1
revisionHistoryLimit: 3
selector:
matchLabels:
app.kubernetes.io/instance: paperless
app.kubernetes.io/name: paperless
strategy:
type: Recreate
template:
metadata:
labels:
app.kubernetes.io/instance: paperless
app.kubernetes.io/name: paperless
spec:
automountServiceAccountToken: true
containers:
- env:
- name: COMPOSE_PROJECT_NAME
value: paperless
- name: PAPERLESS_OCR_LANGUAGE
value: ger
- name: PAPERLESS_PORT
value: "8000"
- name: PAPERLESS_REDIS
value: redis://redis.redis.svc.cluster.local:6379/0
- name: PAPERLESS_TIME_ZONE
value: Europe/Berlin
- name: PAPERLESS_URL
value: http://chart-example.local
- name: USERMAP_GID
value: "1000"
- name: USERMAP_UID
value: "1000"
image: ghcr.io/paperless-ngx/paperless-ngx:1.8.0
imagePullPolicy: IfNotPresent
livenessProbe:
failureThreshold: 3
initialDelaySeconds: 0
periodSeconds: 10
tcpSocket:
port: 8000
timeoutSeconds: 1
name: paperless
ports:
- containerPort: 8000
name: http
protocol: TCP
readinessProbe:
failureThreshold: 3
initialDelaySeconds: 0
periodSeconds: 10
tcpSocket:
port: 8000
timeoutSeconds: 1
startupProbe:
failureThreshold: 30
initialDelaySeconds: 0
periodSeconds: 5
tcpSocket:
port: 8000
timeoutSeconds: 1
volumeMounts:
- mountPath: /usr/src/paperless/data
name: data
- mountPath: /usr/src/paperless/media
name: media
dnsPolicy: ClusterFirst
enableServiceLinks: true
serviceAccountName: default
volumes:
- name: data
persistentVolumeClaim:
claimName: paperless-data
- name: media
persistentVolumeClaim:
claimName: paperless-media
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
app.kubernetes.io/component: primary
app.kubernetes.io/instance: paperless
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: postgresql
helm.sh/chart: postgresql-11.6.12
name: paperless-postgresql
namespace: paperless
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/component: primary
app.kubernetes.io/instance: paperless
app.kubernetes.io/name: postgresql
serviceName: paperless-postgresql-hl
template:
metadata:
annotations: null
labels:
app.kubernetes.io/component: primary
app.kubernetes.io/instance: paperless
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: postgresql
helm.sh/chart: postgresql-11.6.12
name: paperless-postgresql
spec:
affinity:
nodeAffinity: null
podAffinity: null
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
matchLabels:
app.kubernetes.io/component: primary
app.kubernetes.io/instance: paperless
app.kubernetes.io/name: postgresql
namespaces:
- paperless
topologyKey: kubernetes.io/hostname
weight: 1
containers:
- env:
- name: BITNAMI_DEBUG
value: "false"
- name: POSTGRESQL_PORT_NUMBER
value: "5432"
- name: POSTGRESQL_VOLUME_DIR
value: /bitnami/postgresql
- name: PGDATA
value: /bitnami/postgresql/data
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
key: postgres-password
name: paperless-postgresql
- name: POSTGRESQL_ENABLE_LDAP
value: "no"
- name: POSTGRESQL_ENABLE_TLS
value: "no"
- name: POSTGRESQL_LOG_HOSTNAME
value: "false"
- name: POSTGRESQL_LOG_CONNECTIONS
value: "false"
- name: POSTGRESQL_LOG_DISCONNECTIONS
value: "false"
- name: POSTGRESQL_PGAUDIT_LOG_CATALOG
value: "off"
- name: POSTGRESQL_CLIENT_MIN_MESSAGES
value: error
- name: POSTGRESQL_SHARED_PRELOAD_LIBRARIES
value: pgaudit
image: docker.io/bitnami/postgresql:14.4.0-debian-11-r4
imagePullPolicy: IfNotPresent
livenessProbe:
exec:
command:
- /bin/sh
- -c
- exec pg_isready -U "postgres" -h 127.0.0.1 -p 5432
failureThreshold: 6
initialDelaySeconds: 30
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
name: postgresql
ports:
- containerPort: 5432
name: tcp-postgresql
readinessProbe:
exec:
command:
- /bin/sh
- -c
- -e
- |
exec pg_isready -U "postgres" -h 127.0.0.1 -p 5432
[ -f /opt/bitnami/postgresql/tmp/.initialized ] || [ -f /bitnami/postgresql/.initialized ]
failureThreshold: 6
initialDelaySeconds: 5
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
resources:
limits: {}
requests:
cpu: 250m
memory: 256Mi
securityContext:
runAsUser: 1001
volumeMounts:
- mountPath: /dev/shm
name: dshm
- mountPath: /bitnami/postgresql
name: data
hostIPC: false
hostNetwork: false
initContainers: null
securityContext:
fsGroup: 1001
serviceAccountName: default
volumes:
- emptyDir:
medium: Memory
name: dshm
updateStrategy:
rollingUpdate: {}
type: RollingUpdate
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi

View File

@@ -0,0 +1,12 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
helmCharts:
- name: paperless
repo: https://k8s-at-home.com/charts/
version: 9.1.3
releaseName: paperless
includeCRDs: true
namespace: paperless
valuesFile: values.yaml

125
paperless/src/values.yaml Normal file
View File

@@ -0,0 +1,125 @@
#
# IMPORTANT NOTE
#
# This chart inherits from our common library chart. You can check the default values/options here:
# https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml
#
image:
# -- image repository
repository: ghcr.io/paperless-ngx/paperless-ngx
# -- image pull policy
pullPolicy: IfNotPresent
# -- image tag
# @default -- chart.appVersion
tag:
# -- See the following files for additional environment variables:
# https://github.com/paperless-ngx/paperless-ngx/tree/main/docker/compose/
# https://github.com/paperless-ngx/paperless-ngx/blob/main/paperless.conf.example
# @default -- See below
env:
# -- Project name
COMPOSE_PROJECT_NAME: paperless
# -- Redis to use
PAPERLESS_REDIS: redis://redis.redis.svc.cluster.local:6379/0
# -- OCR languages to install
PAPERLESS_OCR_LANGUAGE: ger
USERMAP_UID: 1000
USERMAP_GID: 1000
PAPERLESS_TIME_ZONE: Europe/Berlin
# -- Database host to use
PAPERLESS_DBHOST:
# -- Port to use
PAPERLESS_PORT: 8000
# -- Username for the root user
# PAPERLESS_ADMIN_USER: admin
# -- Password for the root user
# PAPERLESS_ADMIN_PASSWORD: admin
# PAPERLESS_URL: <set to main ingress by default>
# -- Configures service settings for the chart.
# @default -- See values.yaml
service:
main:
ports:
http:
port: 8000
redis:
ports:
redis:
port: 6379
ingress:
# -- Enable and configure ingress settings for the chart under this key.
# @default -- See values.yaml
main:
enabled: false
persistence:
# -- Configure persistence for data.
# @default -- See values.yaml
data:
enabled: true
mountPath: /usr/src/paperless/data
accessMode: ReadWriteOnce
emptyDir:
enabled: false
storageClass: openebs-3-replicas
size: 1Gi
# -- Configure persistence for media.
# @default -- See values.yaml
media:
enabled: true
mountPath: /usr/src/paperless/media
accessMode: ReadWriteOnce
emptyDir:
enabled: false
storageClass: openebs-3-replicas
size: 5Gi
# -- Configure volume to monitor for new documents.
# @default -- See values.yaml
consume:
enabled: false
mountPath: /usr/src/paperless/consume
accessMode: ReadWriteOnce
emptyDir:
enabled: false
# -- Configure export volume.
# @default -- See values.yaml
export:
enabled: false
mountPath: /usr/src/paperless/export
accessMode: ReadWriteOnce
emptyDir:
enabled: false
# -- Enable and configure postgresql database subchart under this key.
# For more options see [postgresql chart documentation](https://github.com/bitnami/charts/tree/master/bitnami/postgresql)
# @default -- See values.yaml
postgresql:
enabled: true
postgresqlUsername: paperless
postgresqlPassword: paperless
postgresqlDatabase: paperless
replication:
enabled: false
persistence:
enabled: true
storageClass: openebs-3-replicas
accessMode: ReadWriteOnce
size: 8Gi
#existingSecret: requarks-postgresql
# -- Enable and configure redis subchart under this key.
# For more options see [redis chart documentation](https://github.com/bitnami/charts/tree/master/bitnami/redis)
# @default -- See values.yaml
redis:
enabled: false
auth:
enabled: false