222 Commits

Author SHA1 Message Date
Michael Thomson cb15404a29 fix grimmory repo 2026-05-24 14:54:44 -04:00
Michael Thomson 84faf1c5a9 indent fix 2026-05-24 14:51:45 -04:00
Michael Thomson 9d01dbb577 grimmory 2026-05-24 14:49:20 -04:00
Michael Thomson ba735f88ba remove wger 2026-05-13 22:15:25 -04:00
Michael Thomson f0008002ac wger fix entrypoint script with env flag 2026-05-13 21:48:07 -04:00
Michael Thomson 88cfe0108d Revert "wger disable nginx"
This reverts commit ee5bfb66f6.
2026-05-13 21:29:13 -04:00
Michael Thomson ee5bfb66f6 wger disable nginx 2026-05-13 21:20:58 -04:00
Michael Thomson b0debf0c59 wger local only 2026-05-13 21:12:40 -04:00
Michael Thomson a18d79ec43 add wger remove loki 2026-05-13 21:05:24 -04:00
Michael Thomson 4cd3593ef8 ollama no PVC 2026-05-12 14:59:41 -04:00
Michael Thomson 500a9549ae ollama 2026-05-12 14:56:32 -04:00
Michael Thomson 4f5701ddb0 nvidia device plugin privileged 2026-05-12 14:25:20 -04:00
Michael Thomson fc162e8a1b nvidia gpu operator to device plugin 2026-05-12 14:15:33 -04:00
Michael Thomson 2354c431e3 nvidia gpu operator fix hostpaths 2026-05-12 13:29:27 -04:00
Michael Thomson 3eb32b8d66 nvidia gpu operator 2026-05-12 13:26:08 -04:00
Michael Thomson a4750c0cce gitea disable valkey cluster 2026-05-11 22:05:09 -04:00
Michael Thomson e7e54ac2f9 gitea valkey and mailer 2026-05-11 22:01:15 -04:00
Michael Thomson f87aab87f7 Revert "netbird chart name"
This reverts commit 78f01de0a5.
2026-05-09 21:19:10 -04:00
Michael Thomson 78f01de0a5 netbird chart name 2026-05-09 21:14:50 -04:00
Michael Thomson a15bc194d9 jellyfin netbird access 2026-05-07 14:57:05 -04:00
Michael Thomson 4b7e421d26 homeassistant netbird access 2026-05-07 14:33:59 -04:00
Michael Thomson 5f2f2a7b1d netbird privileged 2026-05-07 14:23:37 -04:00
Michael Thomson 26f8415641 netbird networkrouter 2026-05-07 14:15:57 -04:00
Michael Thomson d1d271260f netbird operator chart name fix 2026-05-07 13:57:53 -04:00
Michael Thomson 451893371b netbird operator 2026-05-07 13:55:23 -04:00
Michael Thomson b2b1e08df3 privileged gitea 2026-04-27 22:20:22 -04:00
Michael Thomson d5d250ae7d immich cluster to 3 instances 2026-04-27 22:13:54 -04:00
Michael Thomson 5c761ae5bb remove old apps 2026-04-27 22:03:32 -04:00
Michael Thomson 34047818c6 media and ha privileged 2026-04-27 20:28:29 -04:00
Michael Thomson c2ece48a6f metallb ignore exclude label 2026-04-27 14:30:54 -04:00
Michael Thomson 4d6785e303 privileged metallb 2026-04-27 13:11:14 -04:00
Flux 15bbca8109 Add Flux v2.8.3 component manifests 2026-04-27 12:52:08 -04:00
Michael Thomson 6eeec8287d privileged longhorn namespace 2026-04-27 11:37:39 -04:00
Michael Thomson 5e44afce21 remove collabora from nextcloud release 2026-04-14 08:21:48 -04:00
Michael Thomson fef8ae55a3 update nextcloud 2026-04-13 22:15:39 -04:00
Michael Thomson 1f7f20653f update longhorn again 2026-04-11 20:22:21 -04:00
Michael Thomson b1286120da update longhorn 2026-04-11 20:17:28 -04:00
Michael Thomson b7e58b9ea3 ollama upgrade ctx size 2026-03-20 09:53:54 -04:00
Michael Thomson e65f526e92 open webui 2026-03-20 01:42:02 -04:00
Michael Thomson 9e81176778 ollama kustomization interval 2026-03-20 01:21:42 -04:00
Michael Thomson e90bcfeb6f ollama ingress 2026-03-20 01:18:26 -04:00
Michael Thomson 1062e511e1 ollama 2026-03-20 01:15:23 -04:00
Michael Thomson 6ba6b5d2d3 ollama 2026-03-20 01:13:59 -04:00
Michael Thomson 37db88f2d0 alloy push to loki 2026-03-20 00:20:10 -04:00
Michael Thomson d11cfda191 loki remove auth 2026-03-20 00:00:59 -04:00
Michael Thomson dd5d17c053 fix grafana community reference 2026-03-19 23:41:20 -04:00
Michael Thomson f0bcb88596 add loki helm repo 2026-03-19 23:38:53 -04:00
Michael Thomson 027c79791f add loki and alloy 2026-03-19 23:34:12 -04:00
Michael Thomson 1778bdc826 remove authentik 2026-03-15 20:24:07 -04:00
Michael Thomson 7af68faa55 remove booklore 2026-03-15 19:31:09 -04:00
Michael Thomson f58f0143f2 Update booklore 2026-03-14 07:53:34 -04:00
Michael Thomson df6ba41e32 seerr repo fix 2026-02-17 10:38:19 -05:00
Michael Thomson e48a710164 jellyseerr -> seerr 2026-02-17 10:31:17 -05:00
mthomson 043dfe5e42 update collabora 2026-01-12 14:32:06 -05:00
mthomson 191f2c747e remove larry from psql 2025-12-31 16:01:33 -05:00
mthomson 2cf472ed35 remove nvidia and larry selectors 2025-12-31 15:43:39 -05:00
mthomson 38c5b1b2df sops yaml 2025-12-21 14:06:18 -05:00
mthomson 0b38af2492 kube prometheus stack downgrade 2025-12-19 16:01:50 -05:00
mthomson f776bdccaf kube prometheus stack grafana credentials 2025-12-19 15:38:15 -05:00
mthomson c2d39fb5b7 immich postgres podmonitor 2025-12-19 15:24:50 -05:00
mthomson a491af0099 update kube prometheus stack 2025-12-19 15:06:19 -05:00
mthomson 2ba715a948 prometheus: use all monitors 2025-12-19 14:15:50 -05:00
mthomson 156e26b9a5 update traefik 2025-12-19 13:15:03 -05:00
mthomson bc5b430426 remove reflector 2025-12-18 06:24:36 -05:00
mthomson 2c8f7a0ef1 remove wildcard cert 2025-12-18 06:24:21 -05:00
mthomson 27c6abb459 move all certs to automatic issuer 2025-12-18 06:17:35 -05:00
mthomson f1d0cbeedd move issuer to configs 2025-12-18 06:12:31 -05:00
mthomson 8f4c2dc1b3 try ingress-generated certs 2025-12-18 05:34:06 -05:00
mthomson c9ab918716 remove sealed secrets 2025-12-17 16:11:34 -05:00
mthomson 22eb8f3817 add all sops secrets 2025-12-17 15:57:49 -05:00
mthomson 2278720656 remove all sealed secrets 2025-12-17 15:55:18 -05:00
mthomson 03f4c29ec9 Revert "test: sops"
This reverts commit a1474579a5.
2025-12-17 15:49:50 -05:00
mthomson a1474579a5 test: sops 2025-12-17 15:37:08 -05:00
mthomson 48f6f5e1b5 sops decryption on all kustomizations 2025-12-17 14:21:48 -05:00
mthomson e072415e68 sops enable on booklore 2025-12-17 12:48:24 -05:00
mthomson 75d3669947 sops secret test 2025-12-17 12:35:26 -05:00
mthomson 290617d375 update longhorn defaults 2025-12-17 10:58:17 -05:00
mthomson fd0663d455 patch kustomize controller for global SOPS 2025-12-17 10:35:48 -05:00
mthomson 28f4c67477 remove calibre 2025-12-17 06:02:04 -05:00
mthomson eeef0657ed refactor dns endpoint usage to annotations 2025-12-17 05:50:08 -05:00
mthomson f66dd41bf5 fix nextcloud aggain again 2025-12-13 23:20:29 -05:00
mthomson 3673d4a32c fix nextcloud aggain 2025-12-13 23:12:54 -05:00
mthomson fd9ea70d25 fix nextcloud 2025-12-13 23:06:58 -05:00
mthomson b2a695cce8 fix immich 2025-12-13 22:50:12 -05:00
mthomson ed607e8dde update nextcloud again 2025-12-13 22:37:56 -05:00
mthomson 39b820b704 update nextcloud once 2025-12-13 22:31:42 -05:00
mthomson 32e9573888 update authentik and immich secrets again 2025-12-13 22:30:15 -05:00
mthomson 7c63381686 update authentik and immich secrets 2025-12-13 21:48:28 -05:00
mthomson 4c04890598 downgrade nextcloud postgres 2025-12-13 20:44:12 -05:00
mthomson 3f2eb57074 update nextcloud 2025-12-13 20:37:44 -05:00
mthomson 6730b79a87 fix gitea secret ref 2025-12-13 20:35:25 -05:00
mthomson 4504b2635b fix karakeep secret 2025-12-13 20:15:05 -05:00
mthomson 23e681529d update secrets 2025-12-13 20:11:59 -05:00
mthomson 5bb12088eb namespaces before crds 2025-12-13 14:56:38 -05:00
mthomson 437ad8d5fc fix longorn secret 2025-12-13 13:35:55 -05:00
mthomson e497126f24 traefik remove server loadbalancerip 2025-12-13 12:53:18 -05:00
mthomson 1aacc702e7 move metallb configs to controllers 2025-12-13 12:42:40 -05:00
mthomson 202f41968a fix traefik 2025-12-13 12:30:19 -05:00
mthomson 322d16c104 cert namespace 2025-12-13 12:02:14 -05:00
mthomson 2780080af9 move cert and issuer to controllers 2025-12-13 11:58:35 -05:00
mthomson 6e63085fb3 re-ecnrypt all secrets, update some values 2025-12-13 11:33:20 -05:00
mthomson f12e27c5c6 change clusters to backup mode 2025-12-13 09:15:34 -05:00
mthomson 8ff38d1cbf update crds 2025-12-12 18:23:47 -05:00
Flux 744e5a8cce Add Flux v2.7.4 component manifests 2025-12-12 17:11:50 -05:00
mthomson 2582696e53 update server to new local 2025-12-12 14:29:35 -05:00
mthomson 28c142c348 minecraft whitelist 2025-12-11 16:19:09 -05:00
mthomson 8cb9a318ca minecraft loadbalancer 2025-12-09 13:44:50 -05:00
mthomson 9b43e6b7e5 minecraft ingress 2025-12-08 17:02:25 -05:00
mthomson b1aa0ae0ae minecraft 2025-12-08 16:58:04 -05:00
mthomson 969a3adf32 stirling pdf fix chart ref 2025-12-03 12:56:27 -05:00
mthomson 6708cd2f91 stirling pdf fix 2025-12-03 12:53:49 -05:00
mthomson dffee43871 stirling pdf 2025-12-03 12:52:39 -05:00
mthomson 66c98c84c1 update: use new gpu node label 2025-12-03 11:56:49 -05:00
mthomson 6489eb02fe update: nvidia device plugin -> cdi plugin 2025-12-03 11:49:49 -05:00
mthomson 3d31e8ec54 fix: deprecated metallb annotations 2025-12-01 10:37:14 -05:00
mthomson 586e5c245e fix: retention policy 2025-11-27 20:48:28 -05:00
mthomson f74e995af7 fix: update booklore dns 2025-10-30 12:48:08 -04:00
mthomson 5685149b77 fix: update booklore mariadb tag 2025-10-30 10:58:55 -04:00
mthomson 8e974c6e91 fix: ingress 2025-10-30 10:49:46 -04:00
mthomson ea570f1ef9 fix: mariadb tag change 2025-10-30 10:44:58 -04:00
mthomson f15974712d booklore 2025-10-30 10:36:29 -04:00
mthomson dff4173e0a update authentik 2025-10-22 10:50:14 -04:00
mthomson b0d723a730 update immich again again again again again 2025-10-22 10:41:47 -04:00
mthomson cb7f79cea9 update immich again again again again 2025-10-22 10:32:07 -04:00
mthomson 3a8a8807df update immich again again again 2025-10-22 10:05:06 -04:00
mthomson 53956bc121 update immich again again 2025-10-22 09:48:56 -04:00
mthomson 3536b46c4c update immich again 2025-10-22 09:39:56 -04:00
mthomson 2a8197698b update immich 2025-10-22 09:32:31 -04:00
mthomson 646dfa1c6c jellyfin transcode and cache folder 2025-10-21 12:08:12 -04:00
mthomson 876c260d8a gitea actions fix root url 2025-10-21 11:04:55 -04:00
mthomson 109fef07f8 gitea actions fix release name 2025-10-21 10:59:38 -04:00
mthomson 2dc7088a07 gitea root url fix 2025-10-21 10:51:50 -04:00
mthomson b60f464b14 gitea actions 2025-10-21 10:48:02 -04:00
mthomson 9cb1f1776f gitea enable actions 2025-10-21 10:27:35 -04:00
mthomson 636e162ccc update gitea 2025-10-21 10:19:04 -04:00
mthomson 3a4a6160c7 remove woodpecker 2025-10-21 10:11:20 -04:00
mthomson dff7ee1b25 remove qbittorrent and readarr 2025-10-05 16:56:06 -04:00
mthomson 914ac3e05f update: removed plane 2025-09-27 12:41:22 -04:00
mthomson 8d6275c5c0 actual fix port again again 2025-08-18 07:28:49 -04:00
mthomson aad9cc733f actual fix port again 2025-08-18 07:25:48 -04:00
mthomson b631e5b0c8 actual fix port 2025-08-18 07:14:56 -04:00
mthomson 2567371b24 add actual again 2025-08-17 23:16:56 -04:00
mthomson 824d17e48e karakeep fixed openai env variable 2025-07-15 15:21:21 -04:00
mthomson 680f33f67c karakeep openai 2025-07-15 15:12:23 -04:00
mthomson 417dbcaa02 remove roundcube 2025-06-17 15:54:03 -04:00
mthomson eb58e2925c karakeep back to nightly 2025-06-11 09:49:31 -04:00
mthomson 47e6e2c559 karakeep fix 2025-06-11 09:46:14 -04:00
mthomson 463f5b5de6 karakeep enable sign ups 2025-06-11 09:33:32 -04:00
mthomson 310084743b hoarder -> karakeep 2025-06-11 09:17:48 -04:00
mthomson b8a80b1207 immich cnpg backup 2025-06-10 21:28:17 -04:00
mthomson fef24dc3cb longhorn wasabi secret fix for real this time 2025-06-10 16:50:29 -04:00
mthomson d66d0a5898 longhorn wasabi secret fix AGAIN 2025-06-10 16:47:34 -04:00
mthomson 0aafd83d11 longhorn wasabi secret fix 2025-06-10 16:46:00 -04:00
mthomson 682a5d7f15 longhorn wasabi 2025-06-10 16:42:00 -04:00
mthomson 95204ab87d authentik cluster refactor 2025-06-10 16:32:29 -04:00
mthomson b43e1a8021 authentik cnpg cluster update 2025-06-10 16:13:07 -04:00
mthomson 9043b3fe8c authentik cnpg skip wal archive check 2025-06-10 16:02:39 -04:00
mthomson 0f6c348cd7 authentik cnpg test recovery 2025-06-10 15:53:09 -04:00
mthomson 61f793a53c authentik cnpg add https 2025-06-10 15:29:03 -04:00
mthomson 2effdb5a11 authentik cnpg try wasabi 2025-06-10 15:25:13 -04:00
mthomson 3af28c1327 authentik cnpg try again AGAIN AGAIN 2025-06-10 13:30:07 -04:00
mthomson a481b39804 authentik cnpg try again AGAIN AGAIN 2025-06-10 13:27:16 -04:00
mthomson daecd18a1c authentik cnpg try again AGAIN AGAIN 2025-06-10 13:17:12 -04:00
mthomson cd87cb6db0 authentik cnpg try again AGAIN 2025-06-10 12:48:30 -04:00
mthomson e4cd178558 authentik cnpg try again AGAIN 2025-06-10 12:46:23 -04:00
mthomson 1bc927163f authentik cnpg try again 2025-06-10 12:35:55 -04:00
mthomson aaa23b83fc authentik cnpg initdb 2025-06-10 12:28:35 -04:00
mthomson 988c557214 authentik cnpg fix backup url 2025-06-10 12:19:53 -04:00
mthomson 2688eace91 authentik cnpg remove initdb 2025-06-10 12:10:52 -04:00
mthomson a70c3c6359 authentik cnpg backup and restore 2025-06-10 12:03:07 -04:00
mthomson c9f9d7ed8f infra fix longhorn storage class AGAIN 2025-06-10 11:14:20 -04:00
mthomson 84061baea7 infra reduce interval 2025-06-10 10:51:12 -04:00
mthomson 6cd81a298b longhorn fix joblist again agin 2025-06-10 10:43:26 -04:00
mthomson a713647197 longhorn fix joblist again 2025-06-10 10:26:06 -04:00
mthomson f74da6a76d longhorn fix joblist again 2025-06-10 10:12:25 -04:00
mthomson 75f07226aa longhorn recurring job CRDs 2025-06-10 10:07:18 -04:00
mthomson 05a3648e1c authentik fix releas name 2025-06-10 09:17:04 -04:00
mthomson 4f032d88e0 longhorn storage class recurringjobselector 2025-06-10 08:55:59 -04:00
mthomson a68e34a8d6 authentik add secret key to worker 2025-06-09 18:10:30 -04:00
mthomson 073e66ea82 authentik 2025-06-09 18:04:34 -04:00
mthomson 6749d92a43 re-enable prune 2025-06-09 17:23:11 -04:00
mthomson b8c7e8a353 keycloak fix resource limits 2025-06-09 17:07:17 -04:00
mthomson e77a8f51b2 keycloak fix chart ref 2025-06-09 16:59:06 -04:00
mthomson 28e587a792 keycloak 2025-06-09 16:56:41 -04:00
mthomson fc9aeea582 immich remove proxy 2025-06-09 16:20:38 -04:00
mthomson 099dabb671 traefik reenable dashboard 2025-06-09 16:01:26 -04:00
mthomson f8ab829e77 traefik update version 2025-06-09 15:53:49 -04:00
mthomson 5ed48c7bcf traefik increase transport timeout for immich 2025-06-09 15:38:58 -04:00
mthomson 50c82802c2 immich nvidia runtime fi 2025-06-09 14:40:07 -04:00
mthomson 2ec6f85316 immich nvidia runtime 2025-06-09 14:23:23 -04:00
mthomson c90d1c0f63 immich nvidia support 2025-06-09 13:24:09 -04:00
mthomson e335b184c8 nvidia fix config map name 2025-06-09 13:11:01 -04:00
mthomson aa06e70feb nvidia time sharing 2025-06-09 13:08:11 -04:00
mthomson 9372f79c4c ntfy remove kustomization 2025-06-09 10:03:58 -04:00
mthomson 79d4e6f303 ntfy move generate configmap to normal configmap 2025-06-09 10:02:12 -04:00
mthomson e5f1a78c8d ntfy fix yaml again again 2025-06-09 09:58:15 -04:00
mthomson 118e172313 ntfy fix yaml again 2025-06-09 09:52:18 -04:00
mthomson dfbd0532c9 ntfy fix yaml 2025-06-09 09:49:04 -04:00
mthomson 249096bc1c ntfy 2025-06-09 09:46:19 -04:00
mthomson 99f6236262 longhorn pg storageclass 2025-06-08 13:36:22 -04:00
mthomson cc4afd2003 remove short timeouts 2025-06-08 09:34:43 -04:00
mthomson ba3fdcbdd4 fix metallb namespace reference 2025-06-08 09:23:05 -04:00
mthomson 36e18d5575 fix longhorn namespace reference 2025-06-08 09:22:19 -04:00
mthomson cfd5d5e6d0 fixed OCIrepo apiversion 2025-06-08 09:20:00 -04:00
mthomson ca695f44a0 Merge pull request #4 from michaelthomson0797/refactor/server-restructure
[Refactor] change entire server folder structure
2025-06-08 09:14:30 -04:00
mthomson 3d6ddc70ea Merge branch 'main' into refactor/server-restructure 2025-06-07 21:42:34 -04:00
mthomson 7df611f789 update longhorn secret 2025-06-07 21:41:14 -04:00
mthomson 0dfdb72561 update longhorn secret 2025-06-07 21:24:43 -04:00
mthomson b9f8009427 update longhorn again 2025-06-07 19:12:33 -04:00
mthomson ee994cbca0 update longhorn again 2025-06-07 19:10:01 -04:00
mthomson dc8e9950af update longhorn 2025-06-07 19:07:20 -04:00
mthomson 8c2a23e0ff refactor all apps 2025-06-07 18:14:12 -04:00
mthomson 9a0e44f813 remove snapshot controller 2025-06-07 17:04:04 -04:00
mthomson f6f9f2a365 Merge branch 'main' into refactor/server-restructure 2025-06-07 17:03:17 -04:00
mthomson 941841ddce remove snapshot controller 2025-06-07 16:58:37 -04:00
mthomson 9f0944e4ce remove traefik-config 2025-06-07 16:39:00 -04:00
mthomson 3d3282cf1b remove faulty helm repo 2025-06-07 16:35:47 -04:00
mthomson b09446668d initial refactor 2025-06-07 16:33:55 -04:00
mthomson 5ac011f02b remove pruning on all kustomizations in preparation for update 2025-06-07 16:24:51 -04:00
mthomson 6ff7c9b8c4 Revert "test: kustomization inside kustomization"
This reverts commit 7b8766c683.
2025-06-07 14:59:21 -04:00
mthomson 7b8766c683 test: kustomization inside kustomization 2025-06-07 14:55:36 -04:00
mthomson ec2d0a8c84 Merge pull request #3 from michaelthomson0797/chore/update-crds
Chore: Update all flux crd versions
2025-06-07 13:12:06 -04:00
341 changed files with 2844 additions and 10643 deletions
+3
View File
@@ -0,0 +1,3 @@
creation_rules:
- encrypted_regex: ^(data|stringData)$
age: age1s0206tnfaaw849x5xmt95axgu8qhxzlu5ywrwz09tpt8lwpx858q089nq9
+32
View File
@@ -0,0 +1,32 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: actual
namespace: actual
spec:
selector:
matchLabels:
app: actual
template:
metadata:
labels:
app: actual
spec:
containers:
- name: actual
image: docker.io/actualbudget/actual-server:latest
imagePullPolicy: Always
env:
- name: ACTUAL_PORT
value: "5006"
ports:
- containerPort: 5006
name: http
protocol: TCP
volumeMounts:
- mountPath: /data
name: data
volumes:
- name: data
persistentVolumeClaim:
claimName: actual-data
+28
View File
@@ -0,0 +1,28 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: actual
namespace: actual
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
cert-manager.io/cluster-issuer: "letsencrypt-prod"
external-dns.alpha.kubernetes.io/target: michaelthomson.ddns.net
external-dns.alpha.kubernetes.io/cloudflare-proxied: "true"
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
spec:
rules:
- host: actual.michaelthomson.dev
http:
paths:
- pathType: ImplementationSpecific
path: /
backend:
service:
name: actual
port:
name: http
tls:
- hosts:
- actual.michaelthomson.dev
secretName: actual-tls
@@ -1,12 +1,12 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: roundcubemail-temp-pvc
namespace: roundcube
name: actual-data
namespace: actual
spec:
storageClassName: longhorn
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: longhorn
accessModes:
- ReadWriteOnce
@@ -1,11 +1,11 @@
apiVersion: v1
kind: Service
metadata:
name: readarr
namespace: media
name: actual
namespace: actual
spec:
selector:
app: readarr
app: actual
ports:
- port: 80
targetPort: http
+23
View File
@@ -0,0 +1,23 @@
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: actions
namespace: gitea
spec:
chart:
spec:
chart: actions
version:
sourceRef:
kind: HelmRepository
name: gitea
interval: 15m
releaseName: actions
values:
enabled: true
existingSecret: actions-secret
existingSecretKey: token
giteaRootURL: http://gitea-http:3000
statefulset:
persistence:
size: 1Gi
+22
View File
@@ -0,0 +1,22 @@
apiVersion: v1
data:
token: ENC[AES256_GCM,data:k6dhRoR3XCITRikJStLu1+gkW8Xcrt/EnKtq/LtMOdDOC906nyDbLbLXo4yWkUPb4wOT7/FHtjM=,iv:v/7sYpp//k4NgIHIxrSgUCK0ddTS2knRXt7bv/tK6BQ=,tag:t8yskoe9Q+T1UFhzmdEgSQ==,type:str]
kind: Secret
metadata:
name: actions-secret
namespace: gitea
sops:
age:
- recipient: age1s0206tnfaaw849x5xmt95axgu8qhxzlu5ywrwz09tpt8lwpx858q089nq9
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYUWxLU2Z5bmJSYUs2YS9q
bFFCSEJlTGtuNEFjVGtsMDFySW5TNnF6RTBzClpMdk9CRU9kTHoyVEJZU1JITnRS
aVhjMm9ndTBXYklkWUpMV0hYNWtrVFkKLS0tIEJLRmF5NVNNamlkSWNjam1lY1pF
MmtSTTJET3VWQStHN25DeDV6aGRrVkkKcMOwuTZY/meJjQZgzmAU37mUS4VjG7H/
q8c+keASqJI511XhWi8K938U8YREge7sDw8sa+RrXpoiy3zyipZOLQ==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-12-17T20:36:08Z"
mac: ENC[AES256_GCM,data:wr1ngpRm44ueRUsfITsQa9tuWffScHsz66QCfilsc8fO8gprb0eicYAgJ6J7JygGO7hZdnLB4z1Q/5bZFmdsvK2Oz3tV/NX/gZVGbFDqPFHfjDU+5rl7lrBnRh6D1RwvYqJzNL38dDO5oUXTOfDGijS574qB4EpyUnu7+AbJwtE=,iv:7kXdBFzz/M0Kynuk3fmnWWRV7VLN0BXELrYqt/VtQ9s=,tag:FqCzxPTwnL0yBX0+SrWbZA==,type:str]
encrypted_regex: ^(data|stringData)$
version: 3.11.0
+23
View File
@@ -0,0 +1,23 @@
apiVersion: v1
data:
password: ENC[AES256_GCM,data:wcJdmRnN4nFOaIiM/Lyp8fceSRKpJW9laUYsZU/9UCmreJP3YHGFdw==,iv:35aJWV/ReimElkgHDEvd1VMi1+fL8ayB2YO5Ej6Iqrs=,tag:Vl665zuBbhsU28zXH+Madw==,type:str]
username: ENC[AES256_GCM,data:vnhGaPemu1i1kpHOPvRg8w==,iv:Ika50tGu/d6m6UxzUpZFhK/SxLsUMmB/GNeeFPmszdU=,tag:wC5CLp+5OhzLKYolmr1aTg==,type:str]
kind: Secret
metadata:
name: admin-secret
namespace: gitea
sops:
age:
- recipient: age1s0206tnfaaw849x5xmt95axgu8qhxzlu5ywrwz09tpt8lwpx858q089nq9
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLMFNmREJGMStuTEhyRi9w
OTc4RTlrWWJwNlc2Z3liOXQrd1Jmc0VMQ3hJCjlJMzJDdDYvNWhtUVF6ZlBmR0Nx
RGNrZWlBcnpjSjZLaU95aGZjcXZVNWcKLS0tIHk0UkFnWkxFRHB3THQ1UytRSzdL
ZTB2WVBmWnZLT3FsekFhSHFkQ1RLNlkKbQfo7CDYk/EadaE6SEmsCZX5ubOTcbD3
lj4rj1v2dYME/wDj9rFp5IwESalXwKzUVzC8e1GuzbY6pDQPx5EW4Q==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-12-17T20:36:08Z"
mac: ENC[AES256_GCM,data:ApUlG4FA/KYrwm6u/6qNU2Cqz08MxRNmiBmiwCZgNF4aX0CWzRZ9+VbO/jIJUpzKB3W7EdpbiyuT7Ie3h0lwYIZY5xUXP4CDxsZ+TozAFJq/CgXs/BacTZIVhSEL93W+O4ett/UuIL66rtuiZcBY0CdM80j7aTy20ilse8wwusM=,iv:UWdNu4hW6OcMHkqQcrzmLZlU4gevBwAMInbjtC9R3hI=,tag:W+SgpfrOvR9HnGRfnGSgwQ==,type:str]
encrypted_regex: ^(data|stringData)$
version: 3.11.0
+22
View File
@@ -0,0 +1,22 @@
apiVersion: v1
stringData:
mailer: ENC[AES256_GCM,data:IrYl0ghmMpe7LCGuHFAv8OOnnYPnxed8M86qEnXct/d3Xlf+vQ==,iv:d/Egq7dRzNbx/5cEL5lKxD+ZsDhTLCB1EGnP6RXok00=,tag:aiQoSAMKQ1b0mXUT0lw8+w==,type:str]
kind: Secret
metadata:
name: gitea-mailer-config-secret
namespace: gitea
sops:
age:
- recipient: age1s0206tnfaaw849x5xmt95axgu8qhxzlu5ywrwz09tpt8lwpx858q089nq9
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBJMmxwWGZUb2JRK0FHdFd6
SFN5MGdZR3puUDNhMElTTy96SnVRUzJwYjFvCkJsdlJCRG9zVXdzOEY1REQ4NWRw
R05taHVZMlpySXVXWmNIc25VYng4WWsKLS0tIERoL0tUVmUvbG5ha0h0cWIvZDND
NkI0eUlmYjg3Zk9iVmNkZVpXWkh2TW8K/coOzGAPF42522cM6DZVAEEv3LmZaIhu
BVyl8ijATNLMIfiFpP5bHpljPHrn3lGP70RzwoCV15t1fC6pjeParA==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2026-05-12T01:59:49Z"
mac: ENC[AES256_GCM,data:TSNyIUQIRaX27K9ZbyiMCayFFIeUKmfD4Bz9Zu7Apa7NGqXmAWabzY3KHyjL14LDxmv4XJpA5W3DLI920DfOEUq2iW9EogMfSV7nEMMA6lzYMf+ca5W0BCwPE0MDBkTIL2nREoZh0FGDmq1M2syRIfaBrFKq97ZozQqz4AA8iZc=,iv:wCjERwABseOGN7LWiLzoT4VGHk9vnGdN0yl2eeQTAho=,tag:j/bDGqPoTm5FFGhERh1KJQ==,type:str]
encrypted_regex: ^(data|stringData)$
version: 3.12.2
@@ -7,32 +7,31 @@ spec:
chart:
spec:
chart: gitea
version: 11.x
version: 12.x
sourceRef:
kind: HelmRepository
name: gitea
namespace: flux-system
interval: 15m
timeout: 5m
releaseName: gitea
values:
global:
storageClass: longhorn
replicaCount: 1
service:
ssh:
type: LoadBalancer
port: 2222
clusterIP:
annotations:
metallb.universe.tf/loadBalancerIPs: 192.168.2.248
metallb.io/loadBalancerIPs: 192.168.18.248
ingress:
enabled: true
className: traefik
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
external-dns.alpha.kubernetes.io/target: michaelthomson.ddns.net
external-dns.alpha.kubernetes.io/cloudflare-proxied: "false"
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
hosts:
@@ -43,17 +42,17 @@ spec:
tls:
- hosts:
- gitea.michaelthomson.dev
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
secretName: gitea-tls
persistence:
claimName: gitea-shared-storage
size: 10Gi
storageClass: longhorn
gitea:
config:
server:
SSH_PORT: 2222
actions:
ENABLED: true
service:
DISABLE_REGISTRATION: true
REGISTER_EMAIL_CONFIRM: true
@@ -62,35 +61,29 @@ spec:
ALLOWED_HOST_LIST: external,loopback,private
mailer:
ENABLED: true
FROM: gitea@michaelthomson.dev
FROM: server@michaelthomson.dev
PROTOCOL: smtps
SMTP_ADDR: mail.michaelthomson.dev
SMTP_PORT: 465
USER: gitea@michaelthomson.dev
USER: server@michaelthomson.dev
admin:
existingSecret: gitea-admin-secret
existingSecret: admin-secret
email: "gitea@michaelthomson.dev"
additionalConfigSources:
- secret:
secretName: gitea-mailer-config-secret
redis-cluster:
valkey-cluster:
enabled: false
valkey:
enabled: true
postgresql-ha:
enabled: false
postgresql:
enabled: true
global:
postgresql:
auth:
password: gitea
database: gitea
username: gitea
service:
ports:
postgresql: 5432
primary:
persistence:
size: 10Gi
@@ -2,7 +2,7 @@ apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: gitea
namespace: flux-system
namespace: gitea
spec:
interval: 15m
url: https://dl.gitea.io/charts
+23
View File
@@ -0,0 +1,23 @@
apiVersion: v1
stringData:
mariadb-password: ENC[AES256_GCM,data:sRg+BqCvSWe/I9vLLRcgPyMs87BttZAejfKPI7kIej6L3sXasYE700jr9tw=,iv:VMnb9a72TYYBdC2RCD9wwpRdUZiiD+SFOZOl0ZIHjbU=,tag:eXRgY1VO0PDRJPUAr4RYXw==,type:str]
mariadb-root-password: ENC[AES256_GCM,data:86cu/5fSD2h7yQSt0b9cp15a56LYiyhdUfFVdhla7cs0GsIyDul2A4TuSQA=,iv:U+JPt6UUc70MzYAQBODEzl/wMQ+TEVBYZHxxMZf4xyw=,tag:CAdI37E9cj07yoltPxLjWg==,type:str]
kind: Secret
metadata:
name: mariadb-credentials
namespace: grimmory
sops:
age:
- recipient: age1s0206tnfaaw849x5xmt95axgu8qhxzlu5ywrwz09tpt8lwpx858q089nq9
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAvOEhieFpaNU5CRElYRFRx
VjJqUm9Zbk44M3QvVlNqcUFGUnRjNlUvUERZCjA2VjJXdlJmSDdYeW5BbEF2RElV
QXZ6YVl3REVFRzY5RG81YzVyaWpBWTgKLS0tIEdITTBCUm1tZGhZVzFwbGszbDF6
ZzhZOEU2SUFUWllqOHZCS1c5YW5TQjQKbQqmVAWZq7aqBaFt+51oY7PZ2BcLc7Wa
neOgcwRTq2x27yoWNPlcWSsqFss5RLldriEer4QdwdIDlWEj8Js7uA==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2026-05-24T18:40:49Z"
mac: ENC[AES256_GCM,data:URvFnjTBRU17FIJTLjggheWWI63UcktsyMgrKP5Ib7/F4HcSbZySGis6Ty/y2Cn5uessjpf12IQ1EZ0Vybnm7w58/nb3+ZiEow5XtJ91OAw2iCJv00YyKtWgFqkymCHJu2a/SuuG3ibH5+MbucQKHUSXuxsRvYaJaigw1Gzi80I=,iv:3H2NNqh8eBqNvKybtsKYujjDeDlvmlwXxdzRoazU46E=,tag:tgYlwl0K7GbSX1pBtlD/xg==,type:str]
encrypted_regex: ^(data|stringData)$
version: 3.12.2
+47
View File
@@ -0,0 +1,47 @@
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: grimmory
namespace: grimmory
spec:
chart:
spec:
chart: grimmory
version: 3.x
sourceRef:
kind: HelmRepository
name: grimmory
interval: 15m
releaseName: grimmory
values:
mariadb:
auth:
existingSecret: mariadb-credentials
secretKeys:
rootPasswordKey: mariadb-root-password
userPasswordKey: mariadb-password
ingress:
enabled: true
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
hosts:
- host: grimmory.michaelthomson.dev
paths:
- path: /
pathType: ImplementationSpecific
tls:
- hosts:
- grimmory.michaelthomson.dev
secretName: grimmory-tls
persistence:
dataVolume:
enabled: true
size: 100Mi
existingClaim: ""
booksVolume:
enabled: true
size: 10Gi
existingClaim: ""
+9
View File
@@ -0,0 +1,9 @@
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: grimmory
namespace: grimmory
spec:
type: "oci"
interval: 15m
url: oci://ghcr.io/grimmory-tools/helm-charts
@@ -4,6 +4,7 @@ metadata:
name: homeassistant
namespace: homeassistant
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
spec:
@@ -21,4 +22,4 @@ spec:
tls:
- hosts:
- ha.michaelthomson.dev
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
secretName: homeassistant-tls
+13
View File
@@ -0,0 +1,13 @@
apiVersion: netbird.io/v1alpha1
kind: NetworkResource
metadata:
name: homeassistant
namespace: homeassistant
spec:
networkRouterRef:
name: homelab
namespace: netbird
serviceRef:
name: homeassistant
groups:
- name: All
+64
View File
@@ -0,0 +1,64 @@
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: immich-postgres
namespace: immich
annotations:
# needed to allow for recovery from same name cluster backup
cnpg.io/skipEmptyWalArchiveCheck: enabled
spec:
imageName: ghcr.io/tensorchord/cloudnative-vectorchord:17-0.3.0
instances: 3
postgresql:
shared_preload_libraries:
- "vchord.so"
managed:
roles:
- name: immich
superuser: true
login: true
bootstrap:
# initdb:
# database: immich
# owner: immich
# secret:
# name: immich-postgres-user
# postInitSQL:
# - CREATE EXTENSION IF NOT EXISTS "vchord" CASCADE;
# - CREATE EXTENSION IF NOT EXISTS "earthdistance" CASCADE;
# NOTE: uncomment this and commend the above initdb when recovering
recovery:
source: immich-postgres
storage:
size: 8Gi
storageClass: longhorn-pg
externalClusters:
- name: immich-postgres
barmanObjectStore:
destinationPath: "s3://mthomson-cnpg-backup/immich/"
endpointURL: "https://s3.ca-central-1.wasabisys.com"
s3Credentials:
accessKeyId:
name: wasabi-secret
key: ACCESS_KEY_ID
secretAccessKey:
name: wasabi-secret
key: ACCESS_SECRET_KEY
backup:
barmanObjectStore:
destinationPath: "s3://mthomson-cnpg-backup/immich/"
endpointURL: "https://s3.ca-central-1.wasabisys.com"
s3Credentials:
accessKeyId:
name: wasabi-secret
key: ACCESS_KEY_ID
secretAccessKey:
name: wasabi-secret
key: ACCESS_SECRET_KEY
retentionPolicy: "10d"
+11
View File
@@ -0,0 +1,11 @@
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: immich-postgres
namespace: immich
spec:
selector:
matchLabels:
cnpg.io/cluster: immich-postgres
podMetricsEndpoints:
- port: metrics
@@ -11,25 +11,27 @@ spec:
sourceRef:
kind: HelmRepository
name: immich
namespace: flux-system
interval: 15m
timeout: 5m
releaseName: immich
values:
env:
DB_HOSTNAME: "immich-postgres-rw"
DB_USERNAME: "immich"
DB_DATABASE_NAME: "immich"
DB_PASSWORD: "immich"
image:
tag: v1.134.0
controllers:
main:
containers:
main:
image:
tag: v2.1.0
env:
DB_HOSTNAME: "immich-postgres-rw"
DB_USERNAME: "immich"
DB_DATABASE_NAME: "immich"
DB_PASSWORD: "immich"
immich:
persistence:
library:
existingClaim: immich-data
redis:
valkey:
enabled: true
server:
@@ -38,6 +40,9 @@ spec:
main:
enabled: true
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
external-dns.alpha.kubernetes.io/target: michaelthomson.ddns.net
external-dns.alpha.kubernetes.io/cloudflare-proxied: "true"
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
hosts:
@@ -47,7 +52,7 @@ spec:
tls:
- hosts:
- immich.michaelthomson.dev
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
secretName: immich-tls
machine-learning:
enabled: true
@@ -2,7 +2,7 @@ apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: immich
namespace: flux-system
namespace: immich
spec:
interval: 15m
url: https://immich-app.github.io/immich-charts
+11
View File
@@ -0,0 +1,11 @@
apiVersion: postgresql.cnpg.io/v1
kind: ScheduledBackup
metadata:
name: scheduled-backup
namespace: immich
spec:
schedule: "0 0 0 * * *"
backupOwnerReference: self
#immediate: true
cluster:
name: immich-postgres
+23
View File
@@ -0,0 +1,23 @@
apiVersion: v1
data:
ACCESS_KEY_ID: ENC[AES256_GCM,data:ad1Xc2tUS5JCGiaOoL5udd058QxG592R7a+66A==,iv:erHAPm5E5w2B0fZ/sagwTsT16MTLnbYzmamT9OS3fEE=,tag:TMRosj0L+u3JL3o6ig0/rw==,type:str]
ACCESS_SECRET_KEY: ENC[AES256_GCM,data:QJ3RkLWP8QNPt+JoD1B3ZCQkZKH82ImgnR8ZgfPPnEDFYj2rRuTbZva33yL/wAz95ll8YbjxtQw=,iv:cO96syX0ZdukwhKvvtrTzQcy0qQGEiL3NSxigcop+EQ=,tag:JS9sT+iFgdFMkTM74ore2w==,type:str]
kind: Secret
metadata:
name: wasabi-secret
namespace: immich
sops:
age:
- recipient: age1s0206tnfaaw849x5xmt95axgu8qhxzlu5ywrwz09tpt8lwpx858q089nq9
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBPa1lwSXVIM0ZRa1NhZ3lv
U05sZi9WbkVidVVDYVdXWWNZejRHNW9MNUF3CkNFVjc2bjFUZXhuQzAxUDBDVGxi
VGpZcHdZMHVWVW40NDRvY2RURFJ5OEUKLS0tIGlwRmNTZi9WWEhuWnB5TW1leVZt
eWpOMDdyakJEcWxYaFZiZ05nbCtWU00KmfoVxNBH7N44v/Xxcmjw/D/YQ93DA7yU
6/kk/7R2ya2JWtuqkOx9QPU8/TKaucU5V/IxPhoWquytevHkL5QhUw==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-12-17T20:36:08Z"
mac: ENC[AES256_GCM,data:1iNzgy+OKP7tZXkiMLr/9oFLjLnEEKAkQdzceFkGUYiq7gHmujuplt9vU2JS+Kc7l5m9FyB7cFOjHpJec08owJf7gDXcHBkUQmGGIU6eso/n/G5lj2bDKoQgrZcS3+cgpDGY/oiFh34ZapSL1uEbgQudRWsfQZr7o8iHLGEir4s=,iv:md9IZ9n2ecQDnBHIkBGZHhc34uIi9aWzbsDbZo2hx/U=,tag:U3m6q5TfHiii7cGPsK0MOw==,type:str]
encrypted_regex: ^(data|stringData)$
version: 3.11.0
@@ -2,7 +2,7 @@ apiVersion: apps/v1
kind: Deployment
metadata:
name: chrome
namespace: hoarder
namespace: karakeep
spec:
replicas: 1
selector:
@@ -2,7 +2,7 @@ apiVersion: v1
kind: Service
metadata:
name: chrome
namespace: hoarder
namespace: karakeep
spec:
selector:
app: chrome
@@ -2,7 +2,7 @@ apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: data-pvc
namespace: hoarder
namespace: karakeep
spec:
accessModes:
- ReadWriteOnce
@@ -1,14 +1,17 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: hoarder-web-ingress
namespace: hoarder
name: karakeep-web-ingress
namespace: karakeep
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
external-dns.alpha.kubernetes.io/target: michaelthomson.ddns.net
external-dns.alpha.kubernetes.io/cloudflare-proxied: "true"
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
spec:
rules:
- host: "hoarder.michaelthomson.dev"
- host: "karakeep.michaelthomson.dev"
http:
paths:
- path: "/"
@@ -20,5 +23,5 @@ spec:
number: 3000
tls:
- hosts:
- hoarder.michaelthomson.dev
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
- karakeep.michaelthomson.dev
secretName: karakeep-web-ingress-tls
+30
View File
@@ -0,0 +1,30 @@
apiVersion: v1
data:
MEILI_MASTER_KEY: ENC[AES256_GCM,data:hGTazo5p3b+k9c1FsCzV8lkCKFqEv/pXbAF0FqnYK0euPusL20skBIBP/hZQCllL9ZIpHuHAK8ZA57TMrnBtBA==,iv:E/1DsMVmQ6r3IgF0g4UBvW0rLTUmc4OOBx7FJh0/fP8=,tag:I9NzdG8hkndQEEa+RwHGJA==,type:str]
NEXT_PUBLIC_SECRET: ENC[AES256_GCM,data:x0lLGcfMX4o76y+wpSUh4oTh4bm0CIw8+epVX3uO8BpN79xYFLMV3EzbUOi4Isldb0zdPzK6xlnF7tqCvTDY9Wq/SUs=,iv:vIfucp8BM9FaXUtoUUTXCQuRWTngFokKFpIwhA/IpXI=,tag:RykRRY1q2iV9zqe3rvxSkA==,type:str]
NEXTAUTH_SECRET: ENC[AES256_GCM,data:Z9GlM3phYB9WtU2K2HH9oAU7F7xZP48IsbK1JrwE72GZP53MiZmGDzTTzU/aP9DfG71PWqEgCPC56bQFr7UtvQ==,iv:SNNpv6J44Q4hxRvgzNNgt7NMUAoNMDAy3Ff7jrFAimQ=,tag:kvp3H+DgVAtXMwKzIPTJRA==,type:str]
OAUTH_ALLOW_DANGEROUS_EMAIL_ACCOUNT_LINKING: ENC[AES256_GCM,data:qQAQg6sCJO0=,iv:EqNG67j5uII6+TBnMY9wt6E1jq52vevccfs+pmn4zs8=,tag:UP2omHyj5qCw/jIErW8GVw==,type:str]
OAUTH_CLIENT_ID: ENC[AES256_GCM,data:IK87xFx5N0he669UzhYLeFbpfAcZB039p8bgw+6AGDi17MIRBmoQkVJ1bvnGM+EaG7A7ezdrEQk=,iv:OG2HE2ubV/2ZIllyKIFnA7nRNEZfCoyh7AX+M8rLqtk=,tag:uCf8YI9RymbjLzVR2h/btQ==,type:str]
OAUTH_CLIENT_SECRET: ENC[AES256_GCM,data:OA6t3SU4uhD3AXFYxk06dhYdQhESr2LaWJ58jTGDCIGS2hIb6Sx7tS1nlDK/7G2LB8IZbRDfLSXc+DoYlQ/WwIlFSi9gDbiBYpk0ZYtfuo0hapc0MMCOpdvh7nc9d1p5/tMkX/ZbO0N2BHSBVbtwWaXntDDUd5YJxRubE6pnN3jKRbqY6BGfSdWytf47n8SEK6O2NWIgxnvlkKPLX0H/iKOxaTKHpasyEVv9xw==,iv:31nVzU3o4TuIGlH35oD5PRXbWWIX8FZ2u0OnYorM7sY=,tag:5Y8YFbt28UPDKr7EVJjApQ==,type:str]
OAUTH_PROVIDER_NAME: ENC[AES256_GCM,data:lcMWx1XJ/86FVyB4,iv:jVH7sDJo7Gag+hWNbUf9FC+jGqjts7liXomeOeW0eJ0=,tag:ISkJ2s/ZMOdLsxKh1Iauqg==,type:str]
OAUTH_WELLKNOWN_URL: ENC[AES256_GCM,data:/29zd+yLKKPQs9KfYCDOOPLqpay3Hd/+6YE3NcufDCiBCGEzHE9YtqrwyYGhq/Z3RPBNB85aYgCZbEVVgTezOvMGeoOUWzrQirD0ZF7JYPQt+jbpLRKMgsD9YF9iySRCPickdp17Hh6ukwhPfcf1ucT5tT9sjXm6JVFJFg==,iv:hzF9F9btpP/7Add/g/E0RlPDO5npIbVaj0JoJ0Na/SA=,tag:c2rigTpq0vtct4FCIBPE6Q==,type:str]
OPENAI_API_KEY: ENC[AES256_GCM,data:am/9P6389pS9IrxX2oAiMP5NawG8oj77rY8mgfJCjaXfGOPARIGtOSkmFVyY1oQR51oi3jDAg++JR72IW5k1NFkQp9JehMZeNXgLIc3aBIVIjJ+8G+q4AZ63TJrPAnDd+XiXf0aOAyyMzwmRY/j9Gu4cZXGxvqdz5HAmQMwcBfpWRXpEA1+YnDea2YhXW796JHI6WPBD4dzFMUZ1q5PGWwMOsAi6ArIXTN30EK1AqM8EIlK5quubbRxbJCI16DGDzIbXnuLB7MW8mvzm93Yz1Q39Q01reO3XZbihLw==,iv:G9XIKNcqUIizhgzj0POi0tQ/nHOne3DLeDtRaP0lXUg=,tag:o1zZ8ZoYbQZad3ciV9lqjg==,type:str]
kind: Secret
metadata:
name: karakeep-secrets
namespace: karakeep
sops:
age:
- recipient: age1s0206tnfaaw849x5xmt95axgu8qhxzlu5ywrwz09tpt8lwpx858q089nq9
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAreXJUVW5FVUsrc2k0RUk0
ZkZRS3pZUXFaTUdManhKVWp1S0JiaHRQV200CjVUYlAwN09TelNsK1l4aTQzSEF0
SFVkQnUwaFAvbGN5Z0dVTVdMdmRXR1kKLS0tIEk4S2FINWU1ZmtSYWFsVm94UTVS
RTBKZEtZMUhLMEFlejNEek5iL0J5Q28Kk07rkAd/qNVyS40Iz7yfSJMpa2pGtvrj
0YBKgyDoKmQ1aNzPo5aiaKyaUdh1PYrkAI7q5J+rmXj/70DR662nSA==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-12-17T20:36:08Z"
mac: ENC[AES256_GCM,data:4gHyTL/1DH/s4S/GdQOS7THzXNwo0xvMGdUqtEwgsjTSnoEZQMiUFLGOSnCy3LVG6JiPvCrJKDRrralrdaoSSWcmwy3pA/EG2eS58ooa02Hum2DgJ9XO25ZNSj16/gGJwgnEscGHSsAjRA3guAPAIbGip6DrhJJ3EfgVXT+J0OI=,iv:gV6QwYfTXiz4bfJNmW5yiZflspI3zULTEtVsWxirjvE=,tag:388de9lUv88lH3JoGsnlug==,type:str]
encrypted_regex: ^(data|stringData)$
version: 3.11.0
@@ -2,7 +2,7 @@ apiVersion: apps/v1
kind: Deployment
metadata:
name: meilisearch
namespace: hoarder
namespace: karakeep
spec:
replicas: 1
selector:
@@ -24,7 +24,7 @@ spec:
name: meilisearch
envFrom:
- secretRef:
name: hoarder-secrets
name: karakeep-secrets
volumes:
- name: meilisearch
persistentVolumeClaim:
@@ -2,7 +2,7 @@ apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: meilisearch-pvc
namespace: hoarder
namespace: karakeep
spec:
accessModes:
- ReadWriteOnce
@@ -2,7 +2,7 @@ apiVersion: v1
kind: Service
metadata:
name: meilisearch
namespace: hoarder
namespace: karakeep
spec:
selector:
app: meilisearch
@@ -2,24 +2,26 @@ apiVersion: apps/v1
kind: Deployment
metadata:
name: web
namespace: hoarder
namespace: karakeep
spec:
replicas: 1
selector:
matchLabels:
app: hoarder-web
app: karakeep-web
template:
metadata:
labels:
app: hoarder-web
app: karakeep-web
spec:
containers:
- name: web
image: ghcr.io/hoarder-app/hoarder:release
image: ghcr.io/karakeep-app/karakeep
imagePullPolicy: Always
ports:
- containerPort: 3000
env:
- name: NEXTAUTH_URL
value: https://karakeep.michaelthomson.dev
- name: MEILI_ADDR
value: http://meilisearch:7700
- name: BROWSER_WEB_URL
@@ -27,13 +29,13 @@ spec:
- name: DATA_DIR
value: /data
- name: DISABLE_SIGNUPS
value: "true"
value: "false"
volumeMounts:
- mountPath: /data
name: data
envFrom:
- secretRef:
name: hoarder-secrets
name: karakeep-secrets
volumes:
- name: data
persistentVolumeClaim:
@@ -2,10 +2,10 @@ apiVersion: v1
kind: Service
metadata:
name: web
namespace: hoarder
namespace: karakeep
spec:
selector:
app: hoarder-web
app: karakeep-web
ports:
- protocol: TCP
port: 3000
@@ -0,0 +1,23 @@
apiVersion: v1
data:
admin-password: ENC[AES256_GCM,data:FXusij+QSZCfG5Cp1VFTsDXmzYc=,iv:KuscQB1tHeTY4d7EPEozOO9FqlhBwZL2hNix7gGpu6s=,tag:wX7us8uCsHlfudM6sx/vAw==,type:str]
admin-user: ENC[AES256_GCM,data:aOqM1iNeX30=,iv:iwxNPSNsrxEr7zTmKRWmLK3BNu5UIj055l1p3I24xKo=,tag:eUfhUyD8vHh8YKFZpAX2ww==,type:str]
kind: Secret
metadata:
name: admin-secret
namespace: kube-prometheus-stack
sops:
age:
- recipient: age1s0206tnfaaw849x5xmt95axgu8qhxzlu5ywrwz09tpt8lwpx858q089nq9
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAyU2FJWjVseDY5ZGlJd2xs
OHBPQUpiS1ZocTZVeWVOVFdEaGt3dkN4OFFJCmd4M1lYbGYzelNhaDl0Tm5IUGww
OVc3M2Z5U3JGYVpuV21UQnJlZzM3Nk0KLS0tIDlma0J4amZKYWo4enpMdTI1YUZJ
aXBLVnBtMFpLc3B3djdzZDBiWXhwdmMKSlkc7MFkV6lDJ0J+k2GdIlpbNa438bre
2QOOgd3QeomniAmM0pemCR9PIVA3Uf+3DhMs1foZ6uYugJMMsd6esQ==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-12-19T20:36:08Z"
mac: ENC[AES256_GCM,data:KocjA27Zp0Y/DVemOVvjOATT7QIQjydpJIYQpjr1UnB8l748E+VGkvra2vLyV11BQz3uLija/2v0WNmQs5f+ZLvoTuQro6l9HxSk4zkkgfMzkqzlWIVFsj2Z0SrNtLl+bQMkDeOuMeeB+hAtOtwoc04X9n78PIW+2SGsq2Z94Co=,iv:KfRKGFC0geEburKxnXJJJqZUmVXhET2WnEON+gxlQp8=,tag:cTnOwHZNcP3Z5aCvF+IS3Q==,type:str]
encrypted_regex: ^(data|stringData)$
version: 3.11.0
@@ -7,38 +7,47 @@ spec:
chart:
spec:
chart: kube-prometheus-stack
version: 63.x
version: 79.x
sourceRef:
kind: HelmRepository
name: prometheus-community
namespace: flux-system
interval: 15m
timeout: 5m
releaseName: kube-prometheus-stack
values:
grafana:
admin:
existingSecret: admin-secret
userKey: admin-user
passwordKey: admin-password
ingress:
enabled: true
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
traefik.ingress.kubernetes.io/router.tls: "true"
traefik.ingress.kubernetes.io/router.entrypoints: websecure
hosts:
- grafana.michaelthomson.dev
path: /
tls:
- secretName: letsencrypt-wildcard-cert-michaelthomson.dev
- secretName: grafana-tls
hosts:
- grafana.michaelthomson.dev
prometheus:
prometheusSpec:
podMonitorSelectorNilUsesHelmValues: false
ruleSelectorNilUsesHelmValues: false
serviceMonitorSelectorNilUsesHelmValues: false
probeSelectorNilUsesHelmValues: false
ingress:
enabled: true
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
traefik.ingress.kubernetes.io/router.tls: "true"
traefik.ingress.kubernetes.io/router.entrypoints: websecure
hosts:
- prometheus.michaelthomson.dev
path: /
tls:
- secretName: letsencrypt-wildcard-cert-michaelthomson.dev
- secretName: prometheus-tls
hosts:
- prometheus.michaelthomson.dev
@@ -0,0 +1,8 @@
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: grafana
namespace: kube-prometheus-stack
spec:
interval: 15m
url: https://grafana.github.io/helm-charts
@@ -2,7 +2,7 @@ apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: prometheus-community
namespace: flux-system
namespace: kube-prometheus-stack
spec:
interval: 15m
url: https://prometheus-community.github.io/helm-charts
@@ -4,9 +4,9 @@ metadata:
name: bazarr
namespace: media
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
# traefik.ingress.kubernetes.io/router.middlewares: authentik-bazarr@kubernetescrd
spec:
rules:
- host: bazarr.michaelthomson.dev
@@ -22,4 +22,4 @@ spec:
tls:
- hosts:
- bazarr.michaelthomson.dev
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
secretName: bazarr-tls
@@ -12,7 +12,6 @@ spec:
labels:
app: jellyfin
spec:
runtimeClassName: nvidia
containers:
- name: jellyfin
image: lscr.io/linuxserver/jellyfin:latest
@@ -29,16 +28,12 @@ spec:
- mountPath: /data/media
name: data
subPath: media
# - name: dev-dri
# mountPath: /dev/dri
env:
- name: NVIDIA_VISIBLE_DEVICES
value: all
- name: NVIDIA_DRIVER_CAPABILITIES
value: all
resources:
limits:
nvidia.com/gpu: 1
- name: transcode
mountPath: /transcode
- name: cache
mountPath: /cache
- name: dev-dri
mountPath: /dev/dri
volumes:
- name: config
persistentVolumeClaim:
@@ -46,6 +41,13 @@ spec:
- name: data
persistentVolumeClaim:
claimName: media-data
# - name: dev-dri
# hostPath:
# path: /dev/dri
- name: transcode
emptyDir:
sizeLimit: 50Gi
- name: cache
emptyDir:
medium: Memory
sizeLimit: 2Gi
- name: dev-dri
hostPath:
path: /dev/dri
@@ -4,6 +4,9 @@ metadata:
name: jellyfin
namespace: media
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
external-dns.alpha.kubernetes.io/target: michaelthomson.ddns.net
external-dns.alpha.kubernetes.io/cloudflare-proxied: "true"
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
spec:
@@ -21,4 +24,4 @@ spec:
tls:
- hosts:
- jellyfin.michaelthomson.dev
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
secretName: jellyfin-tls
+13
View File
@@ -0,0 +1,13 @@
apiVersion: netbird.io/v1alpha1
kind: NetworkResource
metadata:
name: jellyfin
namespace: media
spec:
networkRouterRef:
name: homelab
namespace: netbird
serviceRef:
name: jellyfin
groups:
- name: All
+36
View File
@@ -0,0 +1,36 @@
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: seerr
namespace: media
spec:
chart:
spec:
chart: seerr-chart
version: 3.x
sourceRef:
kind: HelmRepository
name: seerr
interval: 15m
releaseName: seerr
values:
config:
persistence:
existingClaim: 'jellyseerr-config'
ingress:
enabled: true
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
external-dns.alpha.kubernetes.io/target: michaelthomson.ddns.net
external-dns.alpha.kubernetes.io/cloudflare-proxied: "true"
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
hosts:
- host: jellyseerr.michaelthomson.dev
paths:
- path: /
pathType: ImplementationSpecific
tls:
- hosts:
- jellyseerr.michaelthomson.dev
secretName: jellyseerr-tls
+9
View File
@@ -0,0 +1,9 @@
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: seerr
namespace: media
spec:
type: "oci"
interval: 15m
url: oci://ghcr.io/seerr-team/seerr
@@ -4,9 +4,9 @@ metadata:
name: prowlarr
namespace: media
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
# traefik.ingress.kubernetes.io/router.middlewares: authentik-prowlarr@kubernetescrd
spec:
rules:
- host: prowlarr.michaelthomson.dev
@@ -22,4 +22,4 @@ spec:
tls:
- hosts:
- prowlarr.michaelthomson.dev
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
secretName: prowlarr-tls
@@ -4,9 +4,9 @@ metadata:
name: radarr
namespace: media
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
# traefik.ingress.kubernetes.io/router.middlewares: authentik-radarr@kubernetescrd
spec:
rules:
- host: radarr.michaelthomson.dev
@@ -22,4 +22,4 @@ spec:
tls:
- hosts:
- radarr.michaelthomson.dev
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
secretName: radarr-tls
@@ -4,6 +4,7 @@ metadata:
name: sabnzbd
namespace: media
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
spec:
@@ -21,4 +22,4 @@ spec:
tls:
- hosts:
- sabnzbd.michaelthomson.dev
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
secretName: sabnzbd-tls
@@ -4,9 +4,9 @@ metadata:
name: sonarr
namespace: media
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
# traefik.ingress.kubernetes.io/router.middlewares: authentik-sonarr@kubernetescrd
spec:
rules:
- host: sonarr.michaelthomson.dev
@@ -22,4 +22,4 @@ spec:
tls:
- hosts:
- sonarr.michaelthomson.dev
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
secretName: sonarr-tls
@@ -4,6 +4,9 @@ metadata:
name: michaelthomson.dev
namespace: michaelthomson
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
external-dns.alpha.kubernetes.io/target: michaelthomson.ddns.net
external-dns.alpha.kubernetes.io/cloudflare-proxied: "true"
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
spec:
@@ -21,4 +24,4 @@ spec:
tls:
- hosts:
- michaelthomson.dev
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
secretName: michaelthomson-tls
+23
View File
@@ -0,0 +1,23 @@
apiVersion: v1
data:
password: ENC[AES256_GCM,data:jFpz9bSZvldMHrXZWPEFLCZk+WU=,iv:Gr01uTyy1LLodCrr+e+QPCaosA0ad9qg+51vxQKu7nM=,tag:mQC7HYeycSdnVi8QXKgqhA==,type:str]
username: ENC[AES256_GCM,data:ODJU7cK+lrQ=,iv:biwQxLX4xjZMVWF2phEuOrR0s+oWoiTw6at1YlLIdGU=,tag:oA3/NPM/tFJBfclJDJUP6A==,type:str]
kind: Secret
metadata:
name: collabora-secret
namespace: nextcloud
sops:
age:
- recipient: age1s0206tnfaaw849x5xmt95axgu8qhxzlu5ywrwz09tpt8lwpx858q089nq9
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBFdm9XakdSZFF3ZWhsaktu
Tm9aWU45ekhQeTdEc2FXbmVZZ2FYa3hrTWowCnkrM1hxSkNkTTFuVlh1NEZDbHBp
cWppL1lCMlpaZ3I3ZHVmRS9kQkwxM2MKLS0tIGF2bFh3SzJ3azVpWlhHOUo1Zzhp
QVhKelUvY1hiR2FiR004YnQzMEFIN1EKa1JN+ra3csHPICDfyOS/DtE6SyRrGveW
9KigyHoAzOAjvr7Cjzirl9J7tgA9iasfbVE4mfcuqwJGR14ANJ7OPw==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-12-17T20:36:08Z"
mac: ENC[AES256_GCM,data:sFjlG7K93WOS4QZXV/bcdVC2YwcCzzZ2lS6vtsR6v6SK0Lmw2neR5rc5SF6IESrUU4G3M/Y4VFTmb8Zttk0Tlk2nRlqXo35MIN6S+KTL/ssiCHSN4+J20Yp7HeQ+3DkLLY5+RiYAhrfzy/yUVRPWeAF3KKGwwfjknCR+avtLL44=,iv:QmesKHhkXUAD+lFS/ijYmsNVF8FFnmxiHk7IDJF5kmk=,tag:K4COX2z99gGuO2PBKUz7Zw==,type:str]
encrypted_regex: ^(data|stringData)$
version: 3.11.0
@@ -0,0 +1,22 @@
apiVersion: v1
data:
password: ENC[AES256_GCM,data:sczdgF2gOu+NkUmPPS3ipwRPSkgsL69QwA4zUFGV70GRTpC+,iv:0sA/fN7M4Gg7FuOAH/+j8PhY26wT94UNCfbdJ36JKg0=,tag:V3G9nSJOtVh0yzNZkX3Uzg==,type:str]
kind: Secret
metadata:
name: nextcloud-redis-secret
namespace: nextcloud
sops:
age:
- recipient: age1s0206tnfaaw849x5xmt95axgu8qhxzlu5ywrwz09tpt8lwpx858q089nq9
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB1aDEzNEFlUUNIekRib1hv
NGZITHZMTjhlWlQ3MHk1djlUVk1GeFRVRzBNCm12bWhPaHk2REo1RCtZUDhnLzF3
SXFOMzlVaDdyZk9FQVhiZmV3ZEo3RlkKLS0tIHVrZGZ4cFp2SkVubCtxUWQ1aXBw
Y095N2YrRTZBdFBlOWlPYXpWS0R3dk0KTUGr2gfHK5NszjDWSJObcGNdvjiBQ0lt
ujeskIYbKzRoY8cCRxiGc17SFTYnp+2q0hBm8V9H+ywI74Chc1gOgA==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-12-17T20:36:08Z"
mac: ENC[AES256_GCM,data:wISm9FeJ4cyF0I+QAMjte3/nwzwtk8c5VQltYzPlcsqUqOjLkmD6iLqtaOteZ3pZQOf9AylRTGaoow1kZ44X5dk/fx6Sy/JrQuhuc2JK7llgBqITp3S/sRK1Dtvb4r0y8x6iiKs8+sd/PA9TUqekPtmrC4dVcHKGzd1bX0DopU8=,iv:2bmJIOt1JUUk2TJbcQIg6/FwpvLpYTwpzKaSd39Lo9c=,tag:FbURmraQwP2NaB8CEVArww==,type:str]
encrypted_regex: ^(data|stringData)$
version: 3.11.0
+23
View File
@@ -0,0 +1,23 @@
apiVersion: v1
data:
password: ENC[AES256_GCM,data:+gp5N+elMS/vn3N6u8z7+/IDVl6w3VDnE6UrIsRMak3f1qag,iv:TY+iRf28IvZzpc3wJtIVkflgzuSyQxpucUttce71iTo=,tag:A/LsCq31oVsjINhi2BH7Cw==,type:str]
username: ENC[AES256_GCM,data:LFfYK587FmlJy8Gl,iv:CtTz38aswJ87iWp8GslxFH6PMS9ZJ7puGprrURhidSE=,tag:5vSMUAyjjxpbHlx1/2h9IA==,type:str]
kind: Secret
metadata:
name: postgres-secret
namespace: nextcloud
sops:
age:
- recipient: age1s0206tnfaaw849x5xmt95axgu8qhxzlu5ywrwz09tpt8lwpx858q089nq9
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBRemtSSkl2K01QSUlSbDha
dEdsa0JEWVZUeEtYSXM1OXRDQ3R1U01Zd0RNCnFKOWJRTElZRWxvdW94ZWRvUmNY
Y1IxM216MUhLWjhKcFJJSE1YQjlTTlUKLS0tIExFSDdnVWZEZG43VFJwUGVPT1Bu
ZWljcWVZcXpOUjJnOStvbmgwVHRsT28KMF4lDFhHbI+yqXDhiIuDe2NeuhPaReS9
Z6wiLrOWcXfbNN6DnLSBNAt0IqQzIYWHAlZayGPqA+JJCS/gkZnA1Q==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-12-17T20:36:08Z"
mac: ENC[AES256_GCM,data:TTAiIjKHCnA+mQ1fM0J3TEdqZkTRZKSHjRI4SsaiUut+uwWxN3nxUUlcBpyo3m62ff9WkyYvGtxfLsOXevrshN8WFB2H49NYA6TjyQgAzJ1XFeJZhFfSLM1nd/46a5KU/6mSBN9ZqUmnhXmBNo7wZdDKSJUlZ8tFwTtwDJve2o4=,iv:2idsk3hZOOWKGVZ+4Z9C82/+lF/tjokm3uBPMsE+WEw=,tag:UxQ6XtP9+iNaAn++IDYaHQ==,type:str]
encrypted_regex: ^(data|stringData)$
version: 3.11.0
@@ -7,13 +7,11 @@ spec:
chart:
spec:
chart: nextcloud
version: 6.x
version: 9.x
sourceRef:
kind: HelmRepository
name: nextcloud
namespace: flux-system
interval: 15m
timeout: 5m
releaseName: nextcloud
values:
image:
@@ -23,12 +21,15 @@ spec:
enabled: true
className: traefik
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
external-dns.alpha.kubernetes.io/target: michaelthomson.ddns.net
external-dns.alpha.kubernetes.io/cloudflare-proxied: "true"
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
tls:
- hosts:
- nextcloud.michaelthomson.dev
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
secretName: nextclout-tls
labels: {}
path: /
pathType: Prefix
@@ -91,6 +92,8 @@ spec:
postgresql:
enabled: true
image:
tag: 16.6.0
global:
postgresql:
auth:
@@ -123,44 +126,6 @@ spec:
global:
storageClass: longhorn
collabora:
enabled: true
image:
tag: 24.04.11.1.1
collabora:
extra_params: --o:ssl.enable=false --o:ssl.termination=true
existingSecret:
enabled: true
secretName: "collabora-secret"
usernameKey: "username"
passwordKey: "password"
# securityContext:
# runAsNonRoot: true
# privileged: true
# capabilities:
# add:
# - SYS_ADMIN
# - MKNOD
ingress:
enabled: true
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
hosts:
- host: collabora.michaelthomson.dev
paths:
- path: /
pathType: ImplementationSpecific
tls:
- hosts:
- collabora.michaelthomson.dev
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
cronjob:
enabled: true
@@ -2,7 +2,7 @@ apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: nextcloud
namespace: flux-system
namespace: nextcloud
spec:
interval: 15m
url: https://nextcloud.github.io/helm/
+43
View File
@@ -0,0 +1,43 @@
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: ollama
namespace: ollama
spec:
chart:
spec:
chart: ollama
version: 1.x
sourceRef:
kind: HelmRepository
name: ollama
interval: 15m
releaseName: ollama
values:
runtimeClassName: nvidia
ollama:
gpu:
enabled: true
type: nvidia
nvidiaResource: nvidia.com/gpu
number: 1
models:
pull:
- qwen3.5:9b
run:
- qwen3.5:9b
ingress:
enabled: true
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
hosts:
- host: ollama.michaelthomson.dev
paths:
- path: /
pathType: Prefix
tls:
- hosts:
- ollama.michaelthomson.dev
secretName: ollama-tls
@@ -1,8 +1,8 @@
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: plane
namespace: flux-system
name: ollama
namespace: ollama
spec:
interval: 15m
url: https://helm.plane.so/
url: https://helm.otwld.com/
@@ -11,17 +11,15 @@ spec:
sourceRef:
kind: HelmRepository
name: mojo2600
namespace: flux-system
interval: 15m
timeout: 5m
releaseName: pihole
values:
# -- Configuration for the DNS service on port 53
serviceDns:
type: LoadBalancer
annotations:
metallb.universe.tf/loadBalancerIPs: 192.168.2.250
metallb.universe.tf/allow-shared-ip: pihole-svc
metallb.io/loadBalancerIPs: 192.168.18.250
metallb.io/allow-shared-ip: pihole-svc
# -- Configuration for the Ingress
ingress:
@@ -33,6 +31,7 @@ spec:
# -- Annotations for the ingress
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
path: /
@@ -41,7 +40,7 @@ spec:
tls:
- hosts:
- pihole.michaelthomson.dev
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
secretName: pihole-tls
# -- `spec.PersitentVolumeClaim` configuration
persistentVolumeClaim:
@@ -2,7 +2,7 @@ apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: mojo2600
namespace: flux-system
namespace: pihole
spec:
interval: 15m
url: https://mojo2600.github.io/pihole-kubernetes/
@@ -4,6 +4,9 @@ metadata:
name: syncthing
namespace: syncthing
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
external-dns.alpha.kubernetes.io/target: michaelthomson.ddns.net
external-dns.alpha.kubernetes.io/cloudflare-proxied: "true"
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
spec:
@@ -21,4 +24,4 @@ spec:
tls:
- hosts:
- syncthing.michaelthomson.dev
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
secretName: syncthing-tls
@@ -4,7 +4,7 @@ metadata:
name: syncthing-lb
namespace: syncthing
annotations:
metallb.universe.tf/loadBalancerIPs: 192.168.2.247
metallb.io/loadBalancerIPs: 192.168.18.247
spec:
selector:
app: syncthing

Some files were not shown because too many files have changed in this diff Show More