diff --git a/README.md b/README.md index 4ee3a244f..7b188e9e2 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,7 @@ helm delete my- | [monica monica icon](charts/monica/) | Personal CRM. Remember everything about your friends, family and business relationships. | | [nightscout nightscout icon](charts/nightscout/) | Web-based CGM (Continuous Glucose Monitor) to allow multiple caregivers to remotely view a patient's glucose data in real time. | | [obico obico icon](charts/obico/) | Obico is a community-built, open-source smart 3D printing platform used by makers, enthusiasts, and tinkerers around the world. | +| [paperless-ngx paperless-ngx icon](charts/paperless-ngx/) | A community-supported supercharged version of paperless: scan, index and archive all your physical documents | | [pictshare pictshare icon](charts/pictshare/) | PictShare is an open source image, mp4, pastebin hosting service with a simple resizing and upload API that you can host yourself. | | [podgrab ](charts/podgrab/) | A self-hosted podcast manager to download episodes as soon as they become live. | | [portfolio portfolio icon](charts/portfolio/) | My personal portfolio website | diff --git a/charts/paperless-ngx/.helmignore b/charts/paperless-ngx/.helmignore new file mode 100644 index 000000000..f56cea6b7 --- /dev/null +++ b/charts/paperless-ngx/.helmignore @@ -0,0 +1,25 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# helm-docs templates +*.gotmpl diff --git a/charts/paperless-ngx/Chart.lock b/charts/paperless-ngx/Chart.lock new file mode 100644 index 000000000..68f317dc8 --- /dev/null +++ b/charts/paperless-ngx/Chart.lock @@ -0,0 +1,15 @@ +dependencies: +- name: common + repository: https://bjw-s.github.io/helm-charts + version: 1.3.2 +- name: postgresql + repository: https://charts.bitnami.com/bitnami + version: 12.2.7 +- name: mariadb + repository: https://charts.bitnami.com/bitnami + version: 11.5.6 +- name: redis + repository: https://charts.bitnami.com/bitnami + version: 17.9.3 +digest: sha256:a163eb2cae9db042f8170763a4b0e47bde0f5fe4555da8ccc3b601c9b87bc9fb +generated: "2023-04-03T14:16:14.615262-05:00" diff --git a/charts/paperless-ngx/Chart.yaml b/charts/paperless-ngx/Chart.yaml new file mode 100644 index 000000000..2892efcca --- /dev/null +++ b/charts/paperless-ngx/Chart.yaml @@ -0,0 +1,42 @@ +apiVersion: v2 +name: paperless-ngx +description: "A community-supported supercharged version of paperless: scan, index and archive all your physical documents" +home: https://charts.gabe565.com/charts/paperless-ngx/ +icon: https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/b948750d558b58018d1d3393db145d162d44fceb/src-ui/src/assets/logo-notext.svg +type: application +version: 0.1.0 +# renovate datasource=docker depName=ghcr.io/paperless-ngx/paperless-ngx +appVersion: 1.13.0 +kubeVersion: ">=1.22.0-0" +keywords: + - documents + - ocr + - paper +dependencies: + - name: common + repository: https://bjw-s.github.io/helm-charts + version: 1.3.2 + - name: postgresql + version: 12.2.7 + repository: https://charts.bitnami.com/bitnami + condition: postgresql.enabled + - name: mariadb + version: 11.5.6 + repository: https://charts.bitnami.com/bitnami + condition: mariadb.enabled + - name: redis + repository: https://charts.bitnami.com/bitnami + version: 17.9.3 + condition: redis.enabled +sources: + - https://github.com/paperless-ngx/paperless-ngx +annotations: + artifacthub.io/alternativeName: paperless + artifacthub.io/changes: |- + - kind: added + description: Initial release + artifacthub.io/links: |- + - name: App Source + url: https://github.com/paperless-ngx/paperless-ngx + - name: Chart Source + url: https://github.com/gabe565/charts/tree/main/charts/paperless-ngx diff --git a/charts/paperless-ngx/README.md b/charts/paperless-ngx/README.md new file mode 100644 index 000000000..fd0766532 --- /dev/null +++ b/charts/paperless-ngx/README.md @@ -0,0 +1,108 @@ +# paperless-ngx + +paperless-ngx logo + +![Version: 0.1.0](https://img.shields.io/badge/Version-0.1.0-informational?style=flat) +![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat) +![AppVersion: 1.13.0](https://img.shields.io/badge/AppVersion-1.13.0-informational?style=flat) + +A community-supported supercharged version of paperless: scan, index and archive all your physical documents + +**Homepage:** + +**This chart is not maintained by the upstream project and any issues with the chart should be raised +[here](https://github.com/gabe565/charts/issues/new?assignees=gabe565&labels=bug&template=bug_report.yaml&name=paperless-ngx&version=0.1.0)** + +## Source Code + +* + +## Requirements + +Kubernetes: `>=1.22.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| | common | 1.3.2 | +| | mariadb | 11.5.6 | +| | postgresql | 12.2.7 | +| | redis | 17.9.3 | + +## TL;DR + +```console +helm repo add gabe565 https://charts.gabe565.com +helm repo update +helm install paperless-ngx gabe565/paperless-ngx +``` + +## Installing the Chart + +To install the chart with the release name `paperless-ngx` + +```console +helm install paperless-ngx gabe565/paperless-ngx +``` + +## Uninstalling the Chart + +To uninstall the `paperless-ngx` deployment + +```console +helm uninstall paperless-ngx +``` + +The command removes all the Kubernetes components associated with the chart **including persistent volumes** and deletes the release. + +## Configuration + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/bjw-s/helm-charts/tree/main/charts/library/common/values.yaml) from the [bjw-s common library](https://github.com/bjw-s/helm-charts/tree/main/charts/library/common). + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install paperless-ngx \ + --set env.TZ="America/New York" \ + gabe565/paperless-ngx +``` + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install paperless-ngx gabe565/paperless-ngx -f values.yaml +``` + +## Custom configuration + +### Database Installation + +Paperless-ngx supports PostgreSQL and MariaDB. +This chart can install PostgreSQL or MariaDB and configure Paperless-ngx automatically. +See each database section in [`values.yaml`](./values.yaml) for configuration examples. + +## Values + +**Important**: When deploying an application Helm chart you can add more values from the bjw-s common library chart [here](https://github.com/bjw-s/helm-charts/tree/main/charts/library/common) + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| env | object | See [values.yaml](./values.yaml) | Environment variables [[ref]](https://docs.paperless-ngx.com/configuration/) | +| env.TZ | string | `"UTC"` | Set the container timezone | +| image.pullPolicy | string | `"IfNotPresent"` | Image pull policy | +| image.repository | string | `"ghcr.io/paperless-ngx/paperless-ngx"` | Image repository | +| image.tag | string | `"1.13.0"` | Image tag | +| ingress.main | object | See [values.yaml](./values.yaml) | Enable and configure ingress settings for the chart under this key. | +| mariadb | object | See [values.yaml](./values.yaml) | Enable and configure mariadb database subchart under this key. If enabled, the app's db envs will be set for you. [[ref]](https://github.com/bitnami/charts/tree/main/bitnami/mariadb) | +| persistence.consume | object | See [values.yaml](./values.yaml) | Configure consume volume settings for the chart under this key. | +| persistence.data | object | See [values.yaml](./values.yaml) | Configure data volume settings for the chart under this key. | +| persistence.export | object | See [values.yaml](./values.yaml) | Configure export volume settings for the chart under this key. | +| persistence.media | object | See [values.yaml](./values.yaml) | Configure media volume settings for the chart under this key. | +| postgresql | object | See [values.yaml](./values.yaml) | Enable and configure postgresql database subchart under this key. If enabled, the app's db envs will be set for you. [[ref]](https://github.com/bitnami/charts/tree/main/bitnami/postgresql) | +| redis | object | See [values.yaml](./values.yaml) | Enable and configure redis subchart under this key. If enabled, the app's Redis env will be set for you. [[ref]](https://github.com/bitnami/charts/tree/main/bitnami/redis) | +| service.main | object | See [values.yaml](./values.yaml) | Configures service settings for the chart. | + +--- +Autogenerated from chart metadata using [helm-docs](https://github.com/norwoodj/helm-docs) diff --git a/charts/paperless-ngx/README_CONFIG.md.gotmpl b/charts/paperless-ngx/README_CONFIG.md.gotmpl new file mode 100644 index 000000000..bdda3df95 --- /dev/null +++ b/charts/paperless-ngx/README_CONFIG.md.gotmpl @@ -0,0 +1,13 @@ +{{- define "custom.custom.configuration.header" -}} +## Custom configuration +{{- end -}} + +{{- define "custom.custom.configuration" -}} +{{ template "custom.custom.configuration.header" . }} + +### Database Installation + +Paperless-ngx supports PostgreSQL and MariaDB. +This chart can install PostgreSQL or MariaDB and configure Paperless-ngx automatically. +See each database section in [`values.yaml`](./values.yaml) for configuration examples. +{{- end -}} diff --git a/charts/paperless-ngx/templates/NOTES.txt b/charts/paperless-ngx/templates/NOTES.txt new file mode 100644 index 000000000..44ecfaa6c --- /dev/null +++ b/charts/paperless-ngx/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "bjw-s.common.lib.chart.notes" . -}} diff --git a/charts/paperless-ngx/templates/common.yaml b/charts/paperless-ngx/templates/common.yaml new file mode 100644 index 000000000..20a4fd74a --- /dev/null +++ b/charts/paperless-ngx/templates/common.yaml @@ -0,0 +1,50 @@ +{{/* Append the hardcoded settings */}} +{{- define "healthchecks.harcodedValues" -}} +env: + PAPERLESS_TIME_ZONE: {{ .Values.env.TZ }} + PAPERLESS_PORT: {{ quote .Values.service.main.ports.http.port }} + + {{- with .Values.ingress.main }} + {{- if and .enabled .hosts }} + PAPERLESS_URL: http{{ if .tls }}s{{ end }}://{{ (first .hosts).host }} + {{- end }} + {{- end }} + + {{- if .Values.postgresql.enabled }} + {{- with .Values.postgresql }} + PAPERLESS_DBENGINE: postgresql + PAPERLESS_DBHOST: {{ $.Release.Name }}-postgresql + PAPERLESS_DBNAME: {{ .auth.database }} + PAPERLESS_DBUSER: {{ default "postgres" .auth.username }} + PAPERLESS_DBPASS: + secretKeyRef: + name: {{ $.Release.Name }}-postgresql + key: {{ if not .auth.password }}postgres-{{ end }}password + {{- end }} + {{- else if .Values.mariadb.enabled }} + {{- with .Values.mariadb}} + PAPERLESS_DBENGINE: mariadb + PAPERLESS_DBHOST: {{ $.Release.Name }}-mariadb + PAPERLESS_DBNAME: {{ .auth.database }} + PAPERLESS_DBUSER: {{ .auth.username }} + PAPERLESS_DBPASS: + secretKeyRef: + name: {{ $.Release.Name }}-mariadb + key: mariadb-password + {{- end }} + {{- end }} + + {{- if .Values.redis.enabled }} + {{- with .Values.redis }} + A_REDIS_PASSWORD: + secretKeyRef: + name: {{ $.Release.Name }}-redis + key: redis-password + PAPERLESS_REDIS: redis://:$(A_REDIS_PASSWORD)@{{ $.Release.Name }}-redis-master + {{- end }} + {{- end }} +{{- end -}} +{{- $_ := merge .Values (include "healthchecks.harcodedValues" . | fromYaml) -}} + +{{/* Render the templates */}} +{{ include "bjw-s.common.loader.all" . }} diff --git a/charts/paperless-ngx/values.yaml b/charts/paperless-ngx/values.yaml new file mode 100644 index 000000000..7198d2eb3 --- /dev/null +++ b/charts/paperless-ngx/values.yaml @@ -0,0 +1,129 @@ +# +# IMPORTANT NOTE +# +# This chart inherits from our common library chart. You can check the default values/options here: +# https://github.com/bjw-s/helm-charts/blob/main/charts/library/common/values.yaml +# + +image: + # -- Image repository + repository: ghcr.io/paperless-ngx/paperless-ngx + # -- Image pull policy + pullPolicy: IfNotPresent + # -- Image tag + tag: 1.13.0 + +# -- Environment variables [[ref]](https://docs.paperless-ngx.com/configuration/) +# @default -- See [values.yaml](./values.yaml) +env: + # -- Set the container timezone + TZ: UTC + # PAPERLESS_SECRET_KEY: "" + +service: + # -- Configures service settings for the chart. + # @default -- See [values.yaml](./values.yaml) + main: + ports: + http: + port: 8000 + +ingress: + # -- Enable and configure ingress settings for the chart under this key. + # @default -- See [values.yaml](./values.yaml) + main: + enabled: false + annotations: + nginx.ingress.kubernetes.io/proxy-body-size: 64m + # hosts: + # - host: chart-example.local + # paths: + # - path: / + # tls: + # - secretName: chart-example.local + # hosts: + # - chart-example.local + +persistence: + # -- Configure data volume settings for the chart under this key. + # @default -- See [values.yaml](./values.yaml) + data: + enabled: false + retain: true + mountPath: /usr/src/paperless/data + # storageClass: "" + # accessMode: ReadWriteOnce + # size: 1Gi + # -- Configure media volume settings for the chart under this key. + # @default -- See [values.yaml](./values.yaml) + media: + enabled: false + retain: true + mountPath: /usr/src/paperless/media + # storageClass: "" + # accessMode: ReadWriteOnce + # size: 8Gi + # -- Configure export volume settings for the chart under this key. + # @default -- See [values.yaml](./values.yaml) + export: + enabled: true + retain: true + mountPath: /usr/src/paperless/export + # storageClass: "" + # accessMode: ReadWriteOnce + # size: 1Gi + # -- Configure consume volume settings for the chart under this key. + # @default -- See [values.yaml](./values.yaml) + consume: + enabled: true + retain: true + mountPath: /usr/src/paperless/consume + # storageClass: "" + # accessMode: ReadWriteOnce + # size: 4Gi + +# -- Enable and configure postgresql database subchart under this key. +# If enabled, the app's db envs will be set for you. +# [[ref]](https://github.com/bitnami/charts/tree/main/bitnami/postgresql) +# @default -- See [values.yaml](./values.yaml) +postgresql: + enabled: false + auth: + database: paperless + postgresPassword: changeme + primary: + persistence: + enabled: false + # storageClass: "" + # size: 8Gi + +# -- Enable and configure mariadb database subchart under this key. +# If enabled, the app's db envs will be set for you. +# [[ref]](https://github.com/bitnami/charts/tree/main/bitnami/mariadb) +# @default -- See [values.yaml](./values.yaml) +mariadb: + enabled: false + auth: + database: paperless + username: paperless + password: changeme + rootPassword: changeme + primary: + persistence: + enabled: false + # storageClass: "" + # size: 8Gi + +# -- Enable and configure redis subchart under this key. +# If enabled, the app's Redis env will be set for you. +# [[ref]](https://github.com/bitnami/charts/tree/main/bitnami/redis) +# @default -- See [values.yaml](./values.yaml) +redis: + enabled: true + auth: + enabled: true + master: + persistence: + enabled: false + replica: + replicaCount: 0