Sync HTPC Manifests to GitOps / Sync Manifests to GitOps Repo (push) Successful in 4s
101 lines
5.0 KiB
Markdown
101 lines
5.0 KiB
Markdown
# HTPC & Media Services Platform
|
|
|
|
Beheert de configuratie, deployment en automatisering van de HTPC (Home Theater PC) en media-stack voor `bnhmeijer.nl` op `vmserver` (`10.2.0.4`).
|
|
|
|
---
|
|
|
|
## 🧭 Inhoudsopgave
|
|
|
|
- [Overzicht](#-overzicht)
|
|
- [Applicaties & Services](#-applicaties--services)
|
|
- [Architectuur & Ingress](#-architectuur--ingress)
|
|
- [Opslag & Mounts](#-opslag--mounts)
|
|
- [GitOps & Deployment](#-gitops--deployment)
|
|
|
|
---
|
|
|
|
## 📌 Overzicht
|
|
|
|
Deze repository bevat de Kubernetes manifests, configuraties en eventuele hulpscripts voor de HTPC mediadiensten. De workloads worden beheerd via GitOps (Gitea Actions en ArgoCD) binnen het homelab cluster.
|
|
|
|
---
|
|
|
|
## 🎬 Applicaties & Services
|
|
|
|
De HTPC omgeving omvat onder andere de volgende diensten:
|
|
|
|
| Service | Poort | Beschrijving |
|
|
| :--- | :--- | :--- |
|
|
| **Jellyfin** | `8096` | Media streaming en playback server voor films, series en muziek |
|
|
| **Sonarr** | `8989` | Automatisch beheer en downloaden van tv-series |
|
|
| **Radarr** | `7878` | Automatisch beheer en downloaden van speelfilms |
|
|
| **Lidarr** | `8686` | Automatisch beheer en downloaden van muziek |
|
|
| **Bazarr** | `6767` | Ondertitelbeheer en synchronisatie |
|
|
| **Jackett / Prowlarr** | `9117` / `9696` | Torrent- en usenet indexer proxy |
|
|
| **SABnzbd / Transmission** | `8080` / `9091` | Downloadclients voor media-acquisitie (BitTorrent peer-poort `53662`) |
|
|
| **slskd** | `5030` / `50300` | Soulseek peer-to-peer client en web daemon (HTTP: `5030`, Soulseek listen: `50300`) |
|
|
|
|
---
|
|
|
|
## 🏛️ Architectuur & Ingress
|
|
|
|
- **SSL & Reverse Proxy**: Inkomend verkeer verloopt via de centrale Apache reverse proxy op `thuus.bnhmeijer.nl`.
|
|
- **Authenticatie**: Beveiligd via Keycloak OIDC of ingebouwde service-authenticatie.
|
|
- **Interne routering**: Envoy Gateway HTTPRoutes routeren verkeer direct naar de betreffende Kubernetes pods in de `htpc` namespace.
|
|
|
|
---
|
|
|
|
## 🚀 Migratie van Host Services naar Kubernetes
|
|
|
|
### Radarr
|
|
Voor het migreren van de standalone `radarr.service` op `10.2.0.4` naar de Kubernetes pod is een geautomatiseerd script beschikbaar:
|
|
|
|
```bash
|
|
# Migratie uitvoeren (stopt host service, synct /storage/var/lib/radarr naar K8s PVC, start pod):
|
|
./migrate_radarr_to_cluster.sh
|
|
|
|
# Terugrollen naar standalone service indien gewenst:
|
|
./rollback_radarr_migration.sh
|
|
```
|
|
|
|
- **Dataopslag**: PersistentVolumeClaim `radarr-config` (10Gi, `local-path` op `/datadisk/infra/pv`).
|
|
- **Mediaopslag**: HostPath `/datadisk` gemount op `/datadisk` (voor films in `/datadisk/htpc/Films` en downloads in `/datadisk/upload`).
|
|
- **Netwerk & Ingress**: Luistert op poort `7878` (zowel via ClusterIP als HostPort `7878` op `10.2.0.4`), waardoor de bestaande Apache reverse proxy rule (`ProxyPass /radarr http://127.0.0.1:7878/radarr`) naadloos blijft functioneren.
|
|
|
|
### Transmission
|
|
De BitTorrent daemon (`transmission`) draait als pod in de `htpc` namespace:
|
|
|
|
- **Dataopslag**: PersistentVolumeClaim `transmission-config` (10Gi, `local-path` op `/datadisk/infra/pv`), gemigreerd vanuit `/var/www/.config/transmission-daemon` met behoud van alle torrents, resume-bestanden en instellingen.
|
|
- **Mediaopslag**: HostPath `/datadisk` en `/mnt/mp3` zodat `/datadisk/upload/finished` en `/datadisk/upload/incomplete` identiek zijn voor Transmission, Radarr, Sonarr en Lidarr.
|
|
- **Netwerk**: Web UI / RPC op poort `9091` (ClusterIP + HostPort `9091`) en BitTorrent peer-poort `53662` (TCP & UDP, ClusterIP + HostPort `53662`).
|
|
|
|
### slskd
|
|
De Soulseek daemon (`slskd`) draait als pod in de `htpc` namespace:
|
|
|
|
- **Dataopslag**: PersistentVolumeClaim `slskd-config` (10Gi, `local-path` op `/datadisk/infra/pv`), gemigreerd vanuit `/var/www/.local/share/slskd` via een init-container (inclusief `slskd.yml`, SQLite databases en state).
|
|
- **Mediaopslag**: HostPath `/datadisk` gemount op `/datadisk` (voor `/datadisk/upload/slskd`, `/datadisk/upload/incomplete` en `/datadisk/htpc/mp3`) en `/mnt/mp3` gemount op `/mnt/mp3`.
|
|
- **Netwerk**: Web UI op poort `5030` (ClusterIP + HostPort `5030`), optioneel HTTPS op poort `5031` en Soulseek listen poort `50300` (ClusterIP + HostPort `50300`).
|
|
- **Migratie & Opruimen**:
|
|
```bash
|
|
# Migratie uitvoeren (maakt backup in /storage/backups/, stopt host service, start pod):
|
|
./migrate_slskd_to_cluster.sh
|
|
|
|
# Oude host bestanden en service opruimen:
|
|
./cleanup_old_slskd.sh
|
|
```
|
|
|
|
### Jackett
|
|
De torrent indexer proxy (`jackett`) draait als pod in de `htpc` namespace:
|
|
|
|
- **Dataopslag**: PersistentVolumeClaim `jackett-config` (10Gi, `local-path` op `/datadisk/infra/pv`), gemigreerd vanuit `/home/bart/.config/Jackett` via init-container (inclusief alle indexers en `ServerConfig.json`).
|
|
- **Mediaopslag**: HostPath `/datadisk` gemount op `/datadisk`.
|
|
- **Netwerk & Ingress**: Luistert op poort `9117` (ClusterIP + HostPort `9117`). De Apache reverse proxy routeert `https://thuus.bnhmeijer.nl/jackett/` naadloos door naar `127.0.0.1:9117`.
|
|
- **Migratie & Opruimen**:
|
|
```bash
|
|
# Migratie uitvoeren (maakt backup in /storage/backups/, stopt host service, start pod):
|
|
./migrate_jackett_to_cluster.sh
|
|
|
|
# Oude host bestanden en service opruimen:
|
|
./cleanup_old_jackett.sh
|
|
```
|