Compare commits

...

104 Commits

Author SHA1 Message Date
579b4077d2 yt-dlp-bot: deploy update to 1ef217f 2025-11-29 00:44:39 +00:00
1946931937 dispatcharr: fix transcoding 2025-11-28 10:39:12 -05:00
856ee307ff dispatcharr: add hw transcoding 2025-11-27 20:39:09 -05:00
f4da25c243 jellyfin: block public access to metrics 2025-11-26 10:41:21 -05:00
19f8dd922b jellyfin: enable monitoring 2025-11-26 09:58:00 -05:00
2e26a5df9e gitea: metrics should be under gitea.gitea 2025-11-26 09:53:29 -05:00
5ffaa2d65b gitea: enable metrics 2025-11-26 09:52:24 -05:00
b2d4211583 gitea: attempt to increase valkey-cluster limits 2025-11-24 15:02:51 -05:00
b64ddb7b71 Merge pull request 'chore(deps): update helm release grafana to v10.2.0' (#61) from renovate/grafana-10.x into main
Reviewed-on: #61
2025-11-21 18:42:43 +00:00
447c4b618b grafana: re-enable 2025-11-21 13:22:16 -05:00
2a5057dc5b chore(deps): update helm release grafana to v10.2.0 2025-11-21 13:00:09 +00:00
a58d4dc19f grafana: take offline temporarily for prometheus migrations 2025-11-20 08:59:19 -05:00
482ddda271 authentik: rm redis, no longer a dependency 2025-11-19 15:03:34 -05:00
e401a71a01 Merge pull request 'chore(deps): update helm release authentik to v2025.10.2' (#59) from renovate/authentik-2025.x into main
Reviewed-on: #59
2025-11-19 19:58:37 +00:00
c1053309e8 Merge pull request 'chore(deps): update helm release grafana to v10.1.5' (#60) from renovate/grafana-10.x into main
Reviewed-on: #60
2025-11-19 19:54:19 +00:00
6666fd467f chore(deps): update helm release grafana to v10.1.5 2025-11-19 17:00:13 +00:00
3a2e9e0e9d chore(deps): update helm release authentik to v2025.10.2 2025-11-19 14:00:10 +00:00
d17fce4dcc update postgres url for gitea, netmaker, and peertube 2025-11-13 21:16:49 -05:00
a514eed9cf authentik: once again try to use pooler url 2025-11-13 21:06:55 -05:00
d747936738 Revert "authentik: migrate to pgsql pooler url"
This reverts commit 7c65d7a917.
2025-11-13 16:31:54 -05:00
7c65d7a917 authentik: migrate to pgsql pooler url 2025-11-13 15:45:50 -05:00
7d456d5bd8 yt-dlp-bot: deploy update to db488e0 2025-11-12 03:32:49 +00:00
63fdcf4b41 yt-dlp-bot: deploy update to e124ea3 2025-11-12 03:24:57 +00:00
b7b33c9812 yt-dlp-bot: deploy update to 2f47bbd 2025-11-12 03:15:02 +00:00
bb4ac79006 yt-dlp-bot: deploy update to 709ccdd 2025-11-12 02:51:52 +00:00
908ec8cb85 Merge pull request 'chore(deps): update docker.io/bats/bats docker tag to v1.13.0' (#56) from renovate/docker.io-bats-bats-1.x into main
Reviewed-on: #56
2025-11-08 15:51:11 +00:00
894d2d90bb chore(deps): update docker.io/bats/bats docker tag to v1.13.0 2025-11-07 17:00:10 +00:00
9d58d47a98 Merge pull request 'chore(deps): update helm release jellyfin to v2.5.0' (#54) from renovate/jellyfin-2.x into main
Reviewed-on: #54
2025-11-04 00:46:04 +00:00
0fc227c978 Merge pull request 'chore(deps): update helm release authentik to v2025.10.1' (#55) from renovate/authentik-2025.x into main
Reviewed-on: #55
2025-11-04 00:45:39 +00:00
5d642abfb2 chore(deps): update helm release authentik to v2025.10.1 2025-11-03 18:00:18 +00:00
06ce0d7020 chore(deps): update helm release jellyfin to v2.5.0 2025-11-03 04:00:12 +00:00
d1a1b90de4 Merge pull request 'chore(deps): update helm release grafana to v10.1.4' (#53) from renovate/grafana-10.x into main
Reviewed-on: #53
2025-10-30 01:20:23 +00:00
34e18748d2 chore(deps): update helm release grafana to v10.1.4 2025-10-29 23:00:13 +00:00
57dfd393bf Merge pull request 'chore(deps): update helm release authentik to v2025.10.0' (#52) from renovate/authentik-2025.x into main
Reviewed-on: #52
2025-10-28 17:46:08 +00:00
ee3f5d2d7e chore(deps): update helm release authentik to v2025.10.0 2025-10-27 21:00:08 +00:00
d1ad8fc440 netmaker: fix ui 2025-10-26 22:28:41 -04:00
821cf8f067 yt-dlp-bot: deploy update to 8eb6bf3 2025-10-26 18:17:58 +00:00
a38752d7e6 netmaker: prod config 2025-10-26 14:13:40 -04:00
65d8ddebb1 netmaker: add API and UI 2025-10-23 19:38:35 -04:00
8c878150d9 Merge remote-tracking branch 'refs/remotes/origin/main' 2025-10-22 22:02:22 -04:00
e6c0474bbb netmaker stub 2025-10-22 22:02:07 -04:00
d0fdc8c932 yt-dlp-bot: deploy update to 0c21a85 2025-10-22 23:07:02 +00:00
cb0cbcf1fb yt-dlp-bot: deploy update to d29c045 2025-10-22 21:35:51 +00:00
c4c25a647b yt-dlp-bot: deploy update to c2c228d 2025-10-22 15:04:21 +00:00
27e477af6f renovate: add ssh signing 2025-10-22 10:34:57 -04:00
9b53acf467 Merge pull request 'chore(deps): update helm release jellyfin to v2.4.0' (#51) from renovate/jellyfin-2.x into main
Reviewed-on: #51
2025-10-20 13:09:38 +00:00
8882f1a3d7 chore(deps): update helm release jellyfin to v2.4.0 2025-10-20 04:00:10 +00:00
12dfdc80ec Merge pull request 'chore(deps): update helm release grafana to v10.1.2' (#50) from renovate/grafana-10.x into main
Reviewed-on: #50
2025-10-18 14:54:16 +00:00
10f79e298e chore(deps): update helm release grafana to v10.1.2 2025-10-18 13:00:17 +00:00
fad154cf7d Merge pull request 'chore(deps): update helm release grafana to v10.1.1' (#49) from renovate/grafana-10.x into main
Reviewed-on: #49
2025-10-15 17:24:09 +00:00
56e71cb9e2 chore(deps): update helm release grafana to v10.1.1 2025-10-15 16:00:09 +00:00
f8f80a393e yt-dlp-bot: deploy update to cef71e1 2025-10-15 02:18:52 +00:00
604323e615 gitea: enable valkey cluster from chart 2025-10-12 20:10:48 -04:00
5049bd2f38 Merge pull request 'chore(deps): update helm release grafana to v10.1.0' (#48) from renovate/grafana-10.x into main
Reviewed-on: #48
2025-10-12 04:35:22 +00:00
cb9ec59e78 chore(deps): update helm release grafana to v10.1.0 2025-10-10 16:00:18 +00:00
b3b7521f99 yt-dlp-bot: deploy update to 7f1182f 2025-10-09 12:52:00 +00:00
d3d5b1eba6 yt-dlp-bot: deploy update to 0cf1b4a 2025-10-08 13:21:39 +00:00
47d716d393 yt-dlp-bot: deploy update to 0821359 2025-10-08 13:19:54 +00:00
f8ee4b70ae yt-dlp-bot: deploy update to 7c3905e 2025-10-08 13:08:23 +00:00
05150b8d4b yt-dlp-bot: deploy update to 2d9241b 2025-10-08 13:05:09 +00:00
983de12bf9 rm wekan 2025-10-06 20:51:18 -04:00
d817b492bf Merge pull request 'chore(deps): update helm release gitea to v12.4.0' (#46) from renovate/gitea-12.x into main
Reviewed-on: #46
2025-10-06 16:48:17 +00:00
3bda4aeead chore(deps): update helm release gitea to v12.4.0 2025-10-06 15:00:16 +00:00
d81fbc5266 Merge pull request 'chore(deps): update helm release authentik to v2025.8.4' (#45) from renovate/authentik-2025.x into main
Reviewed-on: #45
2025-09-30 15:14:06 +00:00
6df1bae2a2 chore(deps): update helm release authentik to v2025.8.4 2025-09-30 11:00:09 +00:00
e819c0a19e yt-dlp-bot: deploy update to 236ef0d 2025-09-29 16:52:02 +00:00
449a5884c1 add arr-stack and jellyfin to velero backups 2025-09-29 08:46:53 -04:00
f7950a6632 yt-dlp-bot: deploy update to f7cb27b 2025-09-28 04:16:28 +00:00
7b68fb1578 yt-dlp-bot: deploy update to feb99c0 2025-09-26 19:50:42 +00:00
2b2d1766af jellyfin: increase config PVC to 25Gi 2025-09-25 17:32:50 -04:00
13ea9a56dc yt-dlp-bot: deploy update to d06af69 2025-09-23 18:48:03 +00:00
0e4c3a219a add kubernetes manifests to renovate 2025-09-19 22:12:19 -04:00
c5e7f62f29 add sonarr 2025-09-18 22:57:12 -04:00
ef5cb3b27b rm ingresses to make way for authentik to handle ingress 2025-09-18 22:57:12 -04:00
782bbcc568 Merge pull request 'chore(deps): update helm release wekan to v7.95.0' (#44) from renovate/wekan-7.x into main
Reviewed-on: #44
2025-09-19 00:00:12 +00:00
37edf93b21 add flaresolvarr, prowlarr 2025-09-18 18:53:33 -04:00
692e8fd9b6 add arr-stack 2025-09-18 17:41:47 -04:00
543a85c4fb chore(deps): update helm release wekan to v7.95.0 2025-09-18 20:00:09 +00:00
49c5f5d8c9 rm emby 2025-09-18 10:07:13 -04:00
453fadfd2c Merge pull request 'chore(deps): update helm release grafana to v10' (#43) from renovate/grafana-10.x into main
Reviewed-on: #43
2025-09-17 14:41:58 +00:00
09fbc4e474 chore(deps): update helm release grafana to v10 2025-09-16 20:00:09 +00:00
9f953e79ca authentik: i forgor to add smtp username 2025-09-16 14:14:01 -04:00
98628a2113 authentik: use default port 25 for smtp 2025-09-16 14:05:56 -04:00
2fc19ce70d authentik: extend smtp timeout 2025-09-16 14:00:36 -04:00
bbe1d21048 authentik: setup smtp 2025-09-16 13:53:12 -04:00
4253a6845e Merge pull request 'chore(deps): update helm release authentik to v2025.8.3' (#42) from renovate/authentik-2025.x into main
Reviewed-on: #42
2025-09-16 17:33:53 +00:00
15a82b2ebb chore(deps): update helm release authentik to v2025.8.3 2025-09-16 17:00:10 +00:00
aa98845e6a Merge pull request 'chore(deps): update helm release gitea to v12.3.0' (#41) from renovate/gitea-12.x into main
Reviewed-on: #41
2025-09-15 22:13:02 +00:00
fd5879f4ba Merge pull request 'chore(deps): update helm release authentik to v2025.8.2' (#40) from renovate/authentik-2025.x into main
Reviewed-on: #40
2025-09-15 22:12:43 +00:00
2051d563f8 chore(deps): update helm release gitea to v12.3.0 2025-09-15 17:00:14 +00:00
d4e4cb1313 chore(deps): update helm release authentik to v2025.8.2 2025-09-15 17:00:09 +00:00
ae13754c27 rm emby ingress 2025-09-15 12:52:13 -04:00
fcc65c33fa add jellyfin 2025-09-15 12:51:47 -04:00
83a337f768 yt-dlp-bot: deploy update to 44b59e3 2025-09-13 04:30:45 +00:00
e42943d0d4 Merge pull request 'chore(deps): update helm release grafana to v9.4.5' (#39) from renovate/grafana-9.x into main
Reviewed-on: #39
2025-09-11 21:40:23 +00:00
9a43144600 chore(deps): update helm release grafana to v9.4.5 2025-09-11 14:00:08 +00:00
d0386c0204 yt-dlp-bot: deploy update to d478896 2025-09-06 02:34:47 +00:00
8e53b08ed6 add dispatcharr 2025-09-03 18:40:20 -04:00
f9126499c2 xmltv: add OTA 2025-09-03 18:36:20 -04:00
73e36385f8 add zap2xml 2025-09-03 14:39:55 -04:00
4406b80872 Merge pull request 'chore(deps): update helm release grafana to v9.4.4' (#38) from renovate/grafana-9.x into main
Reviewed-on: #38
2025-09-01 14:20:44 +00:00
8ca7676f61 chore(deps): update helm release grafana to v9.4.4 2025-09-01 08:00:08 +00:00
0c6be07c25 yt-dlp-bot: deploy update to 5c5cba7 2025-08-31 21:02:05 +00:00
ebb7443524 Merge pull request 'chore(deps): update helm release grafana to v9.4.3' (#37) from renovate/grafana-9.x into main
Reviewed-on: #37
2025-08-31 20:58:03 +00:00
60 changed files with 1221 additions and 354 deletions

View File

@@ -0,0 +1,24 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: flaresolverr
spec:
replicas: 1
selector:
matchLabels:
app: flaresolverr
template:
metadata:
labels:
app: flaresolverr
spec:
containers:
- name: flaresolverr
image: ghcr.io/flaresolverr/flaresolverr:v3.4.1
resources:
limits:
memory: "4Gi"
cpu: "1"
requests:
memory: "2Gi"
cpu: "0.5"

View File

@@ -0,0 +1,10 @@
apiVersion: v1
kind: Service
metadata:
name: flaresolverr
spec:
selector:
app: flaresolverr
ports:
- port: 8191
targetPort: 8191

View File

@@ -0,0 +1,33 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: prowlarr
spec:
replicas: 1
selector:
matchLabels:
app: prowlarr
template:
metadata:
labels:
app: prowlarr
annotations:
backup.velero.io/backup-volumes: config
spec:
containers:
- name: prowlarr
image: linuxserver/prowlarr:version-2.0.5.5160
volumeMounts:
- name: config
mountPath: /config
resources:
limits:
memory: "1Gi"
cpu: "1"
requests:
memory: "512Mi"
cpu: "0.5"
volumes:
- name: config
persistentVolumeClaim:
claimName: prowlarr-config

View File

@@ -1,12 +1,11 @@
apiVersion: v1 apiVersion: v1
kind: PersistentVolumeClaim kind: PersistentVolumeClaim
metadata: metadata:
name: emby-config name: prowlarr-config
spec: spec:
storageClassName: weyma-shared
resources: resources:
requests: requests:
storage: 10Gi storage: 10Gi
volumeMode: Filesystem volumeMode: Filesystem
accessModes: accessModes:
- ReadWriteOnce - ReadWriteMany

View File

@@ -0,0 +1,10 @@
apiVersion: v1
kind: Service
metadata:
name: prowlarr
spec:
selector:
app: prowlarr
ports:
- port: 9696
targetPort: 9696

View File

@@ -0,0 +1,45 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: radarr
spec:
replicas: 1
selector:
matchLabels:
app: radarr
template:
metadata:
labels:
app: radarr
annotations:
backup.velero.io/backup-volumes: config
spec:
containers:
- name: radarr
image: linuxserver/radarr:version-5.27.5.10198
volumeMounts:
- name: config
mountPath: /config
- name: downloads
mountPath: /mnt/Downloads
- name: movies
mountPath: /mnt/movies
resources:
limits:
memory: "1Gi"
cpu: "1"
requests:
memory: "512Mi"
cpu: "0.5"
volumes:
- name: config
persistentVolumeClaim:
claimName: radarr-config
- name: movies
nfs:
server: 10.105.15.20
path: /mnt/hdd-pool/movies
- name: downloads
nfs:
server: 10.105.15.20
path: /mnt/hdd-pool/syncthing-downloads

View File

@@ -1,12 +1,11 @@
apiVersion: v1 apiVersion: v1
kind: PersistentVolumeClaim kind: PersistentVolumeClaim
metadata: metadata:
name: resilio-pvc name: radarr-config
spec: spec:
storageClassName: weyma-shared
resources: resources:
requests: requests:
storage: 10Gi storage: 10Gi
volumeMode: Filesystem volumeMode: Filesystem
accessModes: accessModes:
- ReadWriteOnce - ReadWriteMany

10
arr-stack/radarr/svc.yaml Normal file
View File

@@ -0,0 +1,10 @@
apiVersion: v1
kind: Service
metadata:
name: radarr
spec:
selector:
app: radarr
ports:
- port: 7878
targetPort: 7878

View File

@@ -0,0 +1,45 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: sonarr
spec:
replicas: 1
selector:
matchLabels:
app: sonarr
template:
metadata:
labels:
app: sonarr
annotations:
backup.velero.io/backup-volumes: config
spec:
containers:
- name: sonarr
image: linuxserver/sonarr:4.0.15
volumeMounts:
- name: config
mountPath: /config
- name: downloads
mountPath: /mnt/Downloads
- name: tv-shows
mountPath: /mnt/tv-shows
resources:
limits:
memory: "1Gi"
cpu: "1"
requests:
memory: "512Mi"
cpu: "0.5"
volumes:
- name: config
persistentVolumeClaim:
claimName: sonarr-config
- name: tv-shows
nfs:
server: 10.105.15.20
path: /mnt/hdd-pool/tv-shows
- name: downloads
nfs:
server: 10.105.15.20
path: /mnt/hdd-pool/syncthing-downloads

11
arr-stack/sonarr/pvc.yaml Normal file
View File

@@ -0,0 +1,11 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: sonarr-config
spec:
resources:
requests:
storage: 10Gi
volumeMode: Filesystem
accessModes:
- ReadWriteMany

10
arr-stack/sonarr/svc.yaml Normal file
View File

@@ -0,0 +1,10 @@
apiVersion: v1
kind: Service
metadata:
name: sonarr
spec:
selector:
app: sonarr
ports:
- port: 8989
targetPort: 8989

View File

@@ -0,0 +1,33 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: deluge-tunnel
spec:
selector:
matchLabels:
app: deluge-tunnel
template:
metadata:
labels:
app: deluge-tunnel
spec:
containers:
- name: deluge-tunnel
image: kroniak/ssh-client:3.21
command: ["/bin/sh", "-c", "ssh -o StrictHostKeyChecking=no weyma-talos@45.152.211.243 -p 2222 -L 0.0.0.0:58846:127.0.0.1:58846 -L 0.0.0.0:8112:127.0.0.1:8112 -N"]
volumeMounts:
- name: ssh-keys
mountPath: /root/.ssh
resources:
limits:
memory: "512Mi"
cpu: "500m"
requests:
memory: "128Mi"
cpu: "200m"
volumes:
- name: ssh-keys
secret:
defaultMode: 0400
secretName: ssh-keys

View File

@@ -0,0 +1,28 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: ssh-keys
spec:
data:
- remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: deluge-ssh
metadataPolicy: None
property: private
secretKey: id_ed25519
- remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: deluge-ssh
metadataPolicy: None
property: public
secretKey: id_ed25519.pub
refreshInterval: 1h
secretStoreRef:
kind: ClusterSecretStore
name: weyma-vault
target:
creationPolicy: Owner
deletionPolicy: Retain
name: ssh-keys

14
arr-stack/tunnel/svc.yaml Normal file
View File

@@ -0,0 +1,14 @@
apiVersion: v1
kind: Service
metadata:
name: deluge
spec:
selector:
app: deluge-tunnel
ports:
- port: 58846
targetPort: 58846
name: deluge
- port: 8112
targetPort: 8112
name: web

View File

@@ -24,5 +24,5 @@ appVersion: "1.0"
dependencies: dependencies:
- name: authentik - name: authentik
version: 2025.8.1 version: 2025.10.2
repository: https://charts.goauthentik.io repository: https://charts.goauthentik.io

View File

@@ -25,25 +25,6 @@ authentik:
- name: cert-dubyatp-xyz - name: cert-dubyatp-xyz
secret: secret:
secretName: cert-dubyatp-xyz secretName: cert-dubyatp-xyz
redis:
enabled: true
architecture: standalone
auth:
enabled: false
master:
resourcesPreset: "none"
podAnnotations:
backup.velero.io/backup-volumes: redis-data
replica:
resourcesPreset: "none"
sentinel:
resourcesPreset: "none"
metrics:
resourcesPreset: "none"
volumePermissions:
resourcesPreset: "none"
sysctl:
resourcesPreset: "none"
global: global:
env: env:
- name: AUTHENTIK_SECRET_KEY - name: AUTHENTIK_SECRET_KEY
@@ -52,7 +33,7 @@ authentik:
name: authentik-credentials name: authentik-credentials
key: authentik-secret-key key: authentik-secret-key
- name: AUTHENTIK_POSTGRESQL__HOST - name: AUTHENTIK_POSTGRESQL__HOST
value: weyma-pgsql-rw.cloudnativepg.svc.cluster.local value: pooler-weyma-rw.cloudnativepg.svc.cluster.local
- name: AUTHENTIK_POSTGRESQL__NAME - name: AUTHENTIK_POSTGRESQL__NAME
value: authentik value: authentik
- name: AUTHENTIK_POSTGRESQL__USER - name: AUTHENTIK_POSTGRESQL__USER
@@ -62,6 +43,21 @@ authentik:
secretKeyRef: secretKeyRef:
name: authentik-db-auth name: authentik-db-auth
key: password key: password
- name: AUTHENTIK_EMAIL__FROM
value: authentik_dubyatp@em924671.dubyatp.xyz
- name: AUTHENTIK_EMAIL__HOST
value: mail.smtp2go.com
- name: AUTHENTIK_EMAIL__USE_TLS
value: "true"
- name: AUTHENTIK_EMAIL__USERNAME
value: authentik_dubyatp
- name: AUTHENTIK_EMAIL__PASSWORD
valueFrom:
secretKeyRef:
name: authentik-credentials
key: smtp-password
- name: AUTHENTIK_EMAIL__TIMEOUT
value: "30"
additionalObjects: additionalObjects:
- apiVersion: networking.k8s.io/v1 - apiVersion: networking.k8s.io/v1
kind: Ingress kind: Ingress
@@ -125,6 +121,10 @@ authentik:
remoteRef: remoteRef:
key: authentik key: authentik
property: user-password property: user-password
- secretKey: smtp-password
remoteRef:
key: authentik
property: smtp-password
- apiVersion: external-secrets.io/v1 - apiVersion: external-secrets.io/v1
kind: ExternalSecret kind: ExternalSecret
metadata: metadata:

View File

@@ -0,0 +1,61 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: dispatcharr
spec:
selector:
matchLabels:
app: dispatcharr
template:
metadata:
labels:
app: dispatcharr
annotations:
backup.velero.io/backup-volumes: data
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: extensions.talos.dev/i915
operator: Exists
nodeSelector:
kubernetes.io/hostname: weyma-talos-testw04
containers:
- name: dispatcharr
image: ghcr.io/dispatcharr/dispatcharr:0.8.0-amd64
env:
- name: DISPATCHARR_ENV
value: aio
- name: REDIS_HOST
value: localhost
- name: CELERY_BROKER_URL
value: redis://localhost:6379/0
- name: DISPATCHARR_LOG_LEVEL
value: info
- name: UWSGI_NICE_LEVEL
value: "-5"
- name: CELERY_NICE_LEVEL
value: "-5"
volumeMounts:
- name: dispatcharr-data
mountPath: /data
- name: dev-dri
mountPath: /dev/dri
resources:
limits:
memory: "3Gi"
cpu: "1"
requests:
memory: "256Mi"
cpu: "500m"
securityContext:
privileged: true
volumes:
- name: dispatcharr-data
persistentVolumeClaim:
claimName: dispatcharr
- name: dev-dri
hostPath:
path: /dev/dri

18
dispatcharr/ingress.yaml Normal file
View File

@@ -0,0 +1,18 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: dispatcharr
labels:
app.kubernetes.io/name: dispatcharr
spec:
rules:
- host: dispatcharr.dubyatp.xyz
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: dispatcharr-svc
port:
number: 9191

11
dispatcharr/pvc.yaml Normal file
View File

@@ -0,0 +1,11 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: dispatcharr
spec:
resources:
requests:
storage: 20Gi
volumeMode: Filesystem
accessModes:
- ReadWriteMany

10
dispatcharr/svc.yaml Normal file
View File

@@ -0,0 +1,10 @@
apiVersion: v1
kind: Service
metadata:
name: dispatcharr-svc
spec:
selector:
app: dispatcharr
ports:
- port: 9191
targetPort: 9191

View File

@@ -1,10 +0,0 @@
apiVersion: v1
kind: Secret
metadata:
name: cert-dubyatp-xyz
annotations:
replicator.v1.mittwald.de/replicate-from: "cert-manager/cert-dubyatp-xyz"
replicator.v1.mittwald.de/replicated-keys: "tls.crt,tls.key"
data:
tls.crt: ""
tls.key: ""

View File

@@ -1,79 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: emby
spec:
strategy:
type: Recreate
selector:
matchLabels:
app: emby
template:
metadata:
annotations:
backup.velero.io/backup-volumes: emby-config
labels:
app: emby
spec:
volumes:
- name: tv-shows
nfs:
server: 10.105.15.20
path: /mnt/hdd-pool/tv-shows
- name: movies
nfs:
server: 10.105.15.20
path: /mnt/hdd-pool/movies
- name: emby-config
persistentVolumeClaim:
claimName: emby-config
- name: transcode-temp
emptyDir:
sizeLimit: 8Gi
medium: Memory
- name: dev-dri
hostPath:
path: /dev/dri
containers:
- name: emby
image: emby/embyserver:4.8.11.0
volumeMounts:
- name: tv-shows
mountPath: /mnt/tv-shows
- name: movies
mountPath: /mnt/movies
- name: emby-config
mountPath: /config
- name: transcode-temp
mountPath: /tmp/transcode
- name: dev-dri
mountPath: /dev/dri
env:
- name: UID
value: "1000"
- name: GID
value: "1000"
- name: GIDLIST
value: "100"
livenessProbe:
httpGet:
path: /
port: http
securityContext:
privileged: true
resources:
limits:
memory: 8Gi
cpu: '1'
requests:
memory: 4Gi
cpu: "500m"
nodeSelector:
kubernetes.io/hostname: weyma-talos-testw04
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: extensions.talos.dev/i915
operator: Exists

View File

@@ -1,22 +0,0 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: emby-ingress
annotations:
traefik.ingress.kubernetes.io/router.middlewares: cloudflarewarp@file
spec:
rules:
- host: emby.dubyatp.xyz
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: emby-http-svc
port:
number: 8096
tls:
- hosts:
- emby.dubyatp.xyz
secretName: cert-dubyatp-xyz

View File

@@ -1,39 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: resilio-sync
spec:
selector:
matchLabels:
app: resilio-sync
template:
metadata:
labels:
app: resilio-sync
spec:
containers:
- name: resilio-sync
image: lscr.io/linuxserver/resilio-sync:3.0.0
volumeMounts:
- name: config
mountPath: /config
- name: tv-shows
mountPath: /sync/tv-shows
- name: movies
mountPath: /sync/movies
resources:
limits:
memory: "700Mi"
cpu: "500m"
volumes:
- name: config
persistentVolumeClaim:
claimName: resilio-pvc
- name: tv-shows
nfs:
server: 10.105.15.20
path: /mnt/hdd-pool/tv-shows
- name: movies
nfs:
server: 10.105.15.20
path: /mnt/hdd-pool/movies

View File

@@ -1,23 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: emby-http-svc
spec:
type: ClusterIP
selector:
app: emby
ports:
- port: 8096
targetPort: 8096
---
apiVersion: v1
kind: Service
metadata:
name: emby-https-svc
spec:
type: ClusterIP
selector:
app: emby
ports:
- port: 8920
targetPort: 8920

View File

@@ -24,5 +24,5 @@ appVersion: "1.0"
dependencies: dependencies:
- name: gitea - name: gitea
version: 12.2.0 version: 12.4.0
repository: https://dl.gitea.com/charts/ repository: https://dl.gitea.com/charts/

View File

@@ -56,19 +56,9 @@ gitea:
config: config:
database: database:
DB_TYPE: postgres DB_TYPE: postgres
HOST: weyma-pgsql-rw.cloudnativepg.svc.cluster.local HOST: pooler-weyma-rw.cloudnativepg.svc.cluster.local
NAME: gitea NAME: gitea
USER: gitea USER: gitea
queue:
TYPE: redis
CONN_STR: redis+cluster://:@gitea-kv-headless.gitea.svc.cluster.local:6379/0?pool_size=100&idle_timeout=180s&
session:
PROVIDER: redis
PROVIDER_CONFIG: redis+cluster://:@gitea-kv-headless.gitea.svc.cluster.local:6379/0?pool_size=100&idle_timeout=180s&
cache:
ENABLED: 'true'
ADAPTER: redis
HOST: redis+cluster://:@gitea-kv-headless.gitea.svc.cluster.local:6379/0?pool_size=100&idle_timeout=180s&
server: server:
DISABLE_SSH: false DISABLE_SSH: false
DOMAIN: git.dubyatp.xyz DOMAIN: git.dubyatp.xyz
@@ -92,21 +82,11 @@ gitea:
USER: gitea_dubyatp USER: gitea_dubyatp
security: security:
INSTALL_LOCK: true INSTALL_LOCK: true
metrics:
enabled: true
serviceMonitor:
enabled: true
extraDeploy: extraDeploy:
- apiVersion: hyperspike.io/v1
kind: Valkey
metadata:
name: gitea-kv
spec:
anonymousAuth: true
certIssuerType: ClusterIssuer
clusterDomain: cluster.local
clusterPreferredEndpointType: ip
nodes: 1
prometheus: false
replicas: 3
tls: false
volumePermissions: true
- apiVersion: traefik.io/v1alpha1 - apiVersion: traefik.io/v1alpha1
kind: IngressRouteTCP kind: IngressRouteTCP
metadata: metadata:
@@ -203,4 +183,6 @@ gitea:
postgresql-ha: postgresql-ha:
enabled: false enabled: false
valkey-cluster: valkey-cluster:
enabled: false enabled: true
valkey:
resourcesPreset: "small"

View File

@@ -24,5 +24,5 @@ appVersion: "1.0"
dependencies: dependencies:
- name: grafana - name: grafana
version: 9.4.3 version: 10.2.0
repository: https://grafana.github.io/helm-charts repository: https://grafana.github.io/helm-charts

View File

@@ -191,6 +191,6 @@ grafana:
image: image:
registry: docker.io registry: docker.io
repository: bats/bats repository: bats/bats
tag: 1.12.0 tag: 1.13.0
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
useStatefulSet: false useStatefulSet: false

View File

@@ -1,5 +1,5 @@
apiVersion: v2 apiVersion: v2
name: wekan name: jellyfin
description: A Helm chart for Kubernetes description: A Helm chart for Kubernetes
# A chart can be either an 'application' or a 'library' chart. # A chart can be either an 'application' or a 'library' chart.
@@ -23,6 +23,6 @@ version: 0.1.0
appVersion: "1.0" appVersion: "1.0"
dependencies: dependencies:
- name: wekan - name: jellyfin
version: 7.94.0 version: 2.5.0
repository: https://wekan.github.io/charts/ repository: https://jellyfin.github.io/jellyfin-helm

View File

@@ -0,0 +1,33 @@
{{- if and (.Values.jellyfin.metrics.enabled) (.Values.jellyfin.ingress.enabled) -}}
---
apiVersion: v1
kind: Service
metadata:
name: dummy-svc
namespace: {{ .Release.Namespace }}
spec:
selector:
app: dummy-svc
ports:
- protocol: TCP
port: 6767
targetPort: 6767
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: block-metrics
namespace: {{ .Release.Namespace }}
spec:
rules:
- host: {{ (index .Values.jellyfin.ingress.hosts 0).host }}
http:
paths:
- pathType: Prefix
path: "/metrics"
backend:
service:
name: dummy-svc
port:
number: 6767
{{- end }}

View File

@@ -0,0 +1,26 @@
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: emby-redirect
spec:
redirectRegex:
regex: ^https?://emby\.dubyatp\.xyz/(.*)$
replacement: https://jellyfin.dubyatp.xyz/${1}
permanent: true
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: emby-redirect
spec:
entryPoints:
- websecure
- web
routes:
- kind: Rule
match: Host(`emby.dubyatp.xyz`)
middlewares:
- name: emby-redirect
services:
- name: noop@internal
kind: TraefikService

View File

@@ -0,0 +1,11 @@
apiVersion: v1
data:
tls.crt:
tls.key:
kind: Secret
metadata:
annotations:
replicator.v1.mittwald.de/replicate-from: cert-manager/cert-dubyatp-xyz
replicator.v1.mittwald.de/replicated-keys: tls.crt,tls.key
name: cert-dubyatp-xyz
type: Opaque

73
jellyfin/values.yaml Normal file
View File

@@ -0,0 +1,73 @@
jellyfin:
deploymentStrategy:
type: Recreate
ingress:
enabled: true
hosts:
- host: jellyfin.dubyatp.xyz
paths:
- path: /
pathType: ImplementationSpecific
tls:
- secretName: cert-dubyatp.xyz
hosts:
- jellyfin.dubyatp.xyz
persistence:
config:
size: 25Gi
media:
enabled: false
volumes:
- name: tv-shows
nfs:
server: 10.105.15.20
path: /mnt/hdd-pool/tv-shows
- name: movies
nfs:
server: 10.105.15.20
path: /mnt/hdd-pool/movies
- name: dvr
nfs:
server: 10.105.15.20
path: /mnt/hdd-pool/DVR
- name: youtube-vids
nfs:
server: 10.105.15.20
path: /mnt/hdd-pool/youtube-vids
- name: transcode-temp
emptyDir:
sizeLimit: 8Gi
medium: Memory
- name: dev-dri
hostPath:
path: /dev/dri
metrics:
enabled: true
serviceMonitor:
enabled: true
volumeMounts:
- name: tv-shows
mountPath: /mnt/tv-shows
- name: movies
mountPath: /mnt/movies
- name: dvr
mountPath: /mnt/dvr
- name: youtube-vids
mountPath: /mnt/youtube-vids
- name: transcode-temp
mountPath: /tmp/transcode
- name: dev-dri
mountPath: /dev/dri
podAnnotations:
backup.velero.io/backup-volumes: config
securityContext:
privileged: true
nodeSelector:
kubernetes.io/hostname: weyma-talos-testw04
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: extensions.talos.dev/i915
operator: Exists

25
netmaker/config.yaml Normal file
View File

@@ -0,0 +1,25 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: netmaker-config
data:
SERVER_NAME: netmaker.infra.dubyatp.xyz
SERVER_API_CONN_STRING: api.netmaker.infra.dubyatp.xyz:443
SERVER_HTTP_HOST: api.netmaker.infra.dubyatp.xyz
API_PORT: "8081"
WG_QUICK_USERSPACE_IMPLEMENTATION: wireguard-go
DNS_MODE: "off"
DISPLAY_KEYS: "on"
DATABASE: postgres
SQL_HOST: "pooler-weyma-rw.cloudnativepg.svc.cluster.local"
SQL_PORT: "5432"
SQL_DB: "netmaker"
SQL_USER: "netmaker"
MQ_USERNAME: netmaker
CORS_ALLOWED_ORIGIN: '*'
SERVER_BROKER_ENDPOINT: "ws://mq:1883"
BROKER_ENDPOINT: "wss://broker.netmaker.infra.dubyatp.xyz"
PLATFORM: "Kubernetes"
VERBOSITY: "3"
K8s: "true"
CACHING_ENABLED: "false"

16
netmaker/ingress.yaml Normal file
View File

@@ -0,0 +1,16 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: netmaker-api-ingress
spec:
rules:
- host: api.netmaker.infra.dubyatp.xyz
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: netmaker-rest
port:
number: 8081

View File

@@ -0,0 +1,11 @@
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: shared-certs-pvc
spec:
storageClassName: weyma-shared
accessModes:
- ReadWriteMany
resources:
requests:
storage: 100Mi

View File

@@ -0,0 +1,38 @@
apiVersion: v1
data:
mosquitto.conf: |
per_listener_settings false
listener 8883
protocol websockets
allow_anonymous false
listener 1883
protocol websockets
allow_anonymous false
password_file /mosquitto/temp/password.txt
wait.sh: |
#!/bin/ash
encrypt_password() {
echo "${MQ_USERNAME}:${MQ_PASSWORD}" > /mosquitto/temp/password.txt
mosquitto_passwd -U /mosquitto/temp/password.txt
chmod 0700 /mosquitto/temp/password.txt
}
main(){
encrypt_password
echo "Starting MQ..."
# Run the main container command.
/docker-entrypoint.sh
/usr/sbin/mosquitto -c /mosquitto/config/mosquitto.conf
}
main "${@}"
kind: ConfigMap
metadata:
labels:
app.kubernetes.io/instance: mosquitto
app.kubernetes.io/name: mosquitto
name: mosquitto-config
namespace: netmaker

View File

@@ -0,0 +1,83 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: mosquitto
spec:
progressDeadlineSeconds: 600
replicas: 1
selector:
matchLabels:
app.kubernetes.io/instance: mosquitto
app.kubernetes.io/name: mosquitto
strategy:
type: Recreate
template:
metadata:
labels:
app.kubernetes.io/instance: mosquitto
app.kubernetes.io/name: mosquitto
spec:
containers:
- image: eclipse-mosquitto:2.0.22-openssl
imagePullPolicy: IfNotPresent
command: ["/mosquitto/config/wait.sh"]
livenessProbe:
failureThreshold: 3
periodSeconds: 10
successThreshold: 1
tcpSocket:
port: 8883
timeoutSeconds: 1
name: mosquitto
env:
- name: MQ_USERNAME
value: netmaker
- name: MQ_PASSWORD
valueFrom:
secretKeyRef:
key: mq_password
name: netmaker-secrets
ports:
- containerPort: 1883
name: mqtt
protocol: TCP
- containerPort: 8883
name: mqtt2
protocol: TCP
readinessProbe:
failureThreshold: 3
periodSeconds: 10
successThreshold: 1
tcpSocket:
port: 8883
timeoutSeconds: 1
resources: {}
startupProbe:
failureThreshold: 30
periodSeconds: 5
successThreshold: 1
tcpSocket:
port: 8883
timeoutSeconds: 1
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /mosquitto/config
name: mosquitto-config
- mountPath: /mosquitto/certs
name: shared-certs
- mountPath: /mosquitto/temp
name: mosquitto-temp
dnsPolicy: ClusterFirst
restartPolicy: Always
terminationGracePeriodSeconds: 30
volumes:
- configMap:
name: mosquitto-config
defaultMode: 0755
name: mosquitto-config
- name: mosquitto-temp
emptyDir:
- name: shared-certs
persistentVolumeClaim:
claimName: shared-certs-pvc

View File

@@ -0,0 +1,18 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: mosquitto-ingress
labels:
app.kubernetes.io/name: mosquitto-ingress
spec:
rules:
- host: broker.netmaker.infra.dubyatp.xyz
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: mq
port:
number: 8883

View File

@@ -0,0 +1,36 @@
apiVersion: v1
kind: Service
metadata:
name: mq
namespace: netmaker
spec:
ports:
- name: mqtt
port: 1883
protocol: TCP
targetPort: mqtt
- name: mqtt2
port: 8883
protocol: TCP
targetPort: mqtt2
selector:
app.kubernetes.io/instance: mosquitto
app.kubernetes.io/name: mosquitto
sessionAffinity: None
---
apiVersion: v1
kind: Service
metadata:
name: 'netmaker-mqtt'
spec:
externalTrafficPolicy: Cluster
type: NodePort
selector:
app.kubernetes.io/instance: mosquitto
app.kubernetes.io/name: mosquitto
ports:
- port: 31883
nodePort: 31883
protocol: TCP
targetPort: 8883
name: nm-mqtt

View File

@@ -0,0 +1,21 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: postgres-pw
spec:
data:
- remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: cloudnativepg
metadataPolicy: None
property: netmaker_pw
secretKey: password
refreshInterval: 1h
secretStoreRef:
kind: ClusterSecretStore
name: weyma-vault
target:
creationPolicy: Owner
deletionPolicy: Retain
name: postgres-pw

35
netmaker/secrets.yaml Normal file
View File

@@ -0,0 +1,35 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: netmaker-secrets
spec:
data:
- remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: netmaker
metadataPolicy: None
property: master_key
secretKey: master_key
- remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: netmaker
metadataPolicy: None
property: mq_password
secretKey: mq_password
- remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: netmaker
metadataPolicy: None
property: turn_password
secretKey: turn_password
refreshInterval: 1h
secretStoreRef:
kind: ClusterSecretStore
name: weyma-vault
target:
creationPolicy: Owner
deletionPolicy: Retain
name: netmaker-secrets

95
netmaker/statefulset.yaml Normal file
View File

@@ -0,0 +1,95 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
app: netmaker
name: netmaker
spec:
replicas: 3
serviceName: netmaker-headless
selector:
matchLabels:
app: netmaker
template:
metadata:
labels:
app: netmaker
spec:
initContainers:
- name: init-sysctl
image: busybox
imagePullPolicy: IfNotPresent
command: ["/bin/sh", "-c"]
args: ["sysctl -w net.ipv4.ip_forward=1 && sysctl -w net.ipv4.conf.all.src_valid_mark=1 && sysctl -w net.ipv6.conf.all.disable_ipv6=0 && sysctl -w net.ipv6.conf.all.forwarding=1"]
securityContext:
privileged: true
dnsPolicy: ClusterFirstWithHostNet
containers:
- env:
- name: NODE_ID
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: SQL_PASS
valueFrom:
secretKeyRef:
key: password
name: postgres-pw
- name: MASTER_KEY
valueFrom:
secretKeyRef:
key: master_key
name: netmaker-secrets
- name: MQ_PASSWORD
valueFrom:
secretKeyRef:
key: mq_password
name: netmaker-secrets
- name: TURN_SERVER_PASSWORD
valueFrom:
secretKeyRef:
key: turn_password
name: netmaker-secrets
envFrom:
- configMapRef:
name: netmaker-config
image: gravitl/netmaker:v1.1.0
imagePullPolicy: Always
name: netmaker
ports:
- containerPort: 8081
protocol: TCP
- containerPort: 31821
protocol: UDP
- containerPort: 31822
protocol: UDP
- containerPort: 31823
protocol: UDP
- containerPort: 31824
protocol: UDP
- containerPort: 31825
protocol: UDP
- containerPort: 31826
protocol: UDP
- containerPort: 31827
protocol: UDP
- containerPort: 31828
protocol: UDP
- containerPort: 31829
protocol: UDP
- containerPort: 31830
protocol: UDP
resources: {}
securityContext:
capabilities:
add:
- NET_ADMIN
- NET_RAW
volumeMounts:
- mountPath: /etc/netmaker/
name: shared-certs
volumes:
- name: shared-certs
persistentVolumeClaim:
claimName: shared-certs-pvc

14
netmaker/svc.yaml Normal file
View File

@@ -0,0 +1,14 @@
apiVersion: v1
kind: Service
metadata:
name: 'netmaker-rest'
spec:
ports:
- name: rest
port: 8081
protocol: TCP
targetPort: 8081
selector:
app: 'netmaker'
sessionAffinity: None
type: ClusterIP

View File

@@ -0,0 +1,21 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: netmaker-ui
spec:
replicas: 2
selector:
matchLabels:
app: netmaker-ui
template:
metadata:
labels:
app: netmaker-ui
spec:
containers:
- name: netmaker-ui
image: gravitl/netmaker-ui:v1.1.0
env:
- name: BACKEND_URL
value: 'https://api.netmaker.infra.dubyatp.xyz'
terminationGracePeriodSeconds: 15

16
netmaker/ui/ingress.yaml Normal file
View File

@@ -0,0 +1,16 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: netmaker-ui-ingress
spec:
rules:
- host: dashboard.netmaker.infra.dubyatp.xyz
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: netmaker-ui
port:
number: 80

13
netmaker/ui/svc.yaml Normal file
View File

@@ -0,0 +1,13 @@
apiVersion: v1
kind: Service
metadata:
name: 'netmaker-ui'
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: 'netmaker-ui'
sessionAffinity: None
type: 'ClusterIP'

View File

@@ -8,7 +8,7 @@ data:
POSTGRES_USER: peertube POSTGRES_USER: peertube
POSTGRES_DB: peertube POSTGRES_DB: peertube
PEERTUBE_DB_USERNAME: peertube PEERTUBE_DB_USERNAME: peertube
PEERTUBE_DB_HOSTNAME: weyma-pgsql-rw.cloudnativepg.svc.cluster.local PEERTUBE_DB_HOSTNAME: pooler-weyma-rw.cloudnativepg.svc.cluster.local
PEERTUBE_DB_PORT: "5432" PEERTUBE_DB_PORT: "5432"
PEERTUBE_WEBSERVER_HOSTNAME: "tube.dubyatp.xyz" PEERTUBE_WEBSERVER_HOSTNAME: "tube.dubyatp.xyz"
PEERTUBE_TRUST_PROXY: '["127.0.0.1", "loopback", "172.18.0.0/16"]' PEERTUBE_TRUST_PROXY: '["127.0.0.1", "loopback", "172.18.0.0/16"]'

View File

@@ -1,3 +1,6 @@
{ {
"$schema": "https://docs.renovatebot.com/renovate-schema.json" "$schema": "https://docs.renovatebot.com/renovate-schema.json",
"kubernetes": {
"managerFilePatterns": ["deployment.yaml", "statefulset.yaml", "cron.yaml", "cronjob.yaml"]
}
} }

View File

@@ -27,6 +27,11 @@ spec:
secretKeyRef: secretKeyRef:
key: github-com-pat key: github-com-pat
name: renovate-github-com-token name: renovate-github-com-token
- name: RENOVATE_GIT_PRIVATE_KEY
valueFrom:
secretKeyRef:
key: ssh-key
name: renovate-ssh-key
- name: RENOVATE_AUTODISCOVER - name: RENOVATE_AUTODISCOVER
value: 'false' value: 'false'
- name: RENOVATE_BASE_DIR - name: RENOVATE_BASE_DIR

View File

@@ -0,0 +1,17 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: renovate-ssh-key
spec:
refreshInterval: 1h
secretStoreRef:
name: weyma-vault
kind: ClusterSecretStore
target:
name: renovate-ssh-key
creationPolicy: Owner
data:
- secretKey: ssh-key
remoteRef:
key: renovate
property: ssh-key

View File

@@ -1,12 +0,0 @@
{{- define "wekan.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 -}}

View File

@@ -1,12 +0,0 @@
{{ if .Values.configMapsManaged }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "wekan.fullname" $ }}-config
data:
{{- range $key := .Values.configMapEnv -}}
{{ if $key.value }}
{{ $key.name | indent 2 }}: {{ $key.value | toString | quote }}
{{- end }}
{{- end }}
{{ end }}

View File

@@ -1,31 +0,0 @@
{{- if .Values.externalSecretsManaged }}
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: {{ include "wekan.fullname" . }}-extsecret
spec:
data:
{{- if .Values.externalSecrets.secrets }}
{{- range $key := .Values.externalSecrets.secrets }}
{{- if $key.keyName }}
- secretKey: {{ $key.secretKeyName }}
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: {{ $key.keyName }}
metadataPolicy: None
property: {{ $key.property }}
{{- end }}
{{- end }}
{{- else }}
{{- fail "externalSecrets.secrets must be defined when externalSecretsManaged is true" }}
{{- end }}
refreshInterval: 1h
secretStoreRef:
kind: {{ .Values.externalSecrets.secretStore.kind }}
name: {{ .Values.externalSecrets.secretStore.name }}
target:
creationPolicy: Owner
deletionPolicy: Retain
name: {{ .Values.externalSecrets.targetSecretName }}
{{- end }}

View File

@@ -1,63 +0,0 @@
externalSecretsManaged: true
externalSecrets:
targetSecretName: wekan-secrets
secrets:
- keyName: wekan
secretKeyName: OAUTH2_CLIENT_ID
property: client_id
- keyName: wekan
secretKeyName: OAUTH2_SECRET
property: secret
secretStore:
kind: ClusterSecretStore
name: weyma-vault
configMapsManaged: true
configMapEnv:
- name: OAUTH2_ENABLED
value: "true"
- name: OAUTH2_LOGIN_STYLE
value: redirect
- name: OAUTH2_SERVER_URL
value: https://auth.dubyatp.xyz
- name: OAUTH2_AUTH_ENDPOINT
value: /application/o/authorize/
- name: OAUTH2_USERINFO_ENDPOINT
value: /application/o/userinfo/
- name: OAUTH2_TOKEN_ENDPOINT
value: /application/o/token/
- name: OAUTH2_ID_MAP
value: sub
- name: OAUTH2_USERNAME_MAP
value: email
- name: OAUTH2_FULLNAME_MAP
value: given_name
- name: OAUTH2_EMAIL_MAP
value: email
wekan:
endpoint: wekan.dubyatp.xyz
root_url: https://wekan.dubyatp.xyz
secretManaged: false
podAnnotations:
backup.velero.io/backup-volumes: shared-data-volume
sharedDataFolder:
accessMode: ReadWriteMany
extraEnvFrom: |
- configMapRef:
name: wekan-config
- secretRef:
name: wekan-secrets
ingress:
enabled: true
path: /
pathtype: ImplementationSpecific
hosts:
- wekan.dubyatp.xyz
tls:
- secretName: cert-dubyatp-xyz
hosts:
- wekan.dubyatp.xyz
mongodb:
updateStrategy:
type: Recreate
podAnnotations:
backup.velero.io/backup-volumes: datadir

View File

@@ -14,7 +14,7 @@ spec:
spec: spec:
containers: containers:
- name: yt-dlp-bot - name: yt-dlp-bot
image: 'git.dubyatp.xyz/williamp/yt-dlp-bot:df8c7e9' image: 'git.dubyatp.xyz/williamp/yt-dlp-bot:1ef217f'
env: env:
- name: OUT_PATH - name: OUT_PATH
value: /data/youtube-vids value: /data/youtube-vids

10
zap2xml/bucket.yaml Normal file
View File

@@ -0,0 +1,10 @@
apiVersion: objectbucket.io/v1alpha1
kind: ObjectBucketClaim
metadata:
name: zap2xml-bucket
namespace: zap2xml
spec:
generateBucketName: zap2xml
storageClassName: weyma-s3-bucket
additionalConfig:
maxSize: "1Gi"

98
zap2xml/config.yaml Normal file
View File

@@ -0,0 +1,98 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: zap2xml-s3config
data:
.s3cfg: |
[default]
access_key =
access_token =
add_encoding_exts =
add_headers =
bucket_location = US
ca_certs_file =
cache_file =
check_ssl_certificate = True
check_ssl_hostname = True
cloudfront_host = cloudfront.amazonaws.com
connection_max_age = 5
connection_pooling = True
content_disposition =
content_type =
default_mime_type = binary/octet-stream
delay_updates = False
delete_after = False
delete_after_fetch = False
delete_removed = False
dry_run = False
enable_multipart = True
encoding = UTF-8
encrypt = False
expiry_date =
expiry_days =
expiry_prefix =
follow_symlinks = False
force = False
get_continue = False
gpg_command = /usr/bin/gpg
gpg_decrypt = %(gpg_command)s -d --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
gpg_encrypt = %(gpg_command)s -c --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
gpg_passphrase =
guess_mime_type = True
host_base = https://weyma-s3.infra.dubyatp.xyz
host_bucket =
human_readable_sizes = False
invalidate_default_index_on_cf = False
invalidate_default_index_root_on_cf = True
invalidate_on_cf = False
keep_dirs = False
kms_key =
limit = -1
limitrate = 0
list_allow_unordered = False
list_md5 = False
log_target_prefix =
long_listing = False
max_delete = -1
max_retries = 5
mime_type =
multipart_chunk_size_mb = 15
multipart_copy_chunk_size_mb = 1024
multipart_max_chunks = 10000
preserve_attrs = True
progress_meter = True
proxy_host =
proxy_port = 0
public_url_use_https = False
put_continue = False
recursive = False
recv_chunk = 65536
reduced_redundancy = False
requester_pays = False
restore_days = 1
restore_priority = Standard
secret_key =
send_chunk = 65536
server_side_encryption = False
signature_v2 = False
signurl_use_https = False
simpledb_host = sdb.amazonaws.com
skip_destination_validation = False
skip_existing = False
socket_timeout = 300
ssl_client_cert_file =
ssl_client_key_file =
stats = False
stop_on_error = False
storage_class =
throttle_max = 100
upload_id =
urlencoding_mode = normal
use_http_expect = False
use_https = True
use_mime_magic = True
verbosity = WARNING
website_endpoint = http://%(bucket)s.s3-website-%(location)s.amazonaws.com/
website_error =
website_index = index.html

87
zap2xml/cron.yaml Normal file
View File

@@ -0,0 +1,87 @@
apiVersion: batch/v1
kind: CronJob
metadata:
name: zap2xml-dtv-02191
spec:
schedule: "0 */12 * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: zap2xml
image: git.dubyatp.xyz/williamp/kube-zap2xml:c075fec
envFrom:
- secretRef:
name: zap2xml-bucket
env:
- name: LINEUP_ID
value: USA-DITV506-X
- name: POSTAL_CODE
value: "02191"
- name: TIMESPAN
value: "120"
- name: OUTPUT_FILE
value: /tmp/xmltv.xml
- name: PUBLIC_FILENAME
value: xmltv-directv-02191.xml
- name: S3_URL
value: s3://zap2xml-c134c9a7-a7a0-4113-997e-78e72ec3f576
volumeMounts:
- name: s3-config
mountPath: /root
- name: temp
mountPath: /tmp
restartPolicy: Never
volumes:
- name: s3-config
configMap:
name: zap2xml-s3config
- name: temp
emptyDir:
sizeLimit: 1Gi
medium: Memory
---
apiVersion: batch/v1
kind: CronJob
metadata:
name: zap2xml-ota-02191
spec:
schedule: "30 */12 * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: zap2xml
image: git.dubyatp.xyz/williamp/kube-zap2xml:c075fec
envFrom:
- secretRef:
name: zap2xml-bucket
env:
- name: LINEUP_ID
value: USA-OTA02191
- name: POSTAL_CODE
value: "02191"
- name: TIMESPAN
value: "120"
- name: OUTPUT_FILE
value: /tmp/xmltv.xml
- name: PUBLIC_FILENAME
value: xmltv-ota-02191.xml
- name: S3_URL
value: s3://zap2xml-c134c9a7-a7a0-4113-997e-78e72ec3f576
volumeMounts:
- name: s3-config
mountPath: /root
- name: temp
mountPath: /tmp
restartPolicy: Never
volumes:
- name: s3-config
configMap:
name: zap2xml-s3config
- name: temp
emptyDir:
sizeLimit: 1Gi
medium: Memory