feat: add more
All checks were successful
lint-test-docker / lint-docker-compose (pull_request) Successful in 1m8s
lint-test-helm / lint-helm (pull_request) Successful in 9m3s
lint-test-helm / validate-kubeconform (pull_request) Successful in 10m26s

This commit is contained in:
2026-04-22 19:14:38 -05:00
parent 8282c9a8fb
commit 134ce4ae01
22 changed files with 252 additions and 201 deletions

View File

@@ -2,40 +2,40 @@
apiVersion: external-secrets.io/v1 apiVersion: external-secrets.io/v1
kind: ExternalSecret kind: ExternalSecret
metadata: metadata:
name: ollama-key-secret name: open-webui-key
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
labels: labels:
app.kubernetes.io/name: ollama-key-secret app.kubernetes.io/name: open-webui-key
{{- include "custom.labels" . | nindent 4 }} {{- include "custom.labels" . | nindent 4 }}
spec: spec:
secretStoreRef: secretStoreRef:
kind: ClusterSecretStore kind: ClusterSecretStore
name: vault name: openbao
data: data:
- secretKey: key - secretKey: key
remoteRef: remoteRef:
key: /cl01tl/ollama/key key: /cl01tl/ollama/open-webui/key
property: key property: key
--- ---
apiVersion: external-secrets.io/v1 apiVersion: external-secrets.io/v1
kind: ExternalSecret kind: ExternalSecret
metadata: metadata:
name: ollama-oidc-secret name: open-webui-oidc-authentik
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
labels: labels:
app.kubernetes.io/name: ollama-oidc-secret app.kubernetes.io/name: open-webui-oidc-authentik
{{- include "custom.labels" . | nindent 4 }} {{- include "custom.labels" . | nindent 4 }}
spec: spec:
secretStoreRef: secretStoreRef:
kind: ClusterSecretStore kind: ClusterSecretStore
name: vault name: openbao
data: data:
- secretKey: client - secretKey: client
remoteRef: remoteRef:
key: /authentik/oidc/ollama key: /cl01tl/authentik/oidc/open-webui
property: client property: client
- secretKey: secret - secretKey: secret
remoteRef: remoteRef:
key: /authentik/oidc/ollama key: /cl01tl/authentik/oidc/open-webui
property: secret property: secret

View File

@@ -127,7 +127,7 @@ ollama:
- name: WEBUI_SECRET_KEY - name: WEBUI_SECRET_KEY
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: ollama-key-secret name: ollama-key
key: key key: key
- name: DATABASE_URL - name: DATABASE_URL
valueFrom: valueFrom:
@@ -143,12 +143,12 @@ ollama:
- name: OAUTH_CLIENT_SECRET - name: OAUTH_CLIENT_SECRET
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: ollama-oidc-secret name: open-webui-oidc-authentik
key: secret key: secret
- name: OAUTH_CLIENT_ID - name: OAUTH_CLIENT_ID
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: ollama-oidc-secret name: open-webui-oidc-authentik
key: client key: client
- name: OAUTH_PROVIDER_NAME - name: OAUTH_PROVIDER_NAME
value: Authentik value: Authentik

View File

@@ -1,9 +1,9 @@
apiVersion: v1 apiVersion: v1
kind: Namespace kind: Namespace
metadata: metadata:
name: openbao name: {{ .Release.Namespace }}
labels: labels:
app.kubernetes.io/name: openbao app.kubernetes.io/name: {{ .Release.Namespace }}
{{- include "custom.labels" . | nindent 4 }} {{- include "custom.labels" . | nindent 4 }}
pod-security.kubernetes.io/audit: privileged pod-security.kubernetes.io/audit: privileged
pod-security.kubernetes.io/enforce: privileged pod-security.kubernetes.io/enforce: privileged

View File

@@ -1,15 +1,15 @@
apiVersion: external-secrets.io/v1 apiVersion: external-secrets.io/v1
kind: ExternalSecret kind: ExternalSecret
metadata: metadata:
name: outline-key-secret name: outline-key
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
labels: labels:
app.kubernetes.io/name: outline-key-secret app.kubernetes.io/name: outline-key
{{- include "custom.labels" . | nindent 4 }} {{- include "custom.labels" . | nindent 4 }}
spec: spec:
secretStoreRef: secretStoreRef:
kind: ClusterSecretStore kind: ClusterSecretStore
name: vault name: openbao
data: data:
- secretKey: secret-key - secretKey: secret-key
remoteRef: remoteRef:
@@ -24,21 +24,21 @@ spec:
apiVersion: external-secrets.io/v1 apiVersion: external-secrets.io/v1
kind: ExternalSecret kind: ExternalSecret
metadata: metadata:
name: outline-oidc-secret name: outline-oidc-authentik
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
labels: labels:
app.kubernetes.io/name: outline-oidc-secret app.kubernetes.io/name: outline-oidc-authentik
{{- include "custom.labels" . | nindent 4 }} {{- include "custom.labels" . | nindent 4 }}
spec: spec:
secretStoreRef: secretStoreRef:
kind: ClusterSecretStore kind: ClusterSecretStore
name: vault name: openbao
data: data:
- secretKey: client - secretKey: client
remoteRef: remoteRef:
key: /authentik/oidc/outline key: /cl01tl/authentik/oidc/outline
property: client property: client
- secretKey: secret - secretKey: secret
remoteRef: remoteRef:
key: /authentik/oidc/outline key: /cl01tl/authentik/oidc/outline
property: secret property: secret

View File

@@ -22,12 +22,12 @@ outline:
- name: SECRET_KEY - name: SECRET_KEY
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: outline-key-secret name: outline-key
key: secret-key key: secret-key
- name: UTILS_SECRET - name: UTILS_SECRET
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: outline-key-secret name: outline-key
key: utils-key key: utils-key
- name: POSTGRES_USERNAME - name: POSTGRES_USERNAME
valueFrom: valueFrom:
@@ -89,12 +89,12 @@ outline:
- name: OIDC_CLIENT_ID - name: OIDC_CLIENT_ID
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: outline-oidc-secret name: outline-oidc-authentik
key: client key: client
- name: OIDC_CLIENT_SECRET - name: OIDC_CLIENT_SECRET
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: outline-oidc-secret name: outline-oidc-authentik
key: secret key: secret
- name: OIDC_AUTH_URI - name: OIDC_AUTH_URI
value: https://auth.alexlebens.dev/application/o/authorize/ value: https://auth.alexlebens.dev/application/o/authorize/

View File

@@ -1,51 +1,58 @@
apiVersion: external-secrets.io/v1 apiVersion: external-secrets.io/v1
kind: ExternalSecret kind: ExternalSecret
metadata: metadata:
name: paperless-ngx-secret name: paperless-ngx-key
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
labels: labels:
app.kubernetes.io/name: paperless-ngx-secret app.kubernetes.io/name: paperless-ngx-key
{{- include "custom.labels" . | nindent 4 }} {{- include "custom.labels" . | nindent 4 }}
spec: spec:
secretStoreRef: secretStoreRef:
kind: ClusterSecretStore kind: ClusterSecretStore
name: vault name: openbao
data: data:
- secretKey: secret-key - secretKey: secret-key
remoteRef: remoteRef:
key: /cl01tl/paperless-ngx/secret key: /cl01tl/paperless-ngx/key
property: secret-key property: secret-key
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: paperless-ngx-config
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: paperless-ngx-config
{{- include "custom.labels" . | nindent 4 }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: openbao
data:
- secretKey: admin-user - secretKey: admin-user
remoteRef: remoteRef:
key: /cl01tl/paperless-ngx/secret key: /cl01tl/paperless-ngx/config
property: admin-user property: admin-user
- secretKey: admin-password - secretKey: admin-password
remoteRef: remoteRef:
key: /cl01tl/paperless-ngx/secret key: /cl01tl/paperless-ngx/config
property: admin-password property: admin-password
--- ---
apiVersion: external-secrets.io/v1 apiVersion: external-secrets.io/v1
kind: ExternalSecret kind: ExternalSecret
metadata: metadata:
name: paperless-ngx-oidc-secret name: paperless-ngx-oidc-authentik
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
labels: labels:
app.kubernetes.io/name: paperless-ngx-oidc-secret app.kubernetes.io/name: paperless-ngx-oidc-authentik
{{- include "custom.labels" . | nindent 4 }} {{- include "custom.labels" . | nindent 4 }}
spec: spec:
secretStoreRef: secretStoreRef:
kind: ClusterSecretStore kind: ClusterSecretStore
name: vault name: openbao
data: data:
- secretKey: OIDC_CLIENT_ID
remoteRef:
key: /authentik/oidc/paperless-ngx
property: client
- secretKey: OIDC_CLIENT_SECRET
remoteRef:
key: /authentik/oidc/paperless-ngx
property: secret
- secretKey: PAPERLESS_SOCIALACCOUNT_PROVIDERS - secretKey: PAPERLESS_SOCIALACCOUNT_PROVIDERS
remoteRef: remoteRef:
key: /authentik/oidc/paperless-ngx key: /authentik/oidc/paperless-ngx

View File

@@ -44,7 +44,7 @@ paperless-ngx:
- name: PAPERLESS_SECRET_KEY - name: PAPERLESS_SECRET_KEY
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: paperless-ngx-secret name: paperless-ngx-key
key: secret-key key: secret-key
- name: PAPERLESS_URL - name: PAPERLESS_URL
value: https://paperless-ngx.alexlebens.net value: https://paperless-ngx.alexlebens.net
@@ -53,12 +53,12 @@ paperless-ngx:
- name: PAPERLESS_ADMIN_USER - name: PAPERLESS_ADMIN_USER
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: paperless-ngx-secret name: paperless-ngx-config
key: admin-user key: admin-user
- name: PAPERLESS_ADMIN_PASSWORD - name: PAPERLESS_ADMIN_PASSWORD
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: paperless-ngx-secret name: paperless-ngx-config
key: admin-password key: admin-password
- name: PAPERLESS_ACCOUNT_ALLOW_SIGNUPS - name: PAPERLESS_ACCOUNT_ALLOW_SIGNUPS
value: true value: true
@@ -73,7 +73,7 @@ paperless-ngx:
- name: PAPERLESS_SOCIALACCOUNT_PROVIDERS - name: PAPERLESS_SOCIALACCOUNT_PROVIDERS
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: paperless-ngx-oidc-secret name: paperless-ngx-oidc-authentik
key: PAPERLESS_SOCIALACCOUNT_PROVIDERS key: PAPERLESS_SOCIALACCOUNT_PROVIDERS
- name: PAPERLESS_SOCIALACCOUNT_DEFAULT_PERMISSIONS - name: PAPERLESS_SOCIALACCOUNT_DEFAULT_PERMISSIONS
value: '["view_uisettings", "view_savedview", "add_uisettings", "change_uisettings", "delete_uisettings"]' value: '["view_uisettings", "view_savedview", "add_uisettings", "change_uisettings", "delete_uisettings"]'

View File

@@ -12,3 +12,10 @@ Selector labels
app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }} app.kubernetes.io/part-of: {{ .Release.Name }}
{{- end }} {{- end }}
{{/*
NFS names
*/}}
{{- define "custom.storageNfsName" -}}
plex-nfs-storage
{{- end -}}

View File

@@ -1,13 +1,13 @@
apiVersion: v1 apiVersion: v1
kind: PersistentVolumeClaim kind: PersistentVolumeClaim
metadata: metadata:
name: plex-nfs-storage name: {{ include "custom.storageNfsName" . }}
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
labels: labels:
app.kubernetes.io/name: plex-nfs-storage app.kubernetes.io/name: {{ include "custom.storageNfsName" . }}
{{- include "custom.labels" . | nindent 4 }} {{- include "custom.labels" . | nindent 4 }}
spec: spec:
volumeName: plex-nfs-storage volumeName: {{ include "custom.storageNfsName" . }}
storageClassName: nfs-client storageClassName: nfs-client
accessModes: accessModes:
- ReadWriteMany - ReadWriteMany

View File

@@ -1,10 +1,10 @@
apiVersion: v1 apiVersion: v1
kind: PersistentVolume kind: PersistentVolume
metadata: metadata:
name: plex-nfs-storage name: {{ include "custom.storageNfsName" . }}
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
labels: labels:
app.kubernetes.io/name: plex-nfs-storage app.kubernetes.io/name: {{ include "custom.storageNfsName" . }}
{{- include "custom.labels" . | nindent 4 }} {{- include "custom.labels" . | nindent 4 }}
spec: spec:
persistentVolumeReclaimPolicy: Retain persistentVolumeReclaimPolicy: Retain

View File

@@ -5,7 +5,7 @@ description: Postiz
keywords: keywords:
- postiz - postiz
- social-media - social-media
home: https://docs.alexlebens.dev/applications/plex/ home: https://docs.alexlebens.dev/applications/postiz/
sources: sources:
- https://github.com/gitroomhq/postiz-app - https://github.com/gitroomhq/postiz-app
- https://github.com/getsentry/spotlight - https://github.com/getsentry/spotlight

View File

@@ -1,71 +1,21 @@
apiVersion: external-secrets.io/v1 apiVersion: external-secrets.io/v1
kind: ExternalSecret kind: ExternalSecret
metadata: metadata:
name: postiz-config-secret name: postiz-config
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
labels: labels:
app.kubernetes.io/name: postiz-config-secret app.kubernetes.io/name: postiz-config
{{- include "custom.labels" . | nindent 4 }} {{- include "custom.labels" . | nindent 4 }}
spec: spec:
secretStoreRef: secretStoreRef:
kind: ClusterSecretStore kind: ClusterSecretStore
name: vault name: openbao
data: data:
- secretKey: JWT_SECRET - secretKey: JWT_SECRET
remoteRef: remoteRef:
key: /cl01tl/postiz/config key: /cl01tl/postiz/config
property: JWT_SECRET property: JWT_SECRET
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: postiz-oidc-secret
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: postiz-oidc-secret
{{- include "custom.labels" . | nindent 4 }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
data:
- secretKey: client
remoteRef:
key: /authentik/oidc/postiz
property: client
- secretKey: secret
remoteRef:
key: /authentik/oidc/postiz
property: secret
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: postiz-elasticsearch-secret
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: postiz-elasticsearch-secret
{{- include "custom.labels" . | nindent 4 }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
data:
- secretKey: username
remoteRef:
key: /cl01tl/postiz/elasticsearch
property: username
- secretKey: password
remoteRef:
key: /cl01tl/postiz/elasticsearch
property: password
- secretKey: roles
remoteRef:
key: /cl01tl/postiz/elasticsearch
property: roles
--- ---
apiVersion: external-secrets.io/v1 apiVersion: external-secrets.io/v1
kind: ExternalSecret kind: ExternalSecret
@@ -78,7 +28,7 @@ metadata:
spec: spec:
secretStoreRef: secretStoreRef:
kind: ClusterSecretStore kind: ClusterSecretStore
name: vault name: openbao
data: data:
- secretKey: REDIS_URL - secretKey: REDIS_URL
remoteRef: remoteRef:
@@ -96,3 +46,26 @@ spec:
remoteRef: remoteRef:
key: /cl01tl/postiz/valkey key: /cl01tl/postiz/valkey
property: password property: password
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: postiz-oidc-authentik
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: postiz-oidc-authentik
{{- include "custom.labels" . | nindent 4 }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: openbao
data:
- secretKey: client
remoteRef:
key: /cl01tl/authentik/oidc/postiz
property: client
- secretKey: secret
remoteRef:
key: /cl01tl/authentik/oidc/postiz
property: secret

View File

@@ -13,7 +13,7 @@ postiz:
- name: JWT_SECRET - name: JWT_SECRET
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: postiz-config-secret name: postiz-config
key: JWT_SECRET key: JWT_SECRET
- name: MAIN_URL - name: MAIN_URL
value: https://postiz.alexlebens.dev value: https://postiz.alexlebens.dev
@@ -64,12 +64,12 @@ postiz:
- name: POSTIZ_OAUTH_CLIENT_ID - name: POSTIZ_OAUTH_CLIENT_ID
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: postiz-oidc-secret name: postiz-oidc-authentik
key: client key: client
- name: POSTIZ_OAUTH_CLIENT_SECRET - name: POSTIZ_OAUTH_CLIENT_SECRET
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: postiz-oidc-secret name: postiz-oidc-authentik
key: secret key: secret
- name: POSTIZ_OAUTH_SCOPE - name: POSTIZ_OAUTH_SCOPE
value: openid profile email value: openid profile email

View File

@@ -9,7 +9,7 @@ metadata:
spec: spec:
secretStoreRef: secretStoreRef:
kind: ClusterSecretStore kind: ClusterSecretStore
name: vault name: openbao
data: data:
- secretKey: key - secretKey: key
remoteRef: remoteRef:

View File

@@ -5,7 +5,7 @@ description: qBittorrent
keywords: keywords:
- qbittorrent - qbittorrent
- torrent - torrent
home: https://docs.alexlebens.dev/applications/prowlarr/ home: https://docs.alexlebens.dev/applications/qbittorrent/
sources: sources:
- https://github.com/qbittorrent/qBittorrent - https://github.com/qbittorrent/qBittorrent
- https://github.com/qdm12/gluetun - https://github.com/qdm12/gluetun

View File

@@ -12,3 +12,10 @@ Selector labels
app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }} app.kubernetes.io/part-of: {{ .Release.Name }}
{{- end }} {{- end }}
{{/*
NFS names
*/}}
{{- define "custom.storageNfsName" -}}
qbittorrent-nfs-storage
{{- end -}}

View File

@@ -1,75 +1,112 @@
apiVersion: external-secrets.io/v1 apiVersion: external-secrets.io/v1
kind: ExternalSecret kind: ExternalSecret
metadata: metadata:
name: qbittorrent-wireguard-conf name: qbit-manage-config
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
labels: labels:
app.kubernetes.io/name: qbittorrent-wireguard-conf app.kubernetes.io/name: qbit-manage-config
{{- include "custom.labels" . | nindent 4 }} {{- include "custom.labels" . | nindent 4 }}
spec: spec:
secretStoreRef: secretStoreRef:
kind: ClusterSecretStore kind: ClusterSecretStore
name: vault name: openbao
target:
template:
mergePolicy: Merge
engineVersion: v2
data:
ntfy-url: "{{ `{{ .endpoint }}` }}/qbit-manage"
data: data:
- secretKey: endpoint
remoteRef:
key: /cl01tl/ntfy/users/cl01tl
property: internal-endpoint-credential
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: qui-oidc-authentik
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: qui-oidc-authentik
{{- include "custom.labels" . | nindent 4 }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: openbao
data:
- secretKey: secret
remoteRef:
key: /cl01tl/authentik/oidc/qui
property: secret
- secretKey: client
remoteRef:
key: /cl01tl/authentik/oidc/qui
property: client
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: airvpn-wireguard-conf
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: airvpn-wireguard-conf
{{- include "custom.labels" . | nindent 4 }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: openbao
data:
- secretKey: conf
remoteRef:
key: /airvpn/config
property: conf
- secretKey: private-key - secretKey: private-key
remoteRef: remoteRef:
key: /airvpn/conf/cl01tl key: /airvpn/config
property: private-key property: private-key
- secretKey: preshared-key - secretKey: preshared-key
remoteRef: remoteRef:
key: /airvpn/conf/cl01tl key: /airvpn/config
property: preshared-key property: preshared-key
- secretKey: addresses - secretKey: addresses
remoteRef: remoteRef:
key: /airvpn/conf/cl01tl key: /airvpn/config
property: addresses property: addresses
- secretKey: input-ports - secretKey: input-ports
remoteRef: remoteRef:
key: /airvpn/conf/cl01tl key: /airvpn/config
property: input-ports property: input-ports
--- ---
apiVersion: external-secrets.io/v1 apiVersion: external-secrets.io/v1
kind: ExternalSecret kind: ExternalSecret
metadata: metadata:
name: qbittorrent-qbit-manage-config name: protonvpn-wireguard-conf
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
labels: labels:
app.kubernetes.io/name: qbittorrent-qbit-manage-config app.kubernetes.io/name: protonvpn-wireguard-conf
{{- include "custom.labels" . | nindent 4 }} {{- include "custom.labels" . | nindent 4 }}
spec: spec:
secretStoreRef: secretStoreRef:
kind: ClusterSecretStore kind: ClusterSecretStore
name: vault name: openbao
data: data:
- secretKey: ntfy-url - secretKey: conf
remoteRef: remoteRef:
key: /cl01tl/qbittorrent/qbit-manage key: /protonvpn/config
property: ntfy-url property: conf
- secretKey: config.yml - secretKey: email
remoteRef: remoteRef:
key: /cl01tl/qbittorrent/qbit-manage key: /protonvpn/config
property: config.yml property: email
- secretKey: password
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: qui-oidc-secret
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: qui-oidc-secret
{{- include "custom.labels" . | nindent 4 }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
data:
- secretKey: secret
remoteRef: remoteRef:
key: /authentik/oidc/qui key: /protonvpn/config
property: secret property: password
- secretKey: client - secretKey: private-key
remoteRef: remoteRef:
key: /authentik/oidc/qui key: /protonvpn/config
property: client property: private-key

View File

@@ -1,9 +1,9 @@
apiVersion: v1 apiVersion: v1
kind: Namespace kind: Namespace
metadata: metadata:
name: qbittorrent name: {{ .Release.Namespace }}
labels: labels:
app.kubernetes.io/name: qbittorrent app.kubernetes.io/name: {{ .Release.Namespace }}
{{- include "custom.labels" . | nindent 4 }} {{- include "custom.labels" . | nindent 4 }}
pod-security.kubernetes.io/audit: privileged pod-security.kubernetes.io/audit: privileged
pod-security.kubernetes.io/enforce: privileged pod-security.kubernetes.io/enforce: privileged

View File

@@ -1,13 +1,13 @@
apiVersion: v1 apiVersion: v1
kind: PersistentVolumeClaim kind: PersistentVolumeClaim
metadata: metadata:
name: qbittorrent-nfs-storage name: {{ include "custom.storageNfsName" . }}
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
labels: labels:
app.kubernetes.io/name: qbittorrent-nfs-storage app.kubernetes.io/name: {{ include "custom.storageNfsName" . }}
{{- include "custom.labels" . | nindent 4 }} {{- include "custom.labels" . | nindent 4 }}
spec: spec:
volumeName: qbittorrent-nfs-storage volumeName: {{ include "custom.storageNfsName" . }}
storageClassName: nfs-client storageClassName: nfs-client
accessModes: accessModes:
- ReadWriteMany - ReadWriteMany

View File

@@ -1,10 +1,10 @@
apiVersion: v1 apiVersion: v1
kind: PersistentVolume kind: PersistentVolume
metadata: metadata:
name: qbittorrent-nfs-storage name: {{ include "custom.storageNfsName" . }}
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
labels: labels:
app.kubernetes.io/name: qbittorrent-nfs-storage app.kubernetes.io/name: {{ include "custom.storageNfsName" . }}
{{- include "custom.labels" . | nindent 4 }} {{- include "custom.labels" . | nindent 4 }}
spec: spec:
persistentVolumeReclaimPolicy: Retain persistentVolumeReclaimPolicy: Retain

View File

@@ -0,0 +1,18 @@
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
name: qbit-manage-config
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: qbit-manage-config
{{- include "custom.labels" . | nindent 4 }}
spec:
provider: openbao
parameters:
baoAddress: "http://openbao-internal.openbao:8200"
roleName: qbittorrent
objects: |
- objectName: config.yml
fileName: config.yml
secretPath: secret/data/cl01tl/qbittorrent/qbit-manage
secretKey: config.yml

View File

@@ -62,33 +62,22 @@ qbittorrent:
command: ["/bin/sh", "-c", "(ip rule del table 51820; ip -6 rule del table 51820) || true"] command: ["/bin/sh", "-c", "(ip rule del table 51820; ip -6 rule del table 51820) || true"]
env: env:
- name: VPN_SERVICE_PROVIDER - name: VPN_SERVICE_PROVIDER
value: airvpn value: protonvpn
- name: VPN_TYPE - name: VPN_TYPE
value: wireguard value: wireguard
- name: WIREGUARD_PRIVATE_KEY - name: WIREGUARD_PRIVATE_KEY
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: qbittorrent-wireguard-conf name: protonvpn-wireguard-conf
key: private-key key: private-key
- name: WIREGUARD_PRESHARED_KEY
valueFrom:
secretKeyRef:
name: qbittorrent-wireguard-conf
key: preshared-key
- name: WIREGUARD_ADDRESSES
valueFrom:
secretKeyRef:
name: qbittorrent-wireguard-conf
key: addresses
- name: FIREWALL_VPN_INPUT_PORTS
valueFrom:
secretKeyRef:
name: qbittorrent-wireguard-conf
key: input-ports
- name: FIREWALL_OUTBOUND_SUBNETS - name: FIREWALL_OUTBOUND_SUBNETS
value: 192.168.1.0/24,10.244.0.0/16 value: 192.168.1.0/24,10.244.0.0/16
- name: FIREWALL_INPUT_PORTS - name: FIREWALL_INPUT_PORTS
value: 8080,9022 value: 5030,50300
- name: VPN_PORT_FORWARDING
value: 'on'
- name: VPN_PORT_FORWARDING_UP_COMMAND
value: '/bin/sh -c "/gluetun/update.sh {{ printf "{{PORTS}}" }}"'
- name: DNS_UPSTREAM_RESOLVER_TYPE - name: DNS_UPSTREAM_RESOLVER_TYPE
value: dot value: dot
- name: BLOCK_MALICIOUS - name: BLOCK_MALICIOUS
@@ -141,6 +130,8 @@ qbittorrent:
reloader.stakater.com/auto: "true" reloader.stakater.com/auto: "true"
replicas: 1 replicas: 1
strategy: Recreate strategy: Recreate
serviceAccount:
name: qbittorrent
initContainers: initContainers:
init-copy-config: init-copy-config:
image: image:
@@ -150,7 +141,7 @@ qbittorrent:
- /bin/sh - /bin/sh
- -ec - -ec
- | - |
cp /config/config.yml /app/config/config.yml cp /tmp/config.yml /app/config/config.yml
containers: containers:
qbit-manage: qbit-manage:
image: image:
@@ -194,7 +185,7 @@ qbittorrent:
- name: APPRISE_STATELESS_URLS - name: APPRISE_STATELESS_URLS
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: qbittorrent-qbit-manage-config name: qbit-manage-config
key: ntfy-url key: ntfy-url
qui: qui:
type: deployment type: deployment
@@ -223,12 +214,12 @@ qbittorrent:
- name: QUI__OIDC_CLIENT_ID - name: QUI__OIDC_CLIENT_ID
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: qui-oidc-secret name: qui-oidc-authentik
key: client key: client
- name: QUI__OIDC_CLIENT_SECRET - name: QUI__OIDC_CLIENT_SECRET
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: qui-oidc-secret name: qui-oidc-authentik
key: secret key: secret
- name: QUI__OIDC_REDIRECT_URL - name: QUI__OIDC_REDIRECT_URL
value: https://qui.alexlebens.net/api/auth/oidc/callback value: https://qui.alexlebens.net/api/auth/oidc/callback
@@ -238,6 +229,10 @@ qbittorrent:
requests: requests:
cpu: 10m cpu: 10m
memory: 70Mi memory: 70Mi
serviceAccount:
qbittorrent:
enabled: true
staticToken: true
service: service:
main: main:
controller: main controller: main
@@ -347,22 +342,6 @@ qbittorrent:
gluetun: gluetun:
- path: /gluetun/update.sh - path: /gluetun/update.sh
subPath: update.sh subPath: update.sh
qbit-manage-config:
enabled: true
type: secret
name: qbittorrent-qbit-manage-config
advancedMounts:
qbit-manage:
init-copy-config:
- path: /config/config.yml
readOnly: true
mountPropagation: None
subPath: config.yml
qbit-manage:
- path: /config/config.yml
readOnly: true
mountPropagation: None
subPath: config.yml
config-data: config-data:
forceRename: qbittorrent-config-data forceRename: qbittorrent-config-data
storageClass: ceph-filesystem storageClass: ceph-filesystem
@@ -377,6 +356,27 @@ qbittorrent:
qbit-manage: qbit-manage:
- path: /qbittorrent/qBittorrent - path: /qbittorrent/qBittorrent
readOnly: false readOnly: false
qbit-manage-config:
enabled: true
type: custom
volumeSpec:
csi:
driver: secrets-store.csi.k8s.io
readOnly: true
volumeAttributes:
secretProviderClass: qbit-manage-config
advancedMounts:
qbit-manage:
init-copy-config:
- path: /tmp/config.yml
readOnly: true
mountPropagation: None
subPath: config.yml
qbit-manage:
- path: /tmp/config.yml
readOnly: true
mountPropagation: None
subPath: config.yml
qbit-manage-config-data: qbit-manage-config-data:
forceRename: qbittorrent-qbit-manage-config-data forceRename: qbittorrent-qbit-manage-config-data
storageClass: ceph-block storageClass: ceph-block
@@ -390,6 +390,15 @@ qbittorrent:
qbit-manage: qbit-manage:
- path: /app/config - path: /app/config
readOnly: false readOnly: false
qbit-manage-config-var:
storageClass: ceph-block
accessMode: ReadWriteOnce
size: 500Mi
advancedMounts:
qbit-manage:
qbit-manage:
- path: /app/var
readOnly: false
qui-config-data: qui-config-data:
forceRename: qbittorrent-qui-config-data forceRename: qbittorrent-qui-config-data
storageClass: ceph-block storageClass: ceph-block
@@ -400,13 +409,6 @@ qbittorrent:
qui: qui:
- path: /config - path: /config
readOnly: false readOnly: false
qbit-manage-config-var:
type: emptyDir
advancedMounts:
qbit-manage:
qbit-manage:
- path: /app/var
readOnly: false
storage: storage:
type: persistentVolumeClaim type: persistentVolumeClaim
existingClaim: qbittorrent-nfs-storage existingClaim: qbittorrent-nfs-storage