Compare commits

...

279 Commits

Author SHA1 Message Date
renovate-bot 18fe757fe2 chore(deps): update helm release gitea to v12.6.1 2026-06-16 04:00:11 +00:00
williamp aa83a625ac Merge pull request 'chore(deps): update helm release authentik to v2026.5.3' (#106) from renovate/authentik-2026.x into main
Reviewed-on: #106
2026-06-12 23:17:38 +00:00
renovate-bot 30c821f5cd chore(deps): update helm release authentik to v2026.5.3 2026-06-11 22:00:11 +00:00
actions 4bde426243 yt-dlp-bot: deploy update to 7c4c14d 2026-06-10 03:00:04 +00:00
williamp 2d8a0297f5 Merge pull request 'chore(deps): update helm release searxng to v1.1.4' (#105) from renovate/searxng-1.x into main
Reviewed-on: #105
2026-06-10 00:58:09 +00:00
renovate-bot 9b10b90acd chore(deps): update helm release searxng to v1.1.4 2026-06-10 00:00:12 +00:00
williamp d672812300 Merge pull request 'chore(deps): update helm release gitea to v12.6.0' (#104) from renovate/gitea-12.x into main
Reviewed-on: #104
2026-06-08 01:04:24 +00:00
renovate-bot e7fccaa53c chore(deps): update helm release gitea to v12.6.0 2026-06-08 00:00:12 +00:00
williamp 0b5f4492a4 Merge pull request 'chore(deps): update helm release authentik to v2026.5.2' (#103) from renovate/authentik-2026.x into main
Reviewed-on: #103
2026-05-29 00:11:44 +00:00
renovate-bot b9bb385320 chore(deps): update helm release authentik to v2026.5.2 2026-05-28 16:00:10 +00:00
williamp a0b0997c1a arr-stack update ip to new seedbox 2026-05-26 19:55:34 -04:00
williamp 7ffa5c3341 searxng: add 2026-05-23 09:55:53 -04:00
williamp 2c5cf9b6c4 Merge pull request 'chore(deps): update helm release authentik to v2026.5.0' (#102) from renovate/authentik-2026.x into main
Reviewed-on: #102
2026-05-23 00:15:39 +00:00
renovate-bot 0456497133 chore(deps): update helm release authentik to v2026.5.0 2026-05-22 11:00:09 +00:00
williamp 7a31dac90c Merge pull request 'chore(deps): update helm release authentik to v2026.2.3' (#101) from renovate/authentik-2026.x into main
Reviewed-on: #101
2026-05-12 23:45:31 +00:00
renovate-bot c8ce349135 chore(deps): update helm release authentik to v2026.2.3 2026-05-12 21:00:09 +00:00
actions fc5786cdef yt-dlp-bot: deploy update to 23993d7 2026-05-09 16:47:24 +00:00
williamp 1007e8ee4b Merge pull request 'chore(deps): update helm release gitea to v12.5.12' (#100) from renovate/gitea-12.x into main
Reviewed-on: #100
2026-04-19 00:39:28 +00:00
renovate-bot 7f487b0990 chore(deps): update helm release gitea to v12.5.12 2026-04-19 00:00:12 +00:00
williamp 9137db2b9f Merge pull request 'chore(deps): update helm release gitea to v12.5.11' (#99) from renovate/gitea-12.x into main
Reviewed-on: #99
2026-04-18 23:02:17 +00:00
renovate-bot acaf66a39c chore(deps): update helm release gitea to v12.5.11 2026-04-18 23:00:12 +00:00
actions 2016580fa0 yt-dlp-bot: deploy update to fb0746e 2026-04-10 12:15:21 +00:00
williamp acb664318e Merge pull request 'chore(deps): update helm release jellyfin to v3.2.0' (#98) from renovate/jellyfin-3.x into main
Reviewed-on: #98
2026-04-08 18:18:52 +00:00
renovate-bot b39e6fdce8 chore(deps): update helm release jellyfin to v3.2.0 2026-04-08 18:00:18 +00:00
williamp c21f54cc2c Merge pull request 'chore(deps): update helm release authentik to v2026.2.2' (#97) from renovate/authentik-2026.x into main
Reviewed-on: #97
2026-04-08 02:07:19 +00:00
renovate-bot 5b8aa97081 chore(deps): update helm release authentik to v2026.2.2 2026-04-08 01:00:12 +00:00
williamp 9a94ccc337 Merge pull request 'chore(deps): update helm release gitea to v12.5.10' (#96) from renovate/gitea-12.x into main
Reviewed-on: #96
2026-04-02 22:09:14 +00:00
renovate-bot 2a2aeba921 chore(deps): update helm release gitea to v12.5.10 2026-04-02 01:00:13 +00:00
williamp a11fea834b jellyfin: rm old dvr share 2026-04-01 18:20:25 -04:00
williamp 4ba9a42b7e Merge pull request 'chore(deps): update helm release jellyfin to v3' (#95) from renovate/jellyfin-3.x into main
Reviewed-on: #95
2026-04-01 22:18:39 +00:00
renovate-bot 453956f5d1 chore(deps): update helm release jellyfin to v3 2026-04-01 15:00:10 +00:00
williamp 9972e1ecb9 Merge pull request 'chore(deps): update helm release gitea to v12.5.9' (#94) from renovate/gitea-12.x into main
Reviewed-on: #94
2026-03-22 00:27:05 +00:00
renovate-bot 674aaaea9c chore(deps): update helm release gitea to v12.5.9 2026-03-21 16:00:10 +00:00
actions c18ade7a7e yt-dlp-bot: deploy update to 5465bd4 2026-03-18 02:56:12 +00:00
actions 7f984f61af yt-dlp-bot: deploy update to a0e511b 2026-03-14 12:58:10 +00:00
williamp 4d2ac0b44d Merge pull request 'chore(deps): update helm release gitea to v12.5.8' (#93) from renovate/gitea-12.x into main
Reviewed-on: #93
2026-03-13 18:00:41 +00:00
renovate-bot 71372379b9 chore(deps): update helm release gitea to v12.5.8 2026-03-13 18:00:12 +00:00
williamp e02f3aa9fd arr-stack: update versions
flaresolverr: v3.4.6
prowlarr: 2.3.0.5236
radarr: 6.0.4.10291
sonarr: 4.0.16.2944
2026-03-13 13:18:28 -04:00
actions 67f852c737 yt-dlp-bot: deploy update to 509dab5 2026-03-10 01:01:19 +00:00
actions fd20dccf6c yt-dlp-bot: deploy update to adefe2f 2026-03-09 16:21:29 +00:00
actions 9745f6aa53 yt-dlp-bot: deploy update to 51e1cc5 2026-03-08 16:00:59 +00:00
actions fc3d187d99 yt-dlp-bot: deploy update to e0de621 2026-03-08 05:21:02 +00:00
actions b6a74c4a8f yt-dlp-bot: deploy update to 4513338 2026-03-08 05:03:18 +00:00
actions 1b44fd7ab5 yt-dlp-bot: deploy update to e3b5542 2026-03-08 02:19:50 +00:00
actions 37a0370bb3 yt-dlp-bot: deploy update to 8f2bda0 2026-03-08 00:03:57 +00:00
williamp f5a07f0810 gitea-runner: use slirp4netns 2026-03-07 18:21:05 -05:00
williamp 5b5c394581 gitea-runner: use DOCKERD_ROOTLESS_ROOTLESSKIT_FLAGS instead 2026-03-07 18:19:13 -05:00
williamp 0946ef68a3 gitea-runner: try using bridge network mode 2026-03-07 18:09:24 -05:00
williamp dbfecc1090 Merge pull request 'chore(deps): update helm release gitea to v12.5.7' (#92) from renovate/gitea-12.x into main
Reviewed-on: #92
2026-03-07 15:40:26 +00:00
actions 4e22ab2416 yt-dlp-bot: deploy update to 82b867a 2026-03-07 15:28:22 +00:00
renovate-bot 7719d488b7 chore(deps): update helm release gitea to v12.5.7 2026-03-07 04:00:16 +00:00
williamp 7f2a21d15d gitea-runner: specify dns server in container creation 2026-03-06 22:38:42 -05:00
actions 1d07f20850 yt-dlp-bot: deploy update to 5748834 2026-03-07 01:09:14 +00:00
williamp cc3a0ff414 yt-dlp-bot: try new refactor build 2026-03-06 19:45:49 -05:00
williamp d337a6ad3d attic: scale up to 3 2026-03-06 14:55:01 -05:00
williamp a55400a0ba attic: try to use postgres 2026-03-06 14:12:20 -05:00
williamp b04c27eaf1 yt-dlp-bot: revert 2026-03-06 10:29:10 -05:00
williamp 5fc38bf8f0 yt-dlp-bot: try dogfooding the refactor again, for real this time 2026-03-06 10:11:45 -05:00
williamp a83a8f9577 yt-dlp: revert back to 2c99fbf for now 2026-03-06 09:36:33 -05:00
williamp 5e3c0f386f yt-dlp-bot: use test image for dogfooding 2026-03-06 09:34:02 -05:00
actions 6cb6ba6e22 yt-dlp-bot: deploy update to 2c99fbf 2026-03-06 00:37:38 +00:00
actions 1043895e71 yt-dlp-bot: deploy update to 81968a6 2026-03-05 23:44:44 +00:00
actions b6952cec5c yt-dlp-bot: deploy update to 7b34919 2026-03-05 14:09:26 +00:00
williamp c2f8178b11 authentik: remove temp custom probes 2026-03-04 16:12:07 -05:00
actions dddbf25e45 yt-dlp-bot: deploy update to 2269104 2026-03-04 13:50:59 +00:00
actions 846aa2d534 yt-dlp-bot: deploy update to 4bea5e0 2026-03-04 13:46:47 +00:00
williamp 342ab378cd Merge pull request 'chore(deps): update helm release authentik to v2026.2.1' (#91) from renovate/authentik-2026.x into main
Reviewed-on: #91
2026-03-03 23:09:10 +00:00
renovate-bot 5ce3ac9a1e chore(deps): update helm release authentik to v2026.2.1 2026-03-03 21:00:09 +00:00
actions eeb45f24a4 yt-dlp-bot: deploy update to 204404b 2026-03-03 01:14:43 +00:00
actions 224102a066 yt-dlp-bot: deploy update to 6e7fc73 2026-03-02 18:37:04 +00:00
actions 9851a131d3 yt-dlp-bot: deploy update to b9088d9 2026-02-28 21:42:39 +00:00
williamp 20473263ae authentik: enable AUTHENTIK_POSTGRESQL__DISABLE_SERVER_SIDE_CURSORS
Per https://docs.goauthentik.io/install-config/configuration/#using-a-postgresql-connection-pooler
2026-02-26 09:20:16 -05:00
williamp cb3528b17b Merge pull request 'chore(deps): update helm release gitea to v12.5.6' (#90) from renovate/gitea-12.x into main
Reviewed-on: #90
2026-02-26 02:07:26 +00:00
renovate-bot 1a25c3fcf3 chore(deps): update helm release gitea to v12.5.6 2026-02-26 02:00:13 +00:00
williamp b2d6545070 authentik: add files support 2026-02-25 18:52:17 -05:00
williamp 053c36a877 authentik: increase replicas to 3 after stability testing 2026-02-25 18:45:51 -05:00
williamp 968ef8d621 authentik: use dedicated pooler 2026-02-25 18:39:10 -05:00
williamp 4215d89d0b Revert "authentik: raise workers to 3"
This reverts commit 3b38a2c3a9.
2026-02-24 22:38:15 -05:00
williamp 3b38a2c3a9 authentik: raise workers to 3 2026-02-24 22:34:06 -05:00
williamp 42fd1e5a92 authentik: adjust probes from default 2026-02-24 22:26:36 -05:00
williamp 8d6b3eb6b6 authentik: try upgrade again with only 1 replica 2026-02-24 22:08:19 -05:00
williamp 442ba532cd Revert "chore(deps): update helm release authentik to v2026"
Reverting Authentik update as pods have been crashing
2026-02-24 21:52:28 -05:00
williamp c71e4765e1 Merge pull request 'chore(deps): update helm release authentik to v2026' (#88) from renovate/authentik-2026.x into main
Reviewed-on: #88
2026-02-25 02:38:47 +00:00
renovate-bot b1e62ed191 chore(deps): update helm release authentik to v2026 2026-02-24 22:00:15 +00:00
actions 5855b78976 yt-dlp-bot: deploy update to f688ee0 2026-02-21 22:27:54 +00:00
williamp d849c4ca19 gitea-runner: ram scratch space 2026-02-19 18:06:15 -05:00
williamp 101be3512a attic: enable S3 support 2026-02-18 19:29:12 -05:00
williamp 893f10a45c gitea-runner: secure with rootless 2026-02-18 19:28:58 -05:00
williamp 11f881c24b attic: update tag to c4ffb5e86e928572e867bd3f81545293313e0a08 2026-02-17 21:08:37 -05:00
williamp f59574bda1 Merge pull request 'chore(deps): update helm release authentik to v2025.12.4' (#87) from renovate/authentik-2025.x into main
Reviewed-on: #87
2026-02-14 11:28:56 +00:00
renovate-bot a2273c4336 chore(deps): update helm release authentik to v2025.12.4 2026-02-12 17:00:10 +00:00
williamp f0ac9bbd6d gitea-runner: create configmap for custom config, enable host networking within dind 2026-02-08 12:33:48 -05:00
williamp 68026b743c Merge pull request 'chore(deps): update helm release gitea to v12.5.5' (#86) from renovate/gitea-12.x into main
Reviewed-on: #86
2026-02-08 13:03:51 +00:00
renovate-bot 980420d1cd chore(deps): update helm release gitea to v12.5.5 2026-02-08 04:00:08 +00:00
williamp 392e56b6ba gitea-runner: disable host networking as it breaks connectivity to buildkitd 2026-02-07 22:49:54 -05:00
williamp ae1fc4ca71 Revert "integrate buildkitd in runner containers"
This reverts commit 6c953ba4f3.
2026-02-07 22:48:39 -05:00
williamp 7d39f524de Revert "gitea-runner: use link-local port for buildkitd"
This reverts commit 8f39602c94.
2026-02-07 22:48:34 -05:00
williamp 8f39602c94 gitea-runner: use link-local port for buildkitd 2026-02-07 22:42:30 -05:00
williamp 6c953ba4f3 integrate buildkitd in runner containers 2026-02-07 22:35:57 -05:00
williamp e5609b6503 gitea-runner: use externalsecret token 2026-02-07 22:10:32 -05:00
williamp 92dc80f873 gitea-runner: enable host networking to prevent double-NAT timeouts 2026-02-07 22:02:05 -05:00
williamp b9eeadee05 add README 2026-02-07 12:20:35 -05:00
williamp ac9b7d3f67 rm inactive projects 2026-02-07 12:20:28 -05:00
williamp fffddc9a39 gitea-runner: integrate buildkit, migrate runner to statefulset 2026-02-07 11:50:50 -05:00
actions 61a12bdab2 yt-dlp-bot: deploy update to d7ad90a 2026-02-07 02:48:18 +00:00
actions 68c91de84e yt-dlp-bot: deploy update to ac5abff 2026-02-05 00:45:06 +00:00
actions a4929cd9fd yt-dlp-bot: deploy update to bef0a4d 2026-02-04 02:04:44 +00:00
williamp 1cddb5abef Merge pull request 'chore(deps): update helm release authentik to v2025.12.3' (#85) from renovate/authentik-2025.x into main
Reviewed-on: #85
2026-02-03 18:31:24 +00:00
renovate-bot 7d593772a3 chore(deps): update helm release authentik to v2025.12.3 2026-02-02 19:00:09 +00:00
williamp 7cb320981e Merge pull request 'chore(deps): update helm release gitea to v12.5.4' (#84) from renovate/gitea-12.x into main
Reviewed-on: #84
2026-02-01 23:06:06 +00:00
renovate-bot 1d905eebe7 chore(deps): update helm release gitea to v12.5.4 2026-02-01 23:00:09 +00:00
actions 41a3556c50 yt-dlp-bot: deploy update to 2709346 2026-02-01 15:01:45 +00:00
actions 7377757e96 yt-dlp-bot: deploy update to 70d7275 2026-01-31 19:17:52 +00:00
williamp 28ba9d64b7 Merge pull request 'chore(deps): update helm release authentik to v2025.12.2' (#83) from renovate/authentik-2025.x into main
Reviewed-on: #83
2026-01-31 02:36:42 +00:00
williamp 2110ffd473 Merge pull request 'chore(deps): update helm release grafana to v10.5.15' (#82) from renovate/grafana-10.x into main
Reviewed-on: #82
2026-01-31 02:36:20 +00:00
renovate-bot 7c761c6de6 chore(deps): update helm release authentik to v2025.12.2 2026-01-30 19:00:09 +00:00
renovate-bot 1cf343eeab chore(deps): update helm release grafana to v10.5.15 2026-01-30 08:00:10 +00:00
williamp c084c0af2c Merge pull request 'chore(deps): update helm release grafana to v10.5.13' (#81) from renovate/grafana-10.x into main
Reviewed-on: #81
2026-01-27 16:44:59 +00:00
renovate-bot 9ead104c8f chore(deps): update helm release grafana to v10.5.13 2026-01-27 14:00:09 +00:00
actions a979a0f526 yt-dlp-bot: deploy update to b496d14 2026-01-27 01:34:53 +00:00
actions 35fa4e9d9a yt-dlp-bot: deploy update to c2de1ab 2026-01-27 01:29:02 +00:00
williamp 1d17bb2bf6 vaultwarden: update to 1.35.2 2026-01-26 11:41:10 -05:00
williamp dab90b1885 Merge pull request 'chore(deps): update helm release gitea to v12.5.3' (#80) from renovate/gitea-12.x into main
Reviewed-on: #80
2026-01-23 15:14:13 +00:00
renovate-bot 3d393701e7 chore(deps): update helm release gitea to v12.5.3 2026-01-23 15:00:08 +00:00
williamp de882b87af Merge pull request 'chore(deps): update helm release grafana to v10.5.12' (#79) from renovate/grafana-10.x into main
Reviewed-on: #79
2026-01-22 23:13:28 +00:00
renovate-bot b5af5f1129 chore(deps): update helm release grafana to v10.5.12 2026-01-22 21:00:11 +00:00
actions a7c0d31bc2 yt-dlp-bot: deploy update to 635d5d5 2026-01-21 20:49:58 +00:00
williamp b9a2a46eee Merge pull request 'chore(deps): update helm release gitea to v12.5.2' (#78) from renovate/gitea-12.x into main
Reviewed-on: #78
2026-01-21 05:44:21 +00:00
renovate-bot 178ad9268a chore(deps): update helm release gitea to v12.5.2 2026-01-21 02:00:09 +00:00
williamp 0210513307 Merge pull request 'chore(deps): update helm release authentik to v2025.12.1' (#77) from renovate/authentik-2025.x into main
Reviewed-on: #77
2026-01-16 02:32:28 +00:00
williamp a00f6f3032 Merge pull request 'chore(deps): update helm release grafana to v10.5.8' (#76) from renovate/grafana-10.x into main
Reviewed-on: #76
2026-01-16 02:32:03 +00:00
renovate-bot e1da67f322 chore(deps): update helm release authentik to v2025.12.1 2026-01-16 02:00:36 +00:00
renovate-bot 3a606a6371 chore(deps): update helm release grafana to v10.5.8 2026-01-15 10:00:09 +00:00
williamp a2f392dca1 Merge pull request 'chore(deps): update helm release grafana to v10.5.7' (#75) from renovate/grafana-10.x into main
Reviewed-on: #75
2026-01-14 18:24:42 +00:00
renovate-bot b98e426928 chore(deps): update helm release grafana to v10.5.7 2026-01-14 14:00:10 +00:00
williamp 3c765ec1b6 netmaker: upgrade to v1.4.0 2026-01-12 18:27:12 -05:00
williamp 7dbeb13284 update to 12.5.1 to fix issue 2026-01-12 15:12:40 -05:00
williamp cee723ac42 chore(deps): update gitea chart to 12.5.0 and my fork 2026-01-12 14:56:21 -05:00
williamp 79bb86774c renovate: add helm-gitea 2026-01-11 19:12:14 -05:00
williamp dc6330513d Merge pull request 'chore(deps): update helm release grafana to v10.5.5' (#74) from renovate/grafana-10.x into main
Reviewed-on: #74
2026-01-09 20:49:55 +00:00
williamp 37a8844a7e gitea: disable external registration 2026-01-09 15:46:33 -05:00
renovate-bot 6cf728c28a chore(deps): update helm release grafana to v10.5.5 2026-01-09 09:00:12 +00:00
williamp 9ad5f3fff8 Merge pull request 'chore(deps): update helm release grafana to v10.5.4' (#73) from renovate/grafana-10.x into main
Reviewed-on: #73
2026-01-07 23:31:25 +00:00
renovate-bot ebcb633f50 chore(deps): update helm release grafana to v10.5.4 2026-01-07 20:00:12 +00:00
williamp 2778ace7c6 Merge pull request 'chore(deps): update helm release grafana to v10.5.3' (#72) from renovate/grafana-10.x into main
Reviewed-on: #72
2026-01-06 22:56:09 +00:00
renovate-bot 2f70f7a253 chore(deps): update helm release grafana to v10.5.3 2026-01-06 14:00:12 +00:00
williamp d9e3c81773 Merge pull request 'chore(deps): update helm release grafana to v10.5.1' (#71) from renovate/grafana-10.x into main
Reviewed-on: #71
2026-01-06 01:46:53 +00:00
renovate-bot 6ab7d2b631 chore(deps): update helm release grafana to v10.5.1 2026-01-05 14:00:13 +00:00
williamp 92f87db257 Merge pull request 'chore(deps): update helm release grafana to v10.4.3' (#70) from renovate/grafana-10.x into main
Reviewed-on: #70
2025-12-31 20:44:58 +00:00
renovate-bot 98c4d478e9 chore(deps): update helm release grafana to v10.4.3 2025-12-31 10:00:13 +00:00
williamp 26358f06ef Merge pull request 'chore(deps): update helm release grafana to v10.4.2' (#69) from renovate/grafana-10.x into main
Reviewed-on: #69
2025-12-31 04:44:38 +00:00
renovate-bot f43f25e828 chore(deps): update helm release grafana to v10.4.2 2025-12-30 16:00:12 +00:00
williamp 254b32c5bf Merge pull request 'chore(deps): update helm release grafana to v10.4.0' (#68) from renovate/grafana-10.x into main
Reviewed-on: #68
2025-12-19 14:55:41 +00:00
renovate-bot adb4397593 chore(deps): update helm release grafana to v10.4.0 2025-12-18 13:00:09 +00:00
williamp 3c9bf5dd19 Merge pull request 'chore(deps): update helm release grafana to v10.3.2' (#67) from renovate/grafana-10.x into main
Reviewed-on: #67
2025-12-17 15:33:47 +00:00
williamp 29c864dbb1 Merge pull request 'chore(deps): update helm release authentik to v2025.10.3' (#66) from renovate/authentik-2025.x into main
Reviewed-on: #66
2025-12-17 15:33:37 +00:00
williamp 3ebe0aada7 Merge pull request 'chore(deps): update helm release jellyfin to v2.7.0' (#65) from renovate/jellyfin-2.x into main
Reviewed-on: #65
2025-12-17 15:33:11 +00:00
renovate-bot 92a50feddc chore(deps): update helm release grafana to v10.3.2 2025-12-17 14:00:13 +00:00
renovate-bot e151c46d98 chore(deps): update helm release authentik to v2025.10.3 2025-12-16 19:00:08 +00:00
renovate-bot 65051ce602 chore(deps): update helm release jellyfin to v2.7.0 2025-12-15 15:00:09 +00:00
williamp 6c5c98b73e gitea: use authz for liveness probe 2025-12-11 14:36:27 -05:00
williamp 5d5a6d79bb Merge pull request 'chore(deps): update helm release grafana to v10.3.1' (#64) from renovate/grafana-10.x into main
Reviewed-on: #64
2025-12-11 16:35:37 +00:00
renovate-bot 8af68a5e80 chore(deps): update helm release grafana to v10.3.1 2025-12-11 14:00:10 +00:00
actions 423d9e9916 yt-dlp-bot: deploy update to 174ce12 2025-12-10 04:14:21 +00:00
actions 51ba8eff0c yt-dlp-bot: deploy update to 29ea174 2025-12-09 23:27:52 +00:00
williamp 480ba4867d flaresolverr: rm limits entirely, its ok if it gets de-prioritized 2025-12-03 16:52:30 -05:00
williamp cf9035bc5c a 2025-12-03 16:48:56 -05:00
williamp 088f55a6bd flaresolverr: increase limits a bit more 2025-12-03 16:46:32 -05:00
williamp fdfebf045f increase flaresolverr limits 2025-12-03 16:43:06 -05:00
actions 981f6df797 yt-dlp-bot: deploy update to 3f476bc 2025-12-03 16:47:35 +00:00
williamp a92977cb6d Merge pull request 'chore(deps): update helm release jellyfin to v2.6.0' (#63) from renovate/jellyfin-2.x into main
Reviewed-on: #63
2025-12-02 16:01:21 +00:00
renovate-bot 93abfece0b chore(deps): update helm release jellyfin to v2.6.0 2025-12-02 04:00:10 +00:00
williamp 36bdf2adc1 Merge pull request 'chore(deps): update helm release grafana to v10.3.0' (#62) from renovate/grafana-10.x into main
Reviewed-on: #62
2025-12-01 15:13:55 +00:00
renovate-bot f3d974befe chore(deps): update helm release grafana to v10.3.0 2025-12-01 15:00:09 +00:00
actions 579b4077d2 yt-dlp-bot: deploy update to 1ef217f 2025-11-29 00:44:39 +00:00
williamp 1946931937 dispatcharr: fix transcoding 2025-11-28 10:39:12 -05:00
williamp 856ee307ff dispatcharr: add hw transcoding 2025-11-27 20:39:09 -05:00
williamp f4da25c243 jellyfin: block public access to metrics 2025-11-26 10:41:21 -05:00
williamp 19f8dd922b jellyfin: enable monitoring 2025-11-26 09:58:00 -05:00
williamp 2e26a5df9e gitea: metrics should be under gitea.gitea 2025-11-26 09:53:29 -05:00
williamp 5ffaa2d65b gitea: enable metrics 2025-11-26 09:52:24 -05:00
williamp b2d4211583 gitea: attempt to increase valkey-cluster limits 2025-11-24 15:02:51 -05:00
williamp 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
williamp 447c4b618b grafana: re-enable 2025-11-21 13:22:16 -05:00
renovate-bot 2a5057dc5b chore(deps): update helm release grafana to v10.2.0 2025-11-21 13:00:09 +00:00
williamp a58d4dc19f grafana: take offline temporarily for prometheus migrations 2025-11-20 08:59:19 -05:00
williamp 482ddda271 authentik: rm redis, no longer a dependency 2025-11-19 15:03:34 -05:00
williamp 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
williamp 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
renovate-bot 6666fd467f chore(deps): update helm release grafana to v10.1.5 2025-11-19 17:00:13 +00:00
renovate-bot 3a2e9e0e9d chore(deps): update helm release authentik to v2025.10.2 2025-11-19 14:00:10 +00:00
williamp d17fce4dcc update postgres url for gitea, netmaker, and peertube 2025-11-13 21:16:49 -05:00
williamp a514eed9cf authentik: once again try to use pooler url 2025-11-13 21:06:55 -05:00
williamp d747936738 Revert "authentik: migrate to pgsql pooler url"
This reverts commit 7c65d7a917.
2025-11-13 16:31:54 -05:00
williamp 7c65d7a917 authentik: migrate to pgsql pooler url 2025-11-13 15:45:50 -05:00
actions 7d456d5bd8 yt-dlp-bot: deploy update to db488e0 2025-11-12 03:32:49 +00:00
actions 63fdcf4b41 yt-dlp-bot: deploy update to e124ea3 2025-11-12 03:24:57 +00:00
actions b7b33c9812 yt-dlp-bot: deploy update to 2f47bbd 2025-11-12 03:15:02 +00:00
actions bb4ac79006 yt-dlp-bot: deploy update to 709ccdd 2025-11-12 02:51:52 +00:00
williamp 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
renovate-bot 894d2d90bb chore(deps): update docker.io/bats/bats docker tag to v1.13.0 2025-11-07 17:00:10 +00:00
williamp 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
williamp 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
renovate-bot 5d642abfb2 chore(deps): update helm release authentik to v2025.10.1 2025-11-03 18:00:18 +00:00
renovate-bot 06ce0d7020 chore(deps): update helm release jellyfin to v2.5.0 2025-11-03 04:00:12 +00:00
williamp 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
renovate-bot 34e18748d2 chore(deps): update helm release grafana to v10.1.4 2025-10-29 23:00:13 +00:00
williamp 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
renovate-bot ee3f5d2d7e chore(deps): update helm release authentik to v2025.10.0 2025-10-27 21:00:08 +00:00
williamp d1ad8fc440 netmaker: fix ui 2025-10-26 22:28:41 -04:00
actions 821cf8f067 yt-dlp-bot: deploy update to 8eb6bf3 2025-10-26 18:17:58 +00:00
williamp a38752d7e6 netmaker: prod config 2025-10-26 14:13:40 -04:00
williamp 65d8ddebb1 netmaker: add API and UI 2025-10-23 19:38:35 -04:00
williamp 8c878150d9 Merge remote-tracking branch 'refs/remotes/origin/main' 2025-10-22 22:02:22 -04:00
williamp e6c0474bbb netmaker stub 2025-10-22 22:02:07 -04:00
actions d0fdc8c932 yt-dlp-bot: deploy update to 0c21a85 2025-10-22 23:07:02 +00:00
actions cb0cbcf1fb yt-dlp-bot: deploy update to d29c045 2025-10-22 21:35:51 +00:00
actions c4c25a647b yt-dlp-bot: deploy update to c2c228d 2025-10-22 15:04:21 +00:00
williamp 27e477af6f renovate: add ssh signing 2025-10-22 10:34:57 -04:00
williamp 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
renovate-bot 8882f1a3d7 chore(deps): update helm release jellyfin to v2.4.0 2025-10-20 04:00:10 +00:00
williamp 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
renovate-bot 10f79e298e chore(deps): update helm release grafana to v10.1.2 2025-10-18 13:00:17 +00:00
williamp 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
renovate-bot 56e71cb9e2 chore(deps): update helm release grafana to v10.1.1 2025-10-15 16:00:09 +00:00
actions f8f80a393e yt-dlp-bot: deploy update to cef71e1 2025-10-15 02:18:52 +00:00
williamp 604323e615 gitea: enable valkey cluster from chart 2025-10-12 20:10:48 -04:00
williamp 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
renovate-bot cb9ec59e78 chore(deps): update helm release grafana to v10.1.0 2025-10-10 16:00:18 +00:00
actions b3b7521f99 yt-dlp-bot: deploy update to 7f1182f 2025-10-09 12:52:00 +00:00
actions d3d5b1eba6 yt-dlp-bot: deploy update to 0cf1b4a 2025-10-08 13:21:39 +00:00
actions 47d716d393 yt-dlp-bot: deploy update to 0821359 2025-10-08 13:19:54 +00:00
actions f8ee4b70ae yt-dlp-bot: deploy update to 7c3905e 2025-10-08 13:08:23 +00:00
actions 05150b8d4b yt-dlp-bot: deploy update to 2d9241b 2025-10-08 13:05:09 +00:00
williamp 983de12bf9 rm wekan 2025-10-06 20:51:18 -04:00
williamp 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
renovate-bot 3bda4aeead chore(deps): update helm release gitea to v12.4.0 2025-10-06 15:00:16 +00:00
williamp 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
renovate-bot 6df1bae2a2 chore(deps): update helm release authentik to v2025.8.4 2025-09-30 11:00:09 +00:00
actions e819c0a19e yt-dlp-bot: deploy update to 236ef0d 2025-09-29 16:52:02 +00:00
williamp 449a5884c1 add arr-stack and jellyfin to velero backups 2025-09-29 08:46:53 -04:00
actions f7950a6632 yt-dlp-bot: deploy update to f7cb27b 2025-09-28 04:16:28 +00:00
actions 7b68fb1578 yt-dlp-bot: deploy update to feb99c0 2025-09-26 19:50:42 +00:00
williamp 2b2d1766af jellyfin: increase config PVC to 25Gi 2025-09-25 17:32:50 -04:00
actions 13ea9a56dc yt-dlp-bot: deploy update to d06af69 2025-09-23 18:48:03 +00:00
williamp 0e4c3a219a add kubernetes manifests to renovate 2025-09-19 22:12:19 -04:00
williamp c5e7f62f29 add sonarr 2025-09-18 22:57:12 -04:00
williamp ef5cb3b27b rm ingresses to make way for authentik to handle ingress 2025-09-18 22:57:12 -04:00
williamp 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
williamp 37edf93b21 add flaresolvarr, prowlarr 2025-09-18 18:53:33 -04:00
williamp 692e8fd9b6 add arr-stack 2025-09-18 17:41:47 -04:00
renovate-bot 543a85c4fb chore(deps): update helm release wekan to v7.95.0 2025-09-18 20:00:09 +00:00
williamp 49c5f5d8c9 rm emby 2025-09-18 10:07:13 -04:00
williamp 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
renovate-bot 09fbc4e474 chore(deps): update helm release grafana to v10 2025-09-16 20:00:09 +00:00
williamp 9f953e79ca authentik: i forgor to add smtp username 2025-09-16 14:14:01 -04:00
williamp 98628a2113 authentik: use default port 25 for smtp 2025-09-16 14:05:56 -04:00
williamp 2fc19ce70d authentik: extend smtp timeout 2025-09-16 14:00:36 -04:00
williamp bbe1d21048 authentik: setup smtp 2025-09-16 13:53:12 -04:00
williamp 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
renovate-bot 15a82b2ebb chore(deps): update helm release authentik to v2025.8.3 2025-09-16 17:00:10 +00:00
williamp 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
williamp 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
renovate-bot 2051d563f8 chore(deps): update helm release gitea to v12.3.0 2025-09-15 17:00:14 +00:00
renovate-bot d4e4cb1313 chore(deps): update helm release authentik to v2025.8.2 2025-09-15 17:00:09 +00:00
williamp ae13754c27 rm emby ingress 2025-09-15 12:52:13 -04:00
williamp fcc65c33fa add jellyfin 2025-09-15 12:51:47 -04:00
actions 83a337f768 yt-dlp-bot: deploy update to 44b59e3 2025-09-13 04:30:45 +00:00
williamp 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
renovate-bot 9a43144600 chore(deps): update helm release grafana to v9.4.5 2025-09-11 14:00:08 +00:00
actions d0386c0204 yt-dlp-bot: deploy update to d478896 2025-09-06 02:34:47 +00:00
williamp 8e53b08ed6 add dispatcharr 2025-09-03 18:40:20 -04:00
williamp f9126499c2 xmltv: add OTA 2025-09-03 18:36:20 -04:00
williamp 73e36385f8 add zap2xml 2025-09-03 14:39:55 -04:00
williamp 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
renovate-bot 8ca7676f61 chore(deps): update helm release grafana to v9.4.4 2025-09-01 08:00:08 +00:00
actions 0c6be07c25 yt-dlp-bot: deploy update to 5c5cba7 2025-08-31 21:02:05 +00:00
williamp 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
renovate-bot 150a50a5a9 chore(deps): update helm release grafana to v9.4.3 2025-08-29 21:00:09 +00:00
79 changed files with 1386 additions and 914 deletions
+29
View File
@@ -0,0 +1,29 @@
# Core Apps
**Production-grade application deployments for my Kubernetes homelab**
This repository contains the core applications deployed to my Kubernetes homelab. Applications are deployed using either Kubernetes manifests or Helm charts (with upstream subcharts and custom values).
**Why Helm?** I prefer Helm charts when upstream versions exist because Renovate can automatically track new chart versions, whereas image tags in raw manifests aren't always semantically versioned.
**GitOps Workflow:** This repository is monitored by ArgoCD and serves as the source of truth for deployments. Each top-level directory is its own ArgoCD Application, with subdirectories representing components within that application.
**Automated Commits:** Apps that I wrote/maintain directly (such as yt-dlp-bot and zap2xml) get their manifests automatically updated via an Actions workflow in their respective repositories
- `arr-stack/` - Arr Stack (manifests)
- `flaresolverr/` - Flaresolverr (captcha processor)
- `prowlarr/` - Prowlarr (indexer manager)
- `radarr/` - Radarr (movie media manager)
- `sonarr/` - Sonarr (TV series media manager)
- `tunnel/` - Custom SSH tunnel to my seedbox to securely communicate with Deluge
- `attic/` - Attic NixOS cache server (manifests)
- `authentik/` - [Authentik](https://auth.dubyatp.xyz) SSO server (Helm chart)
- `gitea/` - [Gitea](https://git.dubyatp.xyz) Git Server (Helm chart)
- `gitea-runner/` - Gitea Runner (manifests)
- `buildkitd/` - Docker Buildkitd build environment
- `grafana/` - [Grafana](https://grafana.dubyatp.xyz) observability dashboard (Helm chart)
- `jellyfin/` - [Jellyfin](https://jellyfin.dubyatp.xyz) media server (Helm chart)
- `renovate/` - [Renovate](https://git.dubyatp.xyz/renovate-bot) automated dependency manager (manifests)
- `vaultwarden/` - [Vaultwarden](https://vaultwarden.dubyatp.xyz) password manager (manifests)
- `whatismyip/` - [Simple "what is my IP" HTTP service](https://whatismyip.dubyatp.xyz) (manifests)
- `yt-dlp-bot/` - [yt-dlp bot](https://git.dubyatp.xyz/williamp/yt-dlp-bot) (manifests); a custom Discord bot i created for downloading and storing YouTube videos ad-hoc
- `zap2xml/` - [kube-zap2xml](https://git.dubyatp.xyz/williamp/kube-zap2xml) (manifests); modified version of zap2xml (zap2it TV listings scraper) designed for use as Kubernetes jobs and sends the result XMLTV format to a Rook-Ceph S3 bucket
+21
View File
@@ -0,0 +1,21 @@
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.6
resources:
requests:
memory: "2Gi"
cpu: "0.5"
+10
View File
@@ -0,0 +1,10 @@
apiVersion: v1
kind: Service
metadata:
name: flaresolverr
spec:
selector:
app: flaresolverr
ports:
- port: 8191
targetPort: 8191
+33
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.3.0.5236
volumeMounts:
- name: config
mountPath: /config
resources:
limits:
memory: "1Gi"
cpu: "1"
requests:
memory: "512Mi"
cpu: "0.5"
volumes:
- name: config
persistentVolumeClaim:
claimName: prowlarr-config
@@ -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
+10
View File
@@ -0,0 +1,10 @@
apiVersion: v1
kind: Service
metadata:
name: prowlarr
spec:
selector:
app: prowlarr
ports:
- port: 9696
targetPort: 9696
+45
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-6.0.4.10291
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
@@ -1,11 +1,11 @@
apiVersion: v1 apiVersion: v1
kind: PersistentVolumeClaim kind: PersistentVolumeClaim
metadata: metadata:
name: immich-library name: radarr-config
spec: spec:
resources: resources:
requests: requests:
storage: 50Gi storage: 10Gi
volumeMode: Filesystem volumeMode: Filesystem
accessModes: accessModes:
- ReadWriteMany - ReadWriteMany
+10
View File
@@ -0,0 +1,10 @@
apiVersion: v1
kind: Service
metadata:
name: radarr
spec:
selector:
app: radarr
ports:
- port: 7878
targetPort: 7878
+45
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:version-4.0.16.2944
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
@@ -1,12 +1,11 @@
apiVersion: v1 apiVersion: v1
kind: PersistentVolumeClaim kind: PersistentVolumeClaim
metadata: metadata:
name: resilio-pvc name: sonarr-config
spec: spec:
storageClassName: weyma-shared
resources: resources:
requests: requests:
storage: 10Gi storage: 10Gi
volumeMode: Filesystem volumeMode: Filesystem
accessModes: accessModes:
- ReadWriteOnce - ReadWriteMany
+10
View File
@@ -0,0 +1,10 @@
apiVersion: v1
kind: Service
metadata:
name: sonarr
spec:
selector:
app: sonarr
ports:
- port: 8989
targetPort: 8989
+33
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@184.107.106.14 -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
+28
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
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
+10
View File
@@ -0,0 +1,10 @@
apiVersion: objectbucket.io/v1alpha1
kind: ObjectBucketClaim
metadata:
name: attic-bucket
namespace: attic
spec:
additionalConfig:
maxSize: 100Gi
bucketName: attic-bucket
storageClassName: weyma-s3-bucket
+36
View File
@@ -0,0 +1,36 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: attic-config
data:
server.toml: |
listen = "[::]:8080"
allowed-hosts = []
#api-endpoint = "https://nix-cache.dubyatp.xyz/"
[database]
url = "sqlite:///var/empty/.local/share/attic/server.db"
[storage]
path = "/data/.local/share/attic/storage"
type = "local"
#region = "us-east-1"
#bucket = "attic-bucket"
#endpoint = "https://weyma-s3.infra.dubyatp.xyz"
[chunking]
nar-size-threshold = 65536
min-size = 16384
avg-size = 65536
max-size = 262144
[compression]
type = "zstd"
[garbage-collection]
interval = "12 hours"
[jwt]
[jwt.signing]
+24
View File
@@ -0,0 +1,24 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: attic-db-auth
spec:
data:
- remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: cloudnativepg
metadataPolicy: None
property: attic_pw
secretKey: password
refreshInterval: 1h
secretStoreRef:
kind: ClusterSecretStore
name: weyma-vault
target:
template:
data:
ATTIC_SERVER_DATABASE_URL: "postgres://attic:{{ .password }}@pooler-weyma-rw.cloudnativepg.svc.cluster.local/attic"
creationPolicy: Owner
deletionPolicy: Retain
name: attic-db-auth
+12 -2
View File
@@ -3,6 +3,7 @@ kind: Deployment
metadata: metadata:
name: attic name: attic
spec: spec:
replicas: 3
selector: selector:
matchLabels: matchLabels:
app: attic app: attic
@@ -13,17 +14,26 @@ spec:
spec: spec:
containers: containers:
- name: attic - name: attic
image: ghcr.io/zhaofengli/attic:ff8a897d1f4408ebbf4d45fa9049c06b3e1e3f4e image: ghcr.io/zhaofengli/attic:c4ffb5e86e928572e867bd3f81545293313e0a08
envFrom: envFrom:
- secretRef: - secretRef:
name: attic-secret name: attic-secret
- secretRef:
name: attic-db-auth
- secretRef:
name: attic-bucket
volumeMounts: volumeMounts:
- name: attic-pvc - name: attic-pvc
mountPath: /var/empty mountPath: /var/empty/
resources: resources:
limits: limits:
memory: "2Gi" memory: "2Gi"
cpu: "500m" cpu: "500m"
- name: multitool
image: wbitt/network-multitool
volumeMounts:
- name: attic-pvc
mountPath: /var/empty/
volumes: volumes:
- name: attic-pvc - name: attic-pvc
persistentVolumeClaim: persistentVolumeClaim:
+1 -1
View File
@@ -24,5 +24,5 @@ appVersion: "1.0"
dependencies: dependencies:
- name: authentik - name: authentik
version: 2025.8.1 version: 2026.5.3
repository: https://charts.goauthentik.io repository: https://charts.goauthentik.io
+47 -20
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
@@ -51,8 +32,10 @@ authentik:
secretKeyRef: secretKeyRef:
name: authentik-credentials name: authentik-credentials
key: authentik-secret-key key: authentik-secret-key
- name: AUTHENTIK_POSTGRESQL__DISABLE_SERVER_SIDE_CURSORS
value: "true"
- name: AUTHENTIK_POSTGRESQL__HOST - name: AUTHENTIK_POSTGRESQL__HOST
value: weyma-pgsql-rw.cloudnativepg.svc.cluster.local value: pooler-weyma-rw-authentik.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 +45,37 @@ 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"
- name: AUTHENTIK_STORAGE__BACKEND
value: "s3"
- name: AUTHENTIK_STORAGE__S3__ENDPOINT
value: "https://weyma-s3.infra.dubyatp.xyz"
- name: AUTHENTIK_STORAGE__S3__BUCKET_NAME
value: "authentik-files"
- name: AUTHENTIK_STORAGE__S3__ACCESS_KEY
valueFrom:
secretKeyRef:
name: authentik-files
key: AWS_ACCESS_KEY_ID
- name: AUTHENTIK_STORAGE__S3__SECRET_KEY
valueFrom:
secretKeyRef:
name: authentik-files
key: AWS_SECRET_ACCESS_KEY
additionalObjects: additionalObjects:
- apiVersion: networking.k8s.io/v1 - apiVersion: networking.k8s.io/v1
kind: Ingress kind: Ingress
@@ -125,6 +139,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:
@@ -146,3 +164,12 @@ authentik:
creationPolicy: Owner creationPolicy: Owner
deletionPolicy: Retain deletionPolicy: Retain
name: authentik-db-auth name: authentik-db-auth
- apiVersion: objectbucket.io/v1alpha1
kind: ObjectBucketClaim
metadata:
name: authentik-files
spec:
additionalConfig:
maxSize: 20Gi
bucketName: authentik-files
storageClassName: weyma-s3-bucket
-10
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: ""
-79
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
-22
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
-39
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
-23
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
+40
View File
@@ -0,0 +1,40 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: buildkitd
namespace: gitea-runner
spec:
progressDeadlineSeconds: 600
replicas: 3
revisionHistoryLimit: 10
selector:
matchLabels:
app: buildkitd
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
labels:
app: buildkitd
spec:
containers:
- args:
- --addr
- tcp://0.0.0.0:1234
image: moby/buildkit:v0.27.1
imagePullPolicy: Always
name: buildkitd
ports:
- containerPort: 1234
protocol: TCP
securityContext:
privileged: true
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
terminationGracePeriodSeconds: 30
+14
View File
@@ -0,0 +1,14 @@
apiVersion: v1
kind: Service
metadata:
name: buildkitd
namespace: gitea-runner
spec:
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- port: 1234
selector:
app: buildkitd
+41
View File
@@ -0,0 +1,41 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: runner-config
data:
config.yaml: |-
log:
level: info
runner:
file: /data/.runner
capacity: 1
env_file: .env
timeout: 3h
shutdown_timeout: 0s
insecure: false
fetch_timeout: 5s
fetch_interval: 2s
labels:
- "ubuntu-latest:docker://docker.gitea.com/runner-images:ubuntu-latest"
- "ubuntu-22.04:docker://docker.gitea.com/runner-images:ubuntu-22.04"
- "ubuntu-20.04:docker://docker.gitea.com/runner-images:ubuntu-20.04"
cache:
enabled: true
dir: ""
host: ""
port: 0
external_server: ""
container:
network: "host"
privileged: false
options: ""
workdir_parent: /scratch
valid_volumes:
- /scratch/**
docker_host: ""
force_pull: true
force_rebuild: false
require_docker: false
docker_timeout: 0s
host:
workdir_parent:
-79
View File
@@ -1,79 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "4"
labels:
app: act-runner
name: act-runner
namespace: gitea-runner
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: act-runner
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: act-runner
spec:
containers:
- command:
- sh
- -c
- while ! nc -z localhost 2376 </dev/null; do echo 'waiting for docker daemon...';
sleep 5; done; /sbin/tini -- run.sh
env:
- name: DOCKER_HOST
value: tcp://localhost:2376
- name: DOCKER_CERT_PATH
value: /certs/client
- name: DOCKER_TLS_VERIFY
value: "1"
- name: GITEA_INSTANCE_URL
value: https://git.dubyatp.xyz
- name: GITEA_RUNNER_REGISTRATION_TOKEN
valueFrom:
secretKeyRef:
key: token
name: runner-secret
image: gitea/act_runner:nightly
imagePullPolicy: Always
name: runner
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /certs
name: docker-certs
- mountPath: /data
name: runner-data
- env:
- name: DOCKER_TLS_CERTDIR
value: /certs
image: docker:23.0.6-dind
imagePullPolicy: IfNotPresent
name: daemon
securityContext:
privileged: true
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /certs
name: docker-certs
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
terminationGracePeriodSeconds: 30
volumes:
- name: docker-certs
- name: runner-data
persistentVolumeClaim:
claimName: act-runner-vol
+88
View File
@@ -0,0 +1,88 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: act-runner
namespace: gitea-runner
labels:
app: act-runner
spec:
serviceName: ""
selector:
matchLabels:
app: act-runner
replicas: 3
template:
metadata:
labels:
app: act-runner
spec:
initContainers:
- name: sysctl
image: busybox
securityContext:
privileged: true
command:
- sh
- -c
- echo 28633 > /proc/sys/user/max_user_namespaces
- name: chown-data
image: busybox
securityContext:
runAsUser: 0
command:
- sh
- -c
- chown -R 1000:1000 /data
volumeMounts:
- name: runner-data
mountPath: /data
containers:
- name: runner
image: gitea/act_runner:nightly-dind-rootless
imagePullPolicy: Always
env:
- name: DOCKERD_ROOTLESS_ROOTLESSKIT_FLAGS
value: "--net=slirp4netns --copy-up=/etc"
- name: CONFIG_FILE
value: /config/config.yaml
- name: DOCKER_HOST
value: unix:///run/user/1000/docker.sock
- name: GITEA_INSTANCE_URL
value: https://git.dubyatp.xyz
- name: GITEA_RUNNER_REGISTRATION_TOKEN
valueFrom:
secretKeyRef:
key: registration-token
name: gitea-runner-token
securityContext:
privileged: true
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- name: runner-config
mountPath: /config
- name: runner-data
mountPath: /data
- name: runner-scratch
mountPath: /scratch
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
terminationGracePeriodSeconds: 30
volumes:
- name: runner-scratch
emptyDir:
medium: Memory
sizeLimit: 5Gi
- name: runner-config
configMap:
name: runner-config
volumeClaimTemplates:
- metadata:
name: runner-data
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: weyma-shared
resources:
requests:
storage: 32Gi
+2 -2
View File
@@ -24,5 +24,5 @@ appVersion: "1.0"
dependencies: dependencies:
- name: gitea - name: gitea
version: 12.2.0 version: 12.6.1
repository: https://dl.gitea.com/charts/ repository: https://weyma-s3.infra.dubyatp.xyz/helm-bucket-ea34bc44-ef19-480d-a16a-1e583991f123/charts/
+14 -27
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
@@ -80,7 +70,7 @@ gitea:
START_SSH_SERVER: true START_SSH_SERVER: true
OFFLINE_MODE: false OFFLINE_MODE: false
service: service:
DISABLE_REGISTRATION: false DISABLE_REGISTRATION: true
webhook: webhook:
ALLOWED_HOST_LIST: "drone.infra.dubyatp.xyz,argocd.infra.dubyatp.xyz,discord.com,10.0.0.0/8" ALLOWED_HOST_LIST: "drone.infra.dubyatp.xyz,argocd.infra.dubyatp.xyz,discord.com,10.0.0.0/8"
mailer: mailer:
@@ -92,21 +82,16 @@ gitea:
USER: gitea_dubyatp USER: gitea_dubyatp
security: security:
INSTALL_LOCK: true INSTALL_LOCK: true
metrics:
enabled: true
serviceMonitor:
enabled: true
livenessProbe:
enabled: true
httpGet:
path: /api/healthz
port: 3000
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 +188,6 @@ gitea:
postgresql-ha: postgresql-ha:
enabled: false enabled: false
valkey-cluster: valkey-cluster:
enabled: false enabled: true
valkey:
resourcesPreset: "small"
+1 -1
View File
@@ -24,5 +24,5 @@ appVersion: "1.0"
dependencies: dependencies:
- name: grafana - name: grafana
version: 9.3.6 version: 10.5.15
repository: https://grafana.github.io/helm-charts repository: https://grafana.github.io/helm-charts
+1 -1
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
-9
View File
@@ -1,9 +0,0 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: immich-config
data:
immich-config.yaml: |
trash:
enabled: true
days: 30
-94
View File
@@ -1,94 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: immich-ml
spec:
selector:
matchLabels:
app: immich-ml
template:
metadata:
labels:
app: immich-ml
spec:
containers:
- name: immich-ml
image: ghcr.io/immich-app/immich-machine-learning:v1.134.0
volumeMounts:
- name: model-cache
mountPath: /cache
- name: config
mountPath: /config/immich-config.yaml
- name: dev-dri
mountPath: /dev/dri
env:
- name: DB_HOSTNAME
value: "immich-rw.cloudnativepg.svc.cluster.local"
- name: DB_DATABASE_NAME
value: "immich"
- name: DB_USERNAME
valueFrom:
secretKeyRef:
key: username
name: postgres-credentials
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
key: password
name: postgres-credentials
- name: REDIS_HOSTNAME
value: redis
- name: REDIS_PORT
value: "6379"
- name: IMMICH_PORT
value: "3003"
livenessProbe:
httpGet:
path: /ping
port: 3003
initialDelaySeconds: 0
periodSeconds: 10
timeoutSeconds: 1
failureThreshold: 3
readinessProbe:
httpGet:
path: /ping
port: 3003
initialDelaySeconds: 0
periodSeconds: 10
timeoutSeconds: 1
failureThreshold: 3
startupProbe:
httpGet:
path: /ping
port: 3003
initialDelaySeconds: 0
periodSeconds: 10
timeoutSeconds: 1
failureThreshold: 30
securityContext:
privileged: true
resources:
limits:
memory: "8Gi"
cpu: "2"
requests:
memory: "2Gi"
cpu: "500m"
volumes:
- name: model-cache
emptyDir:
sizeLimit: 10Gi
- name: config
configMap:
name: immich-config
- name: dev-dri
hostPath:
path: /dev/dri
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: extensions.talos.dev/i915
operator: Exists
-94
View File
@@ -1,94 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: immich-server
spec:
selector:
matchLabels:
app: immich-server
template:
metadata:
labels:
app: immich-server
spec:
containers:
- name: immich-server
image: ghcr.io/immich-app/immich-server:v1.134.0
volumeMounts:
- name: library
mountPath: /usr/src/app/upload
- name: config
mountPath: /config/immich-config.yaml
- name: dev-dri
mountPath: /dev/dri
env:
- name: DB_HOSTNAME
value: "immich-rw.cloudnativepg.svc.cluster.local"
- name: DB_DATABASE_NAME
value: "immich"
- name: DB_USERNAME
valueFrom:
secretKeyRef:
key: username
name: postgres-credentials
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
key: password
name: postgres-credentials
- name: REDIS_HOSTNAME
value: redis
- name: REDIS_PORT
value: "6379"
- name: IMMICH_PORT
value: "2283"
livenessProbe:
httpGet:
path: /api/server/ping
port: 2283
initialDelaySeconds: 0
periodSeconds: 10
timeoutSeconds: 1
failureThreshold: 3
readinessProbe:
httpGet:
path: /api/server/ping
port: 2283
initialDelaySeconds: 0
periodSeconds: 10
timeoutSeconds: 1
failureThreshold: 3
startupProbe:
httpGet:
path: /api/server/ping
port: 2283
initialDelaySeconds: 0
periodSeconds: 10
timeoutSeconds: 1
failureThreshold: 30
securityContext:
privileged: true
resources:
limits:
memory: "8Gi"
cpu: "2"
requests:
memory: "2Gi"
cpu: "500m"
volumes:
- name: library
persistentVolumeClaim:
claimName: immich-library
- name: config
configMap:
name: immich-config
- name: dev-dri
hostPath:
path: /dev/dri
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: extensions.talos.dev/i915
operator: Exists
-23
View File
@@ -1,23 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: immich
spec:
selector:
app: immich-server
ports:
- port: 2283
targetPort: 2283
name: http
---
apiVersion: v1
kind: Service
metadata:
name: immich-ml
spec:
selector:
app: immich-ml
ports:
- port: 3003
targetPort: 3003
name: http
-38
View File
@@ -1,38 +0,0 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: redis
spec:
selector:
matchLabels:
app: redis
serviceName: redis
replicas: 1
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis
image: redis:latest
command: ["redis-server"]
args:
- "--port"
- "6379"
- "--dir"
- "/data"
- "--appendonly"
- "yes"
volumeMounts:
- name: data
mountPath: /data
volumeClaimTemplates:
- spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: rook-ceph-block
resources:
requests:
storage: 10Gi
metadata:
name: data
-10
View File
@@ -1,10 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: redis
spec:
selector:
app: redis
ports:
- port: 6379
targetPort: 6379
+28
View File
@@ -0,0 +1,28 @@
apiVersion: v2
name: jellyfin
description: A Helm chart for Kubernetes
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.1.0
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
appVersion: "1.0"
dependencies:
- name: jellyfin
version: 3.2.0
repository: https://jellyfin.github.io/jellyfin-helm
+33
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 }}
+26
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
+11
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
+67
View File
@@ -0,0 +1,67 @@
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: 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: 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
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"
@@ -1,18 +1,16 @@
apiVersion: networking.k8s.io/v1 apiVersion: networking.k8s.io/v1
kind: Ingress kind: Ingress
metadata: metadata:
name: peertube name: netmaker-api-ingress
labels:
app.kubernetes.io/name: peertube
spec: spec:
rules: rules:
- host: tube.dubyatp.xyz - host: api.netmaker.infra.dubyatp.xyz
http: http:
paths: paths:
- pathType: Prefix - pathType: Prefix
path: "/" path: "/"
backend: backend:
service: service:
name: peertube name: netmaker-rest
port: port:
number: 9000 number: 8081
@@ -1,12 +1,11 @@
apiVersion: v1
kind: PersistentVolumeClaim kind: PersistentVolumeClaim
apiVersion: v1
metadata: metadata:
name: gitea-runner-pvc name: shared-certs-pvc
spec: spec:
storageClassName: weyma-shared
accessModes:
- ReadWriteMany
resources: resources:
requests: requests:
storage: 1Gi storage: 100Mi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
storageClassName: weyma-shared
+38
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
+83
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
@@ -1,22 +1,18 @@
apiVersion: networking.k8s.io/v1 apiVersion: networking.k8s.io/v1
kind: Ingress kind: Ingress
metadata: metadata:
name: immich name: mosquitto-ingress
labels: labels:
name: immich app.kubernetes.io/name: mosquitto-ingress
spec: spec:
rules: rules:
- host: immich.dubyatp.xyz - host: broker.netmaker.infra.dubyatp.xyz
http: http:
paths: paths:
- pathType: Prefix - pathType: Prefix
path: "/" path: "/"
backend: backend:
service: service:
name: immich name: mq
port: port:
number: 2283 number: 8883
tls:
- secretName: cert-dubyatp-xyz
hosts:
- immich.dubyatp.xyz
+36
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
@@ -1,7 +1,7 @@
apiVersion: external-secrets.io/v1 apiVersion: external-secrets.io/v1
kind: ExternalSecret kind: ExternalSecret
metadata: metadata:
name: postgres-credentials name: postgres-pw
spec: spec:
data: data:
- remoteRef: - remoteRef:
@@ -9,17 +9,13 @@ spec:
decodingStrategy: None decodingStrategy: None
key: cloudnativepg key: cloudnativepg
metadataPolicy: None metadataPolicy: None
property: immich_pw property: netmaker_pw
secretKey: password secretKey: password
refreshInterval: 1h refreshInterval: 1h
secretStoreRef: secretStoreRef:
kind: ClusterSecretStore kind: ClusterSecretStore
name: weyma-vault name: weyma-vault
target: target:
template:
data:
username: immich
password: "{{ .password }}"
creationPolicy: Owner creationPolicy: Owner
deletionPolicy: Retain deletionPolicy: Retain
name: postgres-credentials name: postgres-pw
+11 -18
View File
@@ -1,37 +1,30 @@
apiVersion: external-secrets.io/v1 apiVersion: external-secrets.io/v1
kind: ExternalSecret kind: ExternalSecret
metadata: metadata:
name: peertube-secret name: netmaker-secrets
spec: spec:
data: data:
- remoteRef: - remoteRef:
conversionStrategy: Default conversionStrategy: Default
decodingStrategy: None decodingStrategy: None
key: peertube key: netmaker
metadataPolicy: None metadataPolicy: None
property: PEERTUBE_SECRET property: master_key
secretKey: PEERTUBE_SECRET secretKey: master_key
- remoteRef: - remoteRef:
conversionStrategy: Default conversionStrategy: Default
decodingStrategy: None decodingStrategy: None
key: peertube key: netmaker
metadataPolicy: None metadataPolicy: None
property: PEERTUBE_DB_PASSWORD property: mq_password
secretKey: PEERTUBE_DB_PASSWORD secretKey: mq_password
- remoteRef: - remoteRef:
conversionStrategy: Default conversionStrategy: Default
decodingStrategy: None decodingStrategy: None
key: peertube key: netmaker
metadataPolicy: None metadataPolicy: None
property: PEERTUBE_SMTP_PASSWORD property: turn_password
secretKey: PEERTUBE_SMTP_PASSWORD secretKey: turn_password
- remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: peertube
metadataPolicy: None
property: POSTGRES_PASSWORD
secretKey: POSTGRES_PASSWORD
refreshInterval: 1h refreshInterval: 1h
secretStoreRef: secretStoreRef:
kind: ClusterSecretStore kind: ClusterSecretStore
@@ -39,4 +32,4 @@ spec:
target: target:
creationPolicy: Owner creationPolicy: Owner
deletionPolicy: Retain deletionPolicy: Retain
name: peertube-secret name: netmaker-secrets
+95
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.4.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
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
+21
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
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
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'
-35
View File
@@ -1,35 +0,0 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: peertube-config
data:
PEERTUBE_INSTANCE_NAME: "dubyatp peertube"
PEERTUBE_INSTANCE_DESCRIPTION: "duby's peertube instance"
POSTGRES_USER: peertube
POSTGRES_DB: peertube
PEERTUBE_DB_USERNAME: peertube
PEERTUBE_DB_HOSTNAME: weyma-pgsql-rw.cloudnativepg.svc.cluster.local
PEERTUBE_DB_PORT: "5432"
PEERTUBE_WEBSERVER_HOSTNAME: "tube.dubyatp.xyz"
PEERTUBE_TRUST_PROXY: '["127.0.0.1", "loopback", "172.18.0.0/16"]'
PEERTUBE_SMTP_USERNAME: "peertube_dubyatp"
PEERTUBE_SMTP_HOSTNAME: "mail.smtp2go.com"
PEERTUBE_SMTP_PORT: "465"
PEERTUBE_SMTP_TLS: "true"
PEERTUBE_SMTP_FROM: "peertube@em924671.dubyatp.xyz"
PEERTUBE_ADMIN_EMAIL: "me@williamtpeebles.com"
#PEERTUBE_OBJECT_STORAGE_ENABLED: "true"
#PEERTUBE_OBJECT_STORAGE_ENDPOINT: "https://weyma-s3.infra.dubyatp.xyz"
#PEERTUBE_OBJECT_STORAGE_REGION: ""
#PEERTUBE_OBJECT_STORAGE_STREAMING_PLAYLISTS_BUCKET_NAME: "peertube-953221d2-7649-48b2-b79f-5a9e59daedbb"
#PEERTUBE_OBJECT_STORAGE_STREAMING_PLAYLISTS_PREFIX: "streaming/"
#PEERTUBE_OBJECT_STORAGE_WEB_VIDEOS_BUCKET_NAME: "peertube-953221d2-7649-48b2-b79f-5a9e59daedbb"
#PEERTUBE_OBJECT_STORAGE_WEB_VIDEOS_PREFIX: "videos/"
#PEERTUBE_OBJECT_STORAGE_USER_EXPORTS_BUCKET_NAME: "peertube-953221d2-7649-48b2-b79f-5a9e59daedbb"
#PEERTUBE_OBJECT_STORAGE_USER_EXPORTS_PREFIX: "exports/"
#PEERTUBE_OBJECT_STORAGE_ORIGINAL_VIDEO_FILES_BUCKET_NAME: "peertube-953221d2-7649-48b2-b79f-5a9e59daedbb"
#PEERTUBE_OBJECT_STORAGE_ORIGINAL_VIDEO_FILES_PREFIX: "original-videos/"
#PEERTUBE_OBJECT_STORAGE_CAPTIONS_BUCKET_NAME: "peertube-953221d2-7649-48b2-b79f-5a9e59daedbb"
#PEERTUBE_OBJECT_STORAGE_CAPTIONS_PREFIX: "captions/"
#PEERTUBE_OBJECT_STORAGE_UPLOAD_ACL_PUBLIC: "public-read"
#PEERTUBE_OBJECT_STORAGE_UPLOAD_ACL_PRIVATE: "private"
-69
View File
@@ -1,69 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: peertube
labels:
app: peertube
spec:
replicas: 1
selector:
matchLabels:
app: peertube
template:
metadata:
labels:
app: peertube
spec:
containers:
- name: peertube
image: chocobozzz/peertube:v7.2.3-bookworm
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
name: http
- containerPort: 443
name: https
- containerPort: 9000
name: peertube
- containerPort: 1935
name: rtmp
envFrom:
- secretRef:
name: peertube-secret
- secretRef:
name: peertube-bucket
- configMapRef:
name: peertube-config
env:
- name: PEERTUBE_REDIS_HOSTNAME
value: "localhost"
- name: PEERTUBE_REDIS_AUTH
value: ""
volumeMounts:
- name: peertube-data
mountPath: /data
resources:
requests:
cpu: "0.5"
memory: 1Gi
limits:
cpu: "1"
memory: 2Gi
- name: redis
image: redis:8.2.1-alpine
imagePullPolicy: IfNotPresent
ports:
- containerPort: 6379
name: redis
resources:
requests:
cpu: "0.2"
memory: 256Mi
limits:
cpu: "0.5"
memory: 1Gi
volumes:
- name: peertube-data
persistentVolumeClaim:
claimName: peertube-data
-10
View File
@@ -1,10 +0,0 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: peertube-data
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 50Gi
-24
View File
@@ -1,24 +0,0 @@
kind: Service
apiVersion: v1
metadata:
name: peertube
spec:
selector:
app: peertube
ports:
- protocol: TCP
port: 80
targetPort: 80
name: http
- protocol: TCP
port: 25
targetPort: 25
name: smtp
- protocol: TCP
port: 9000
targetPort: 9000
name: peertube
- protocol: TCP
name: rtmp
port: 1935
targetPort: 1935
-16
View File
@@ -1,16 +0,0 @@
apiVersion: hyperspike.io/v1
kind: Valkey
metadata:
name: peertube-kv
labels:
app.kubernetes.io/instance: peertube
spec:
anonymousAuth: true
certIssuerType: ClusterIssuer
clusterDomain: cluster.local
clusterPreferredEndpointType: ip
nodes: 1
prometheus: false
replicas: 3
tls: false
volumePermissions: true
+4 -1
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"]
}
} }
+2 -1
View File
@@ -10,6 +10,7 @@ data:
"infrastructure/db-operators", "infrastructure/db-operators",
"infrastructure/weyma-talos", "infrastructure/weyma-talos",
"williamp/dubyatp.xyz", "williamp/dubyatp.xyz",
"williamp/yt-dlp-bot" "williamp/yt-dlp-bot",
"williamp/helm-gitea"
] ]
} }
+5
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
+17
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
+4 -4
View File
@@ -1,5 +1,5 @@
apiVersion: v2 apiVersion: v2
name: wekan name: searxng
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: searxng
version: 7.94.0 version: 1.1.4
repository: https://wekan.github.io/charts/ repository: https://charts.kubito.dev
+1 -1
View File
@@ -17,7 +17,7 @@ spec:
spec: spec:
containers: containers:
- name: vaultwarden - name: vaultwarden
image: vaultwarden/server:1.33.2-alpine image: vaultwarden/server:1.35.2-alpine
livenessProbe: livenessProbe:
exec: exec:
command: command:
-12
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 -}}
-12
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 }}
-31
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 }}
-63
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
+3 -1
View File
@@ -14,12 +14,14 @@ 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:7c4c14d'
env: env:
- name: OUT_PATH - name: OUT_PATH
value: /data/youtube-vids value: /data/youtube-vids
- name: TEMP_PATH - name: TEMP_PATH
value: /tmp/ytdlp-temp value: /tmp/ytdlp-temp
- name: LOADING_EMOJI
value: "<a:loading:1479485735076761848>"
envFrom: envFrom:
- secretRef: - secretRef:
name: yt-dlp-discord-token name: yt-dlp-discord-token
+4 -4
View File
@@ -1,10 +1,10 @@
apiVersion: objectbucket.io/v1alpha1 apiVersion: objectbucket.io/v1alpha1
kind: ObjectBucketClaim kind: ObjectBucketClaim
metadata: metadata:
name: peertube-bucket name: zap2xml-bucket
namespace: peertube namespace: zap2xml
spec: spec:
generateBucketName: peertube generateBucketName: zap2xml
storageClassName: weyma-s3-bucket storageClassName: weyma-s3-bucket
additionalConfig: additionalConfig:
maxSize: "100Gi" maxSize: "1Gi"
+98
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
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