46 Commits

Author SHA1 Message Date
db862df82c fix: update VPN server regions to include Japan for Gluetun, JDownloader, and qBittorrent
Some checks failed
validate / lint (push) Failing after 1s
2026-08-19 01:11:27 +09:00
36ac94ccf3 fix: increase memory requests and limits for kavita2 deployment
Some checks failed
validate / lint (push) Failing after 0s
2026-08-02 18:10:01 +09:00
0a997367f0 fix: update VPN server regions for JDownloader deployment
Some checks failed
validate / lint (push) Failing after 1s
2026-08-02 03:05:05 +09:00
d31f85f4b3 fix: increase failureThreshold for livenessProbe in Gluetun and qBittorrent deployments
Some checks failed
validate / lint (push) Failing after 0s
2026-08-02 02:32:51 +09:00
bcc697db7e feat: add second Kavita instance with NFS and IngressRoute at books2.home.arpa
Some checks failed
validate / lint (push) Failing after 0s
fix: update Pi-hole configurations to include DNS entry for books2.home.arpa
2026-08-02 02:30:17 +09:00
423d9eacab feat: add Kavita e-book server configuration with NFS and IngressRoute
Some checks failed
validate / lint (push) Failing after 0s
2026-08-02 01:54:23 +09:00
d95806cd32 fix: update JDownloader script to include download password in crawljob format
Some checks failed
validate / lint (push) Failing after 1s
2026-07-26 03:10:50 +09:00
c354e6c39f feat: enhance JDownloader script to handle .torrent files and save them to output directory
Some checks failed
validate / lint (push) Failing after 1s
2026-07-26 02:20:30 +09:00
fb3e2976e2 feat: add documentation for JDownloader integration and package naming
Some checks failed
validate / lint (push) Failing after 1s
2026-07-26 01:47:07 +09:00
c625461e30 fix: update JDownloader script to extract package name from URL for crawljob
Some checks failed
validate / lint (push) Failing after 2s
2026-07-26 01:37:03 +09:00
9dc4bbe249 fix: update JDownloader script to write 'text' instead of 'url' for crawljob
Some checks failed
validate / lint (push) Failing after 1s
2026-07-26 01:29:16 +09:00
a70a3a8014 fix: update cnl-bridge container and service ports from 9666 to 9667
Some checks failed
validate / lint (push) Failing after 1s
2026-07-26 01:01:01 +09:00
f006090fea fix: remove Immich entirely
Some checks failed
validate / lint (push) Failing after 1s
Not used enough to justify chasing the stale-NFS-handle issue on its
photos-art mount. Removes manifests/media/immich.yaml (Namespace, PVCs,
Deployments, Service, Certificate, IngressRoute), its secret script and
sealed secret, immich.home.arpa from both Pi-hole values files, its Dashy
dashboard tile, and all other repo references (READMEs, secrets-leak-scanner
scope, regen-sealed-secret example, .env.example).

Per explicit confirmation: this also means the live namespace's PVCs
(immich-library 50Gi, immich-postgres-data 20Gi, immich-ml-cache 10Gi, all
local-path with Delete reclaim policy) are intended to be deleted along with
it -- any photos actually uploaded to Immich's own library are gone once the
namespace is deleted, separately from the read-only NFS folders it browsed
(untouched either way, those live independently on nik-debian).

Git removal alone does not delete the live cluster resources -- the media
Application has prune: false. Manual `kubectl delete namespace immich` still
needed to actually free the namespace/PVCs/data.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-23 20:21:05 +09:00
a93818146a fix: qbittorrent/jdownloader crash-loop from today's rollout
Some checks failed
validate / lint (push) Failing after 1s
Both Deployments' rolling update briefly ran an old+new pod pair on the same
node (node-role: storage), sharing the same config storage (qbittorrent's PVC,
jdownloader's hostPath) -- both apps are effectively singletons that lock
their config directory, so the new instance conflicted with the still-running
old one:

- qbittorrent: hit a known qbittorrent:5.2.0 image bug (linuxserver/
  docker-qbittorrent#432) where a stale WebUI lockfile prevents the server
  from ever binding its port while a second instance is present -- surfaced
  as the new pod's readiness probe getting "connection refused" indefinitely.
  On top of that, my livenessProbe (30s/30s) was killing the container
  (exitCode 137) before qbittorrent had any chance to come up at all. Dropped
  the livenessProbe (readiness alone can never kill a container, only mark it
  not-ready) and loosened the readinessProbe timing.
- jdownloader: the new pod's app process detected the old instance's lock in
  the shared /data/jdownloader hostPath and exited cleanly (exitCode 0) rather
  than run a duplicate copy -- nothing to do with probe timing.

Both Deployments now use `strategy: Recreate` instead of the RollingUpdate
default, so any future rollout fully stops the old pod before starting the
new one -- this is the actual fix (matches the pattern immich.yaml already
used). Applying this will briefly restart both currently-running pods to
verify it.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-23 19:15:54 +09:00
d44295f569 fix: add resource requests/limits and probes to workloads that had none
Stage 7 of REFACTOR_PLAN.md (findings #16). Covers dashy, glances,
ca-installer, authentik-proxy-outpost, jellyfin, qbittorrent/jdownloader main
containers (their gluetun sidecars already had probes), and all 4 Immich
Deployments -- previously none of these had any protection against one
workload starving another on this fixed-capacity cluster, nor automatic
restart on hang.

Values are sized from live `kubectl top pod` baselines gathered this session
(not guessed): e.g. Jellyfin/Immich-server were observed at ~3.1-3.3Gi
resident, so their limits give headroom above that (4Gi) rather than an
arbitrary round number. Used tcpSocket probes instead of httpGet wherever I
wasn't certain of an app's exact health-check path (Immich, Postgres/Redis),
to avoid a wrong path causing false probe failures on a live service.

This is Kubernetes-native and takes effect on next pod restart, but should
still be rolled out watching `kubectl top`/restart counts rather than pushed
and forgotten -- limits set too low can OOMKill under real load.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-23 18:21:03 +09:00
f80848c57e fix: update JDownloader VPN configuration to use Singapore server region 2026-05-24 17:05:53 +09:00
7a2caa824d fix: update HTTPPROXY_LISTENING_ADDRESS format to include port prefix 2026-05-16 17:28:45 +09:00
620068624d fix: update Gluetun image version to v3.41.1 in Gluetun, JDownloader, and qBittorrent deployments 2026-05-16 17:26:21 +09:00
21f3c545b9 feat: add health checks for Gluetun proxy, JDownloader, and qBittorrent deployments 2026-05-16 17:25:16 +09:00
3e0ed35e24 fix: update SERVER_REGIONS for Gluetun proxy to include South Korea and Taiwan 2026-05-16 06:59:55 +09:00
cce74a88e8 fix: update SERVER_REGIONS for JDownloader and qBittorrent to include additional locations 2026-05-16 06:58:29 +09:00
cc070cee61 feat: add Gluetun proxy deployment and service configuration 2026-05-13 22:30:26 +09:00
c373b828d1 fix: remove Photoview references from configuration and documentation 2026-05-13 00:40:15 +09:00
449b60b38f fix: improve IP retrieval logic with retry mechanism and timeout 2026-05-12 23:16:40 +09:00
367a456bcc fix: specify charset in Content-Type header for HTML response 2026-05-12 23:13:25 +09:00
8381be79e2 fix: update X-Frame-Options to Content-Security-Policy for enhanced security 2026-05-12 23:10:49 +09:00
d674fa9ddc feat: enhance IP reporter response with HTML formatting and styling 2026-05-12 23:06:33 +09:00
4c62bfa7b8 feat: replace gluetun-auth ConfigMap with ip-reporter service for public IP retrieval 2026-05-12 22:56:07 +09:00
b2024efb7e fix: correct syntax for auth configuration in gluetun ConfigMap 2026-05-12 22:46:36 +09:00
d310a8ba16 fix: update gluetun-auth ConfigMap to use correct syntax for routes 2026-05-12 22:43:36 +09:00
6e5b8fa241 feat: add gluetun authentication ConfigMap and mount it in qBittorrent deployment 2026-05-12 22:41:45 +09:00
5275c5186a Added setting to disable auth 2026-05-12 22:37:51 +09:00
8bc36e4a0b feat: add name to web port in qBittorrent service configuration 2026-05-12 22:34:02 +09:00
3209a13ed6 feat: enhance Dashy configuration with new Downloads section and integrate gluetun API for VPN IP display
feat: update qBittorrent deployment to expose gluetun API on port 8000 and add TLS certificate for secure access
feat: add gluetun DNS entry to Pi-hole configuration for improved network management
2026-05-12 22:32:20 +09:00
b9638c0ad9 feat: enable BLOCK_IPV6 in JDownloader and qBittorrent configurations 2026-05-12 20:12:07 +09:00
7742509a29 feat: update SERVER_REGIONS value to 'Hong Kong' in JDownloader and qBittorrent configurations 2026-05-12 20:06:34 +09:00
95b27c4eb2 feat: update SERVER_REGIONS value to 'JP Tokyo' in JDownloader and qBittorrent configurations 2026-05-12 20:00:25 +09:00
d2b36080a6 feat: update VPN_TYPE to openvpn in JDownloader and qBittorrent configurations 2026-05-12 19:59:05 +09:00
cfce656854 feat: add gluetun VPN container and pia-credentials management for secure connections 2026-05-12 19:52:56 +09:00
0aa886b6a2 feat: update qBittorrent image version to 5.2.0 2026-05-10 01:32:10 +09:00
7f1462658b feat: update Immich server and machine learning images to v2.7.5 2026-05-01 19:50:22 +09:00
1ceb8209bc feat: add Immich database credentials and deployment configuration 2026-05-01 19:43:09 +09:00
2bccbc14ef feat: implement cnl-bridge service for handling crawljob requests in JDownloader 2026-04-13 00:06:08 +09:00
054d7470cf feat: add clicknload port configuration and IngressRoute for JDownloader 2026-04-12 23:45:26 +09:00
e49ea43596 Add Photoview and the corresponding address in Pihole 2026-03-17 21:52:48 +09:00
83f46c9748 feat(gitea): add backup CronJob with RBAC and NFS support
feat(gitea): create PersistentVolume and PersistentVolumeClaim for Gitea

feat(gitea): add script to create Gitea runner registration token secret

feat(gitea): deploy Gitea Actions runner with Docker socket access

feat(media): deploy JDownloader with Ingress configuration

feat(media): set up Jellyfin media server with NFS and Ingress

feat(media): configure qBittorrent deployment with Ingress

feat(monitoring): add Grafana Loki datasource ConfigMap

feat(monitoring): create Grafana admin credentials secret

feat(monitoring): define PersistentVolumes for monitoring stack

feat(network): implement DDNS CronJob for Porkbun DNS updates

feat(network): create secret for Porkbun DDNS API credentials

feat(network): set up Glances service and Ingress for Debian node

fix(network): patch Pi-hole DNS services with external IPs

feat(network): configure Traefik dashboard Ingress with Authentik auth

feat(network): set up Watch Party service and Ingress for Mac Mini

refactor(values): update Helm values files for various services
2026-03-12 21:56:32 +09:00