89 Commits

Author SHA1 Message Date
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
d0887ac648 fix: Argo CD bootstrap normalization -- adopt cert-manager/Authentik config, fix policy drift
Stage 5 + part of Stage 6/7 of REFACTOR_PLAN.md. This is the highest-risk
stage per the plan -- these Applications are NOT to be pushed/synced blindly.
Each needs `kubectl diff` against live state one at a time before enabling.

New Applications (previously-live resources with zero GitOps coverage):
- cert-manager-config.yaml (manifests/cert-manager: both ClusterIssuers + the
  internal CA Certificate -- every TLS cert in the cluster depends on these,
  and nothing currently restores them on a cold rebuild).
- authentik-config.yaml (manifests/authentik: ingress, proxy outpost,
  middleware -- raw manifests only, low risk).
- authentik.yaml (the Authentik Helm chart itself): sync is deliberately left
  MANUAL and targetRevision is a REPLACE_ME placeholder -- I don't have a safe
  way to read the live chart version (`helm list -n authentik`), and guessing
  wrong risks an unwanted upgrade/downgrade of the SSO IdP gating Argo CD/
  Grafana/Gitea logins. Needs your input before this one goes anywhere.
- network.yaml: widens coverage to the 4 non-sealed files in manifests/network
  (ddns-cronjob, glances-debian-ingress, traefik-dashboard-ingress,
  watch-party-ingress) that were previously invisible to Argo CD; keeps
  network-secrets.yaml scoped to *-sealed.yaml only.

Fixes:
- homeassistant.yaml: destination.namespace was "homeassistant" (empty,
  unused) while the actual resources are hardcoded to "default" -- corrected,
  dropped CreateNamespace=true. The old empty namespace isn't auto-deleted
  (prune: false); safe to remove by hand if desired.
- gitea-backup.yaml: added the missing Namespace object (nothing created
  "gitea-backup" before); replaced a cluster-wide ClusterRole/ClusterRoleBinding
  granting pods/exec everywhere with a Role/RoleBinding scoped to the `gitea`
  namespace, matching what the backup script actually execs into. NOTE: this
  is already under active sync via gitea-secrets.yaml (selfHeal: true,
  prune: false) -- once pushed, the old ClusterRole/ClusterRoleBinding will
  need manual `kubectl delete` since Argo CD won't prune them.
- Added sync-wave "-2" to cert-manager/sealed-secrets Applications so their
  CRDs land before consumers (matches the existing -1/0 wave pattern).
- Normalized targetRevision HEAD -> main on home-services/otel-collector/tempo.
- Normalized sync policy per your decision: home-services/otel-collector/tempo
  prune true -> false; pihole/pihole-debian selfHeal false -> true (repo-wide
  consistency, per your call on finding #18).

Verified: kubeconform valid across all manifests + Argo CD Application objects.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-23 18:20:54 +09:00
e6550d0e39 fix: rotate Gitea DB password and Dashy API key off plaintext, fix internal CA issuerRef
Stage 1 of REFACTOR_PLAN.md. values/gitea.yaml and config/dashy/conf.yaml now
reference secrets injected at apply-time (gitea-postgres-secret.sh, .env) instead
of hardcoding a live DB password and weather API key in git. Both values must be
treated as compromised and rotated by the operator (see .env.example).

Also fixes authentik-ingress.yaml and traefik-dashboard-ingress.yaml, which
pointed at the internal-ca root ClusterIssuer instead of internal-ca-issuer,
the chained issuer every other internal Certificate uses -- causing untrusted-cert
warnings on the SSO login and Traefik dashboard.

Extends .gitignore for *.retry, .vault_pass*, kubeconfig patterns, and editor
swap files.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-23 18:14:46 +09:00
f0d2f23a0f feat: add SwitchBot token and secret to environment configuration and update ha-gateway secret and deployment 2026-07-23 13:57:07 +09:00
e7718ce356 feat: add GPU node setup with Docker and NVIDIA support, including configuration files and playbook updates 2026-07-23 11:07:18 +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
5fde45b374 feat: add Gluetun proxy deployment and service configuration 2026-05-13 22:28:50 +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
4cc3af39d6 feat: update README files to enhance documentation for Ansible, Argo CD, and Kubernetes manifests 2026-05-06 19:42:33 +09:00
f9b0e53988 Move file 2026-05-06 01:44:28 +09:00
0c0254b03d feat: add CA sync service account, roles, role bindings, and cron job for certificate rotation management 2026-05-06 01:21:22 +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
861f9c9688 feat: increased timeout limit 2026-04-21 23:21:34 +09:00
54d368d462 feat: add ai-gateway deployment and service configuration with TLS support 2026-04-21 22:04:22 +09:00
91f8167323 refactor: remove 'ollama-external.yaml' and its manual exclusion from ArgoCD application 2026-04-21 17:16:25 +09:00
7d2fde96ae feat: add Ollama role with installation, configuration, and service exposure for K3s cluster 2026-04-21 16:43:44 +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
970cf1ba4d fix: update readiness and liveness probes to use tcpSocket instead of grpc 2026-04-09 22:45:38 +09:00
fd4cb3e0e5 feat: add TLS configuration for Discord Bot and HA Gateway 2026-04-09 22:40:46 +09:00
364a1314f5 feat: add TLS certificate configurations for HA Gateway and Discord Bot 2026-04-09 22:24:45 +09:00
bacd56f420 fix: update email addresses for Let's Encrypt configuration in cert-manager and Traefik 2026-04-09 21:46:40 +09:00
1b1026182d fix: update HA_GATEWAY_ADDR to use home-services namespace and add registry secret script 2026-04-07 23:07:56 +09:00
d7b12765db feat: update namespaces to home-services for Discord and HA components 2026-04-07 22:40:03 +09:00
53e7e32d5a feat: add Discord and Home Assistant integration with sealed secrets and deployments 2026-04-06 21:14:47 +09:00
c470c60b4a wire rate limit middleware to portfolio IngressRoute 2026-03-26 23:52:45 +09:00