Compare commits

..

15 Commits

17 changed files with 749 additions and 612 deletions

33
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,33 @@
name: Release Charts
on:
push:
branches:
- main
jobs:
release:
runs-on: ubuntu-latest
permissions:
contents: write # Needed for chart-releaser to push to gh-pages
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Configure Git
run: |
git config user.name "$GITHUB_ACTOR"
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
- name: Install Helm
uses: azure/setup-helm@v3
with:
version: v3.12.1
- name: Run chart-releaser
uses: helm/chart-releaser-action@v1.5.0
env:
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
CR_SKIP_EXISTING: true

View File

@ -1,2 +1,3 @@
# helm-charts
Repo for helm charts
Donetick Helm chart

View File

@ -1,4 +1,19 @@
repositoryID: 11743389-27d2-4d03-a271-1dd96844082f
# Artifact Hub repository metadata file
#
# Some settings like the verified publisher flag or the ignored packages won't
# be applied until the next time the repository is processed. Please keep in
# mind that the repository won't be processed if it has not changed since the
# last time it was processed. Depending on the repository kind, this is checked
# in a different way. For Helm http based repositories, we consider it has
# changed if the `index.yaml` file changes. For git based repositories, it does
# when the hash of the last commit in the branch you set up changes. This does
# NOT apply to ownership claim operations, which are processed immediately.
#
repositoryID: 8ec75275-172f-45e9-b188-3b0dd609bee9
owners: # (optional, used to claim repository ownership)
- name: rtomik
- name: user1
email: tomikr7@gmail.com
ignore: # (optional, packages that should not be indexed by Artifact Hub)
- name: donetick # Exact match
version: 0.1.0 # Regular expression (when omitted, all versions are ignored)

View File

@ -2,7 +2,7 @@ apiVersion: v2
name: donetick
description: A Helm chart for Donetick application
type: application
version: 0.1.0
version: 1.0.1
appVersion: "latest"
maintainers:
- name: Richard Tomik

View File

@ -14,21 +14,21 @@ This chart deploys [Donetick](https://github.com/donetick/donetick) on a Kuberne
## Installing the Chart
To install the chart with the release name `my-donetick`:
To install the chart with the release name `donetick`:
```bash
$ helm repo add donetick-chart https://rtomik.github.io/helm-charts
$ helm install my-donetick donetick-chart/donetick
$ helm install donetick donetick-chart/donetick
```
> **Tip**: List all releases using `helm list`
## Uninstalling the Chart
To uninstall/delete the `my-donetick` deployment:
To uninstall/delete the `donetick` deployment:
```bash
$ helm delete my-donetick
$ helm uninstall donetick
```
## Parameters
@ -107,4 +107,4 @@ $ helm delete my-donetick
| `persistence.enabled` | Enable persistence using PVC | `true` |
| `persistence.storageClass` | PVC Storage Class | `"longhorn"` |
| `persistence.accessMode` | PVC Access Mode | `ReadWriteOnce` |
| `persistence.size` |
| `persistence.size` |

View File

@ -64,7 +64,8 @@ data:
appHost: {{ .Values.config.email.appHost | default "" | quote }}
oauth2:
{{- if .Values.config.oauth2.existingSecret }}
# Client ID and Secret will be injected from Secret
client_id: $DT_OAUTH2_CLIENT_ID
client_secret: $DT_OAUTH2_CLIENT_SECRET
{{- else }}
client_id: {{ .Values.config.oauth2.client_id | default "" | quote }}
client_secret: {{ .Values.config.oauth2.client_secret | default "" | quote }}

15
charts/recipya/Chart.yaml Normal file
View File

@ -0,0 +1,15 @@
apiVersion: v2
name: recipya
description: A Helm chart for Recipya recipe manager application
type: application
version: 0.0.1
appVersion: "v1.2.2"
maintainers:
- name: Richard Tomik
email: no@m.com
keywords:
- recipe-manager
- recipya
home: https://github.com/rtomik/helm-charts
sources:
- https://github.com/reaper47/recipya

122
charts/recipya/readme.md Normal file
View File

@ -0,0 +1,122 @@
# Recipya Helm Chart
A Helm chart for deploying [Recipya](https://github.com/reaper47/recipya) on Kubernetes.
## Introduction
This chart deploys Recipya recipe manager on a Kubernetes cluster using the Helm package manager.
## Prerequisites
- Kubernetes 1.19+
- Helm 3.2.0+
- PV provisioner support in the underlying infrastructure (if persistence is needed)
## Installing the Chart
To install the chart with the release name `recipya`:
```bash
helm repo add recipya-chart https://rtomik.github.io/helm-charts
helm install recipya recipya-chart/recipya -n recipya
```
The command deploys Recipya on the Kubernetes cluster in the default configuration. The [Parameters](#parameters) section lists the parameters that can be configured during installation.
## Uninstalling the Chart
To uninstall/delete the `my-recipya` deployment:
```bash
helm uninstall recipya -n recipya
```
## Parameters
### Global parameters
| Name | Description | Value |
|--------------------------|--------------------------------------|-----------------|
| `image.repository` | Recipya image repository | `reaper99/recipya` |
| `image.tag` | Recipya image tag | `v1.2.2` |
| `image.pullPolicy` | Recipya image pull policy | `IfNotPresent` |
| `replicaCount` | Number of Recipya replicas | `1` |
| `revisionHistoryLimit` | Number of revisions to keep | `3` |
### Security parameters
| Name | Description | Value |
|-----------------------------------------|--------------------------------------------------|-----------|
| `podSecurityContext.fsGroup` | Group ID for the Recipya container | `1000` |
| `containerSecurityContext.runAsUser` | User ID for the Recipya container | `1000` |
| `containerSecurityContext.runAsGroup` | Group ID for the Recipya container | `1000` |
| `containerSecurityContext.runAsNonRoot` | Run containers as non-root | `true` |
### Recipya configuration parameters
| Name | Description | Value |
|-----------------------------------------|-------------------------------------------------------|----------------|
| `config.server.port` | Server port | `8078` |
| `config.server.autologin` | Whether to login automatically | `false` |
| `config.server.is_demo` | Whether the app is a demo version | `false` |
| `config.server.is_prod` | Whether the app is in production | `false` |
| `config.server.no_signups` | Whether to disable user account registrations | `false` |
| `config.server.url` | Base URL for the application | `http://0.0.0.0` |
| `config.email.address` | The email address for SendGrid | `""` |
| `config.email.sendgrid` | SendGrid API key | `""` |
| `config.documentIntelligence.endpoint` | Azure Document Intelligence endpoint | `""` |
| `config.documentIntelligence.key` | Azure Document Intelligence key | `""` |
### Service parameters
| Name | Description | Value |
|--------------------------|--------------------------------------------------|-------------|
| `service.type` | Recipya service type | `ClusterIP` |
| `service.port` | Recipya service port | `8078` |
### Ingress parameters
| Name | Description | Value |
|--------------------------|--------------------------------------------------|-------------|
| `ingress.enabled` | Enable ingress controller resource | `false` |
| `ingress.className` | IngressClass that will be used | `""` |
| `ingress.hosts[0].host` | Default host for the ingress resource | `chart-example.local` |
| `ingress.tls` | Create TLS Secret | `[]` |
### Persistence parameters
| Name | Description | Value |
|--------------------------------------|------------------------------------------|-----------|
| `persistence.enabled` | Enable persistence using PVC | `true` |
| `persistence.accessMode` | PVC Access Mode | `ReadWriteOnce` |
| `persistence.size` | PVC Storage Request | `1Gi` |
| `persistence.storageClass` | Storage class of backing PVC | `""` |
### Resource parameters
| Name | Description | Value |
|--------------------------|------------------------------------------|-----------|
| `resources.limits.cpu` | CPU limit | `500m` |
| `resources.limits.memory`| Memory limit | `512Mi` |
| `resources.requests.cpu` | CPU request | `100m` |
| `resources.requests.memory` | Memory request | `128Mi` |
## Using Existing Secrets
If you want to use existing secrets for sensitive data:
```yaml
config:
email:
existingSecret: "my-email-secret"
addressKey: "email"
sendgridKey: "sendgrid"
documentIntelligence:
existingSecret: "my-di-secret"
endpointKey: "di_endpoint"
keyKey: "di_key"
```
## Configuration
See the [Recipya documentation](https://recipes.musicavis.ca/docs/installation/docker/#environment-variables) for details on all available configuration options.

View File

@ -0,0 +1,62 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "recipya.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "recipya.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "recipya.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "recipya.labels" -}}
helm.sh/chart: {{ include "recipya.chart" . }}
{{ include "recipya.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "recipya.selectorLabels" -}}
app.kubernetes.io/name: {{ include "recipya.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{/*
Create the name of the service account to use
*/}}
{{- define "recipya.serviceAccountName" -}}
{{- if .Values.serviceAccount.create }}
{{- default (include "recipya.fullname" .) .Values.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.serviceAccount.name }}
{{- end }}
{{- end }}

View File

@ -0,0 +1,77 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ include "donetick.fullname" . }}-configmap
labels:
{{- include "donetick.labels" . | nindent 4 }}
data:
selfhosted.yaml: |
name: {{ .Values.config.name | quote }}
is_done_tick_dot_com: {{ .Values.config.is_done_tick_dot_com }}
is_user_creation_disabled: {{ .Values.config.is_user_creation_disabled }}
telegram:
token: {{ .Values.config.telegram.token | default "" | quote }}
pushover:
token: {{ .Values.config.pushover.token | default "" | quote }}
database:
type: {{ .Values.config.database.type | default "sqlite" | quote }}
migration: {{ .Values.config.database.migration }}
{{- if .Values.config.database.migration_skip }}
migration_skip: {{ .Values.config.database.migration_skip }}
{{- end }}
{{- if .Values.config.database.migration_retry }}
migration_retry: {{ .Values.config.database.migration_retry }}
{{- end }}
{{- if eq .Values.config.database.type "postgres" }}
{{- if not .Values.config.database.existingSecret }}
host: {{ .Values.config.database.host | quote }}
port: {{ .Values.config.database.port }}
user: {{ .Values.config.database.user | quote }}
password: {{ .Values.config.database.password | quote }}
name: {{ .Values.config.database.name | quote }}
{{- else }}
# Database credentials will be injected via environment variables from Secret
{{- end }}
{{- end }}
jwt:
{{- if .Values.config.jwt.existingSecret }}
# Secret will be injected from Secret
{{- else }}
secret: {{ .Values.config.jwt.secret | quote }}
{{- end }}
session_time: {{ .Values.config.jwt.session_time | quote }}
max_refresh: {{ .Values.config.jwt.max_refresh | quote }}
server:
port: {{ .Values.config.server.port }}
read_timeout: {{ .Values.config.server.read_timeout | quote }}
write_timeout: {{ .Values.config.server.write_timeout | quote }}
rate_period: {{ .Values.config.server.rate_period | quote }}
rate_limit: {{ .Values.config.server.rate_limit }}
cors_allow_origins:
{{- range .Values.config.server.cors_allow_origins }}
- {{ . | quote }}
{{- end }}
serve_frontend: {{ .Values.config.server.serve_frontend }}
scheduler_jobs:
due_job: {{ .Values.config.scheduler_jobs.due_job | quote }}
overdue_job: {{ .Values.config.scheduler_jobs.overdue_job | quote }}
pre_due_job: {{ .Values.config.scheduler_jobs.pre_due_job | quote }}
email:
host: {{ .Values.config.email.host | default "" | quote }}
port: {{ .Values.config.email.port | default "" | quote }}
key: {{ .Values.config.email.key | default "" | quote }}
email: {{ .Values.config.email.email | default "" | quote }}
appHost: {{ .Values.config.email.appHost | default "" | quote }}
oauth2:
{{- if .Values.config.oauth2.existingSecret }}
client_id: $DT_OAUTH2_CLIENT_ID
client_secret: $DT_OAUTH2_CLIENT_SECRET
{{- else }}
client_id: {{ .Values.config.oauth2.client_id | default "" | quote }}
client_secret: {{ .Values.config.oauth2.client_secret | default "" | quote }}
{{- end }}
auth_url: {{ .Values.config.oauth2.auth_url | default "" | quote }}
token_url: {{ .Values.config.oauth2.token_url | default "" | quote }}
user_info_url: {{ .Values.config.oauth2.user_info_url | default "" | quote }}
redirect_url: {{ .Values.config.oauth2.redirect_url | default "" | quote }}
name: {{ .Values.config.oauth2.name | default "" | quote }}

View File

@ -0,0 +1,179 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "recipya.fullname" . }}
labels:
{{- include "recipya.labels" . | nindent 4 }}
annotations:
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
checksum/secret: {{ include (print $.Template.BasePath "/secret.yaml") . | sha256sum }}
spec:
replicas: {{ .Values.replicaCount }}
revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
selector:
matchLabels:
{{- include "recipya.selectorLabels" . | nindent 6 }}
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
template:
metadata:
labels:
{{- include "recipya.selectorLabels" . | nindent 8 }}
annotations:
{{- with .Values.podAnnotations }}
{{- toYaml . | nindent 8 }}
{{- end }}
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
containers:
- name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.containerSecurityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
{{- if .Values.startupArgs }}
args:
{{- range .Values.startupArgs }}
- {{ . | quote }}
{{- end }}
{{- end }}
ports:
- name: http
containerPort: {{ .Values.config.server.port }}
protocol: TCP
{{- if .Values.probes.liveness.enabled }}
livenessProbe:
httpGet:
path: {{ .Values.probes.liveness.path }}
port: http
initialDelaySeconds: {{ .Values.probes.liveness.initialDelaySeconds }}
periodSeconds: {{ .Values.probes.liveness.periodSeconds }}
timeoutSeconds: {{ .Values.probes.liveness.timeoutSeconds }}
failureThreshold: {{ .Values.probes.liveness.failureThreshold }}
successThreshold: {{ .Values.probes.liveness.successThreshold }}
{{- end }}
{{- if .Values.probes.readiness.enabled }}
readinessProbe:
httpGet:
path: {{ .Values.probes.readiness.path }}
port: http
initialDelaySeconds: {{ .Values.probes.readiness.initialDelaySeconds }}
periodSeconds: {{ .Values.probes.readiness.periodSeconds }}
timeoutSeconds: {{ .Values.probes.readiness.timeoutSeconds }}
failureThreshold: {{ .Values.probes.readiness.failureThreshold }}
successThreshold: {{ .Values.probes.readiness.successThreshold }}
{{- end }}
env:
- name: RECIPYA_SERVER_PORT
value: {{ .Values.config.server.port | quote }}
- name: RECIPYA_SERVER_URL
value: {{ .Values.config.server.url | quote }}
- name: RECIPYA_SERVER_AUTOLOGIN
value: {{ .Values.config.server.autologin | quote }}
- name: RECIPYA_SERVER_IS_DEMO
value: {{ .Values.config.server.is_demo | quote }}
- name: RECIPYA_SERVER_IS_PROD
value: {{ .Values.config.server.is_prod | quote }}
- name: RECIPYA_SERVER_NO_SIGNUPS
value: {{ .Values.config.server.no_signups | quote }}
{{- if .Values.config.email.existingSecret }}
- name: RECIPYA_EMAIL
valueFrom:
secretKeyRef:
name: {{ .Values.config.email.existingSecret }}
key: {{ .Values.config.email.addressKey }}
- name: RECIPYA_EMAIL_SENDGRID
valueFrom:
secretKeyRef:
name: {{ .Values.config.email.existingSecret }}
key: {{ .Values.config.email.sendgridKey }}
{{- else }}
- name: RECIPYA_EMAIL
valueFrom:
secretKeyRef:
name: {{ include "recipya.fullname" . }}-secrets
key: {{ .Values.config.email.addressKey }}
- name: RECIPYA_EMAIL_SENDGRID
valueFrom:
secretKeyRef:
name: {{ include "recipya.fullname" . }}-secrets
key: {{ .Values.config.email.sendgridKey }}
{{- end }}
{{- if .Values.config.documentIntelligence.existingSecret }}
- name: RECIPYA_DI_ENDPOINT
valueFrom:
secretKeyRef:
name: {{ .Values.config.documentIntelligence.existingSecret }}
key: {{ .Values.config.documentIntelligence.endpointKey }}
- name: RECIPYA_DI_KEY
valueFrom:
secretKeyRef:
name: {{ .Values.config.documentIntelligence.existingSecret }}
key: {{ .Values.config.documentIntelligence.keyKey }}
{{- else }}
- name: RECIPYA_DI_ENDPOINT
valueFrom:
secretKeyRef:
name: {{ include "recipya.fullname" . }}-secrets
key: {{ .Values.config.documentIntelligence.endpointKey }}
- name: RECIPYA_DI_KEY
valueFrom:
secretKeyRef:
name: {{ include "recipya.fullname" . }}-secrets
key: {{ .Values.config.documentIntelligence.keyKey }}
{{- end }}
{{- range .Values.env }}
- name: {{ .name }}
value: {{ .value | quote }}
{{- end }}
{{- with .Values.extraEnv }}
{{- toYaml . | nindent 12 }}
{{- end }}
volumeMounts:
- name: data
mountPath: /home/recipya/.config/Recipya
{{- if not .Values.containerSecurityContext.readOnlyRootFilesystem }}
- name: tmp
mountPath: /tmp
{{- end }}
{{- with .Values.extraVolumeMounts }}
{{- toYaml . | nindent 12 }}
{{- end }}
resources:
{{- toYaml .Values.resources | nindent 12 }}
volumes:
- name: data
persistentVolumeClaim:
claimName: {{ include "recipya.fullname" . }}-data
{{- if not .Values.containerSecurityContext.readOnlyRootFilesystem }}
- name: tmp
emptyDir: {}
{{- end }}
{{- with .Values.extraVolumes }}
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}

View File

@ -0,0 +1,43 @@
{{- if .Values.ingress.enabled -}}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ include "donetick.fullname" . }}
labels:
{{- include "donetick.labels" . | nindent 4 }}
{{- with .Values.ingress.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
{{- if .Values.ingress.className }}
ingressClassName: {{ .Values.ingress.className }}
{{- end }}
{{- if .Values.ingress.tls }}
tls:
{{- range .Values.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . | quote }}
{{- end }}
{{- if .secretName }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
{{- end }}
rules:
{{- range .Values.ingress.hosts }}
- host: {{ .host | quote }}
http:
paths:
{{- range .paths }}
- path: {{ .path }}
pathType: {{ .pathType }}
backend:
service:
name: {{ include "donetick.fullname" $ }}
port:
number: {{ $.Values.service.port }}
{{- end }}
{{- end }}
{{- end }}

View File

@ -0,0 +1,21 @@
{{- if .Values.persistence.enabled }}
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ include "recipya.fullname" . }}-data
labels:
{{- include "recipya.labels" . | nindent 4 }}
{{- with .Values.persistence.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
accessModes:
- {{ .Values.persistence.accessMode | quote }}
{{- if .Values.persistence.storageClass }}
storageClassName: {{ .Values.persistence.storageClass | quote }}
{{- end }}
resources:
requests:
storage: {{ .Values.persistence.size | quote }}
{{- end }}

View File

@ -0,0 +1,17 @@
apiVersion: v1
kind: Secret
metadata:
name: {{ include "recipya.fullname" . }}-secrets
labels:
{{- include "recipya.labels" . | nindent 4 }}
type: Opaque
data:
{{- if not .Values.config.email.existingSecret }}
{{ .Values.config.email.addressKey }}: {{ .Values.config.email.address | b64enc }}
{{ .Values.config.email.sendgridKey }}: {{ .Values.config.email.sendgrid | b64enc }}
{{- end }}
{{- if not .Values.config.documentIntelligence.existingSecret }}
{{ .Values.config.documentIntelligence.endpointKey }}: {{ .Values.config.documentIntelligence.endpoint | b64enc }}
{{ .Values.config.documentIntelligence.keyKey }}: {{ .Values.config.documentIntelligence.key | b64enc }}
{{- end }}

View File

@ -0,0 +1,15 @@
apiVersion: v1
kind: Service
metadata:
name: {{ include "recipya.fullname" . }}
labels:
{{- include "recipya.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.port }}
targetPort: http
protocol: TCP
name: http
selector:
{{- include "recipya.selectorLabels" . | nindent 4 }}

139
charts/recipya/values.yaml Normal file
View File

@ -0,0 +1,139 @@
# Default values for recipya.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
revisionHistoryLimit: 3
image:
repository: reaper99/recipya
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
tag: "v1.2.2"
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
# Security context for the pod
podSecurityContext:
fsGroup: 1000
# Security context for the container
containerSecurityContext:
capabilities:
drop:
- ALL
readOnlyRootFilesystem: false
runAsNonRoot: true
runAsUser: 1000
runAsGroup: 1000
# Service configuration
service:
type: ClusterIP
port: 8078
# Ingress configuration
ingress:
enabled: false
className: ""
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
hosts:
- host: chart-example.local
paths:
- path: /
pathType: ImplementationSpecific
tls: []
# - secretName: chart-example-tls
# hosts:
# - chart-example.local
# Persistent volume claim
persistence:
enabled: true
accessMode: ReadWriteOnce
size: 1Gi
# storageClass: ""
annotations: {}
# Resource limits and requests
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 100m
memory: 128Mi
# Node selector
nodeSelector: {}
# Tolerations
tolerations: []
# Affinity
affinity: {}
# Additional pod annotations
podAnnotations: {}
# Startup arguments
startupArgs: []
# Additional environment variables
env: []
# Extra environment variables
extraEnv: []
# Extra volume mounts
extraVolumeMounts: []
# Extra volumes
extraVolumes: []
# Probes configuration
probes:
liveness:
enabled: true
path: /health
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
successThreshold: 1
readiness:
enabled: true
path: /health
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
successThreshold: 1
# Recipya configuration
config:
email:
address: ""
sendgrid: ""
existingSecret: ""
addressKey: "email"
sendgridKey: "sendgrid"
documentIntelligence:
endpoint: ""
key: ""
existingSecret: ""
endpointKey: "di_endpoint"
keyKey: "di_key"
server:
port: 8078
autologin: false
is_demo: false
is_prod: false
no_signups: false
url: "http://0.0.0.0"

View File

@ -1,603 +0,0 @@
apiVersion: v1
entries:
donetick:
- apiVersion: v2
appVersion: v0.1.60
created: "2025-12-19T08:04:26.061195717Z"
description: Donetick helm chart for Kubernetes
digest: db8335722a16bee17008af24490ddfb1ab1495a08bb71366eefbab0360cfffce
home: https://github.com/rtomik/helm-charts
keywords:
- productivity
- task-management
- donetick
maintainers:
- email: no@m.com
name: Richard Tomik
name: donetick
sources:
- https://github.com/donetick/donetick
type: application
urls:
- https://github.com/rtomik/helm-charts/releases/download/donetick-1.0.6/donetick-1.0.6.tgz
version: 1.0.6
- apiVersion: v2
appVersion: v0.1.60
created: "2025-12-19T08:00:40.907754382Z"
description: Donetick helm chart for Kubernetes
digest: 80dac9a72b49189c3142edc96c6da6777f11442b8bdeafd12c9bdd03c9175e94
home: https://github.com/rtomik/helm-charts
keywords:
- productivity
- task-management
- donetick
maintainers:
- email: no@m.com
name: Richard Tomik
name: donetick
sources:
- https://github.com/donetick/donetick
type: application
urls:
- https://github.com/rtomik/helm-charts/releases/download/donetick-1.0.5/donetick-1.0.5.tgz
version: 1.0.5
- apiVersion: v2
appVersion: v0.1.60
created: "2025-10-11T12:29:42.89240886Z"
description: Donetick helm chart for Kubernetes
digest: 3fe3acaa51e3032e07461fee7908e9fc49bfa5d5cf345dc30fac0b3dc9ad9861
home: https://github.com/rtomik/helm-charts
keywords:
- productivity
- task-management
- donetick
maintainers:
- email: no@m.com
name: Richard Tomik
name: donetick
sources:
- https://github.com/donetick/donetick
type: application
urls:
- https://github.com/rtomik/helm-charts/releases/download/donetick-1.0.4/donetick-1.0.4.tgz
version: 1.0.4
- apiVersion: v2
appVersion: v0.1.60
created: "2025-09-22T07:20:10.01319231Z"
description: Donetick helm chart for Kubernetes
digest: dd2236355c8ae50c58d16ebb24d3ebb2b5c0603db506a66ddef1ad0eca743f5c
home: https://github.com/rtomik/helm-charts
keywords:
- productivity
- task-management
- donetick
maintainers:
- email: no@m.com
name: Richard Tomik
name: donetick
sources:
- https://github.com/donetick/donetick
type: application
urls:
- https://github.com/rtomik/helm-charts/releases/download/donetick-1.0.3/donetick-1.0.3.tgz
version: 1.0.3
- apiVersion: v2
appVersion: v0.1.60
created: "2025-09-21T16:31:19.924543112Z"
description: Donetick helm chart for Kubernetes
digest: fc7ccc426e35c53262a2b43f2f0c55dd4b8e973eac0f05fdee8e1ded410e02d3
home: https://github.com/rtomik/helm-charts
keywords:
- productivity
- task-management
- donetick
maintainers:
- email: no@m.com
name: Richard Tomik
name: donetick
sources:
- https://github.com/donetick/donetick
type: application
urls:
- https://github.com/rtomik/helm-charts/releases/download/donetick-1.0.2/donetick-1.0.2.tgz
version: 1.0.2
- apiVersion: v2
appVersion: latest
created: "2025-03-23T19:40:46.687161338Z"
description: A Helm chart for Donetick application
digest: c329ed38e81d0d9ae58bfc538f874c138aff0765aee95974d5ee55153c5a349d
home: https://github.com/rtomik/helm-charts
keywords:
- productivity
- task-management
- donetick
maintainers:
- email: no@m.com
name: Richard Tomik
name: donetick
sources:
- https://github.com/donetick/donetick
type: application
urls:
- https://github.com/rtomik/helm-charts/releases/download/donetick-1.0.1/donetick-1.0.1.tgz
version: 1.0.1
- apiVersion: v2
appVersion: latest
created: "2025-03-23T16:33:06.71881941Z"
description: A Helm chart for Donetick application
digest: a1efd17c56b4c7bc4560799a2752c41b379fdd7d57799cd9e764ff83baf00a9f
home: https://github.com/rtomik/helm-charts
keywords:
- productivity
- task-management
- donetick
maintainers:
- email: no@m.com
name: Richard Tomik
name: donetick
sources:
- https://github.com/donetick/donetick
type: application
urls:
- https://github.com/rtomik/helm-charts/releases/download/donetick-1.0.0/donetick-1.0.0.tgz
version: 1.0.0
jellyseerr:
- apiVersion: v2
appVersion: 2.5.2
created: "2025-04-23T14:10:23.282104137Z"
description: A Helm chart for Jellyseerr - A fork of Overseerr for Jellyfin support
digest: aa76f1e2218c366bf982829b1214adb960e13d75afbf2bb5d724d85e3cd5ffbe
home: https://github.com/rtomik/helm-charts
keywords:
- jellyseerr
- jellyfin
- media-requests
maintainers:
- email: no@m.com
name: Richard Tomik
name: jellyseerr
sources:
- https://github.com/fallenbagel/jellyseerr
type: application
urls:
- https://github.com/rtomik/helm-charts/releases/download/jellyseerr-0.0.1/jellyseerr-0.0.1.tgz
version: 0.0.1
joplin-server:
- apiVersion: v2
appVersion: 3.4.2
created: "2025-08-25T07:08:49.836391167Z"
description: Joplin Server helm chart for Kubernetes - Note-taking and synchronization
server
digest: ddda74db0e8932e9b8b99f36750247d32023f28f08b629a3f436e96e3fab176d
home: https://github.com/rtomik/helm-charts
keywords:
- notes
- synchronization
- joplin
- productivity
maintainers:
- email: no@m.com
name: Richard Tomik
name: joplin-server
sources:
- https://github.com/laurent22/joplin
type: application
urls:
- https://github.com/rtomik/helm-charts/releases/download/joplin-server-0.0.2/joplin-server-0.0.2.tgz
version: 0.0.2
- apiVersion: v2
appVersion: 3.4.2
created: "2025-08-24T19:47:44.388111779Z"
description: Joplin Server helm chart for Kubernetes - Note-taking and synchronization
server
digest: ff23c9010e0525801a896dd675062bd211a37b939fba2b064ec36557e57e2afd
home: https://github.com/rtomik/helm-charts
keywords:
- notes
- synchronization
- joplin
- productivity
maintainers:
- email: no@m.com
name: Richard Tomik
name: joplin-server
sources:
- https://github.com/laurent22/joplin
type: application
urls:
- https://github.com/rtomik/helm-charts/releases/download/joplin-server-0.0.1/joplin-server-0.0.1.tgz
version: 0.0.1
karakeep:
- apiVersion: v2
appVersion: 0.26.0
created: "2025-08-11T09:26:46.502241589Z"
description: Karakeep helm chart for Kubernetes
digest: 33f33c0b06a6dcd78a368f1efd0de0f513695e1bca3a7c44de44a9dc44bc7f31
home: https://github.com/rtomik/helm-charts
keywords:
- bookmark-manager
- karakeep
- productivity
maintainers:
- email: no@m.com
name: Richard Tomik
name: karakeep
sources:
- https://github.com/karakeep-app/karakeep
type: application
urls:
- https://github.com/rtomik/helm-charts/releases/download/karakeep-0.0.1/karakeep-0.0.1.tgz
version: 0.0.1
mealie:
- apiVersion: v2
appVersion: v3.2.1
created: "2025-09-20T17:32:03.081655195Z"
description: Mealie helm chart for Kubernetes - Recipe management and meal planning
digest: 5ecd223cdb9698fbfde993aa651a349b18354dbdd7103baa6dc900cb76c5daeb
home: https://github.com/rtomik/helm-charts
keywords:
- recipe-management
- meal-planning
- cooking
- mealie
maintainers:
- email: no@m.com
name: Richard Tomik
name: mealie
sources:
- https://github.com/mealie-recipes/mealie
type: application
urls:
- https://github.com/rtomik/helm-charts/releases/download/mealie-0.0.2/mealie-0.0.2.tgz
version: 0.0.2
- apiVersion: v2
appVersion: v3.1.1
created: "2025-08-24T13:45:44.332587789Z"
description: Mealie helm chart for Kubernetes - Recipe management and meal planning
digest: 3902f00396fc48249d6d73be6850736418683ea87f0e64f14ac97ed77df97223
home: https://github.com/rtomik/helm-charts
keywords:
- recipe-management
- meal-planning
- cooking
- mealie
maintainers:
- email: no@m.com
name: Richard Tomik
name: mealie
sources:
- https://github.com/mealie-recipes/mealie
type: application
urls:
- https://github.com/rtomik/helm-charts/releases/download/mealie-0.0.1/mealie-0.0.1.tgz
version: 0.0.1
norish:
- apiVersion: v2
appVersion: v0.15.4-beta
created: "2026-02-03T18:42:43.545257531Z"
description: Norish helm chart for Kubernetes - A recipe management and meal planning
application
digest: ecdb4c612a2a2a1c48a4ead9eb1884b58b02e667138283c14e118464986ce790
home: https://github.com/rtomik/helm-charts
keywords:
- recipe
- meal-planning
- food
- norish
maintainers:
- email: no@m.com
name: Richard Tomik
name: norish
sources:
- https://github.com/norishapp/norish
type: application
urls:
- https://github.com/rtomik/helm-charts/releases/download/norish-0.0.5/norish-0.0.5.tgz
version: 0.0.5
- apiVersion: v2
appVersion: v0.14.1-beta
created: "2025-12-22T11:28:20.190188003Z"
description: Norish helm chart for Kubernetes - A recipe management and meal planning
application
digest: 5d337d3d59d317ff8f3f3bd2399908bea7156ddc6dce9c2e2fa0ea917f7a00e6
home: https://github.com/rtomik/helm-charts
keywords:
- recipe
- meal-planning
- food
- norish
maintainers:
- email: no@m.com
name: Richard Tomik
name: norish
sources:
- https://github.com/norishapp/norish
type: application
urls:
- https://github.com/rtomik/helm-charts/releases/download/norish-0.0.4/norish-0.0.4.tgz
version: 0.0.4
- apiVersion: v2
appVersion: v0.13.6-beta
created: "2025-12-11T12:05:26.600624557Z"
description: Norish helm chart for Kubernetes - A recipe management and meal planning
application
digest: 09c826419132f07967dcaf636880f2052c642c00a3242258cc5e168625fb7deb
home: https://github.com/rtomik/helm-charts
keywords:
- recipe
- meal-planning
- food
- norish
maintainers:
- email: no@m.com
name: Richard Tomik
name: norish
sources:
- https://github.com/norishapp/norish
type: application
urls:
- https://github.com/rtomik/helm-charts/releases/download/norish-0.0.3/norish-0.0.3.tgz
version: 0.0.3
- apiVersion: v2
appVersion: v0.13.6-beta
created: "2025-12-11T11:40:33.166127926Z"
description: Norish helm chart for Kubernetes - A recipe management and meal planning
application
digest: 825e537d9d3bf8002fb6404c0635d42abf7ef5b4fc295a2e7e89f6d028f95380
home: https://github.com/rtomik/helm-charts
keywords:
- recipe
- meal-planning
- food
- norish
maintainers:
- email: no@m.com
name: Richard Tomik
name: norish
sources:
- https://github.com/norishapp/norish
type: application
urls:
- https://github.com/rtomik/helm-charts/releases/download/norish-0.0.2/norish-0.0.2.tgz
version: 0.0.2
- apiVersion: v2
appVersion: v0.13.6-beta
created: "2025-12-08T16:03:08.591776383Z"
description: Norish helm chart for Kubernetes - A recipe management and meal planning
application
digest: 46e868403af3139834d5c8b604ca664b7afb00c592e8fafd2fd883e04249e2ad
home: https://github.com/rtomik/helm-charts
keywords:
- recipe
- meal-planning
- food
- norish
maintainers:
- email: no@m.com
name: Richard Tomik
name: norish
sources:
- https://github.com/norishapp/norish
type: application
urls:
- https://github.com/rtomik/helm-charts/releases/download/norish-0.0.1/norish-0.0.1.tgz
version: 0.0.1
paperless-ngx:
- apiVersion: v2
appVersion: 2.20.3
created: "2025-12-19T09:39:18.023881864Z"
description: Paperless-ngx helm chart for Kubernetes
digest: 13bbf443911cd452eec242202b2417548feec4705c2f82d16bdf868cd095e84d
home: https://github.com/rtomik/helm-charts
keywords:
- productivity
- document-management
- paperless
- paperless-ngx
- ocr
maintainers:
- email: richard.tomik@proton.me
name: Richard Tomik
name: paperless-ngx
sources:
- https://github.com/paperless-ngx/paperless-ngx
type: application
urls:
- https://github.com/rtomik/helm-charts/releases/download/paperless-ngx-0.0.5/paperless-ngx-0.0.5.tgz
version: 0.0.5
- apiVersion: v2
appVersion: 2.20.3
created: "2025-12-19T08:00:41.057848966Z"
description: Paperless-ngx helm chart for Kubernetes
digest: badf4e22d33f2033f4051208ec977b2d90fb85d494833c193774837ea4665c6d
home: https://github.com/rtomik/helm-charts
keywords:
- productivity
- document-management
- paperless
- paperless-ngx
- ocr
maintainers:
- email: richard.tomik@proton.me
name: Richard Tomik
name: paperless-ngx
sources:
- https://github.com/paperless-ngx/paperless-ngx
type: application
urls:
- https://github.com/rtomik/helm-charts/releases/download/paperless-ngx-0.0.4/paperless-ngx-0.0.4.tgz
version: 0.0.4
- apiVersion: v2
appVersion: latest
created: "2025-12-17T15:14:19.979561503Z"
description: Paperless-ngx helm chart for Kubernetes
digest: 128cef6e4a4c33355428c59176c359796a83c3501c9f15e810179e0308f4455d
home: https://github.com/rtomik/helm-charts
keywords:
- productivity
- document-management
- paperless
- paperless-ngx
- ocr
maintainers:
- email: richard.tomik@proton.me
name: Richard Tomik
name: paperless-ngx
sources:
- https://github.com/paperless-ngx/paperless-ngx
type: application
urls:
- https://github.com/rtomik/helm-charts/releases/download/paperless-ngx-0.0.3/paperless-ngx-0.0.3.tgz
version: 0.0.3
- apiVersion: v2
appVersion: latest
created: "2025-10-26T17:28:45.582847258Z"
description: Paperless-ngx helm chart for Kubernetes
digest: 90a453be0cd5d51c6046a8a1b18b4adaff4f3625f074b34baa4693a53feccee3
home: https://github.com/rtomik/helm-charts
keywords:
- productivity
- document-management
- paperless
- paperless-ngx
- ocr
maintainers:
- email: no@m.com
name: Richard Tomik
name: paperless-ngx
sources:
- https://github.com/paperless-ngx/paperless-ngx
type: application
urls:
- https://github.com/rtomik/helm-charts/releases/download/paperless-ngx-0.0.2/paperless-ngx-0.0.2.tgz
version: 0.0.2
- apiVersion: v2
appVersion: latest
created: "2025-09-14T15:37:38.315542356Z"
description: Paperless-ngx helm chart for Kubernetes
digest: b643e87a7ae994a26476233489b3259375aef04925ff914c9038bd2ba38758a6
home: https://github.com/rtomik/helm-charts
keywords:
- productivity
- document-management
- paperless
- paperless-ngx
- ocr
maintainers:
- email: no@m.com
name: Richard Tomik
name: paperless-ngx
sources:
- https://github.com/paperless-ngx/paperless-ngx
type: application
urls:
- https://github.com/rtomik/helm-charts/releases/download/paperless-ngx-0.0.1/paperless-ngx-0.0.1.tgz
version: 0.0.1
qbittorrent-vpn:
- apiVersion: v2
appVersion: 5.1.0
created: "2025-12-17T15:00:03.267114143Z"
description: qBittorrent with Gluetun VPN sidecar for Kubernetes
digest: 92c931f41791bef6dc879f73606096d7286c3fbe6f7f3b8df2700116e65c0db7
home: https://github.com/rtomik/helm-charts
keywords:
- qbittorrent
- vpn
- gluetun
- torrent
maintainers:
- email: richard.tomik@proton.me
name: Richard Tomik
name: qbittorrent-vpn
sources:
- https://github.com/linuxserver/docker-qbittorrent
- https://github.com/qdm12/gluetun
type: application
urls:
- https://github.com/rtomik/helm-charts/releases/download/qbittorrent-vpn-0.0.2/qbittorrent-vpn-0.0.2.tgz
version: 0.0.2
- apiVersion: v2
appVersion: 5.1.0
created: "2025-05-13T20:13:31.370418675Z"
description: qBittorrent with Gluetun VPN sidecar for Kubernetes
digest: 9736b2f3dcce5d32f39225138d78a621b3e2528e3283b36ef12bf2a91aa66c12
home: https://github.com/rtomik/helm-charts
keywords:
- qbittorrent
- vpn
- gluetun
- torrent
maintainers:
- email: richard.tomik@proton.me
name: Richard Tomik
name: qbittorrent-vpn
sources:
- https://github.com/linuxserver/docker-qbittorrent
- https://github.com/qdm12/gluetun
type: application
urls:
- https://github.com/rtomik/helm-charts/releases/download/qbittorrent-vpn-0.0.1/qbittorrent-vpn-0.0.1.tgz
version: 0.0.1
recipya:
- apiVersion: v2
appVersion: v1.2.2
created: "2025-04-05T20:58:53.611303005Z"
description: A Helm chart for Recipya recipe manager application
digest: 1ba5f92cd205cc226d1894d194287ab8576c18717f2318642af22a88d5d6a930
home: https://github.com/rtomik/helm-charts
keywords:
- recipe-manager
- recipya
maintainers:
- email: no@m.com
name: Richard Tomik
name: recipya
sources:
- https://github.com/reaper47/recipya
type: application
urls:
- https://github.com/rtomik/helm-charts/releases/download/recipya-0.0.2/recipya-0.0.2.tgz
version: 0.0.2
- apiVersion: v2
appVersion: v1.2.2
created: "2025-04-05T16:38:37.863551239Z"
description: A Helm chart for Recipya recipe manager application
digest: fb46f78e7036f5d76f88f405caf49108547110374f1cebea7ab91c75add46e9d
home: https://github.com/rtomik/helm-charts
keywords:
- recipe-manager
- recipya
maintainers:
- email: no@m.com
name: Richard Tomik
name: recipya
sources:
- https://github.com/reaper47/recipya
type: application
urls:
- https://github.com/rtomik/helm-charts/releases/download/recipya-0.0.1/recipya-0.0.1.tgz
version: 0.0.1
tandoor:
- apiVersion: v2
appVersion: 2.3.5
created: "2025-12-08T16:03:08.770752883Z"
description: Tandoor Recipes - A recipe management application for Kubernetes
digest: be976d7d0721821bdc34635aefd6492bb417a2726a90fa4f858c2e4b248a4105
home: https://github.com/rtomik/helm-charts
keywords:
- recipes
- cooking
- meal-planning
- tandoor
- food
maintainers:
- email: no@m.com
name: Richard Tomik
name: tandoor
sources:
- https://github.com/TandoorRecipes/recipes
type: application
urls:
- https://github.com/rtomik/helm-charts/releases/download/tandoor-0.0.1/tandoor-0.0.1.tgz
version: 0.0.1
generated: "2026-02-03T18:42:43.545311992Z"