Compare commits

...
89 Commits
Author SHA1 Message Date
bart 8d42ba4aa9 chore: update chargeman pointer 2026-11-11 19:09:33 +01:00
bart eddde47f6e chore: update chargeman pointer (auto/manual mode) 2026-11-11 19:07:08 +01:00
bart e1a9b1df3f chore: update chargeman pointer 2026-11-11 18:57:25 +01:00
bart 6fad45d632 docs: add chargeman submodule, update pointer 2026-11-11 18:53:12 +01:00
bart 2899a4ef89 chore: add chargeman submodule 2026-11-11 18:49:09 +01:00
bart 1fffb2f13e chore(jellyfinradio): update submodule pointer to latest fix 2026-11-07 22:10:08 +01:00
bart 292659bfe2 feat(htpc): migrate radio-chicken to Kubernetes cluster 2026-11-07 11:27:51 +01:00
bart 7ab467d3dc chore(submodule): update k8s-infra-vmserver pointer after tomcat-ords manifest sync 2026-11-07 11:12:27 +01:00
bart c0f7d9f04e radio chicken toegevoegd 2026-11-07 11:11:54 +01:00
bart 9a74068e92 chore(submodule): update cluster-infra pointer for tomcat-ords Jakarta EE migration 2026-11-07 11:08:53 +01:00
bart 2189f460ac chore(htpc): update submodule pointer for legacy jellyfin mount fix 2026-11-07 11:03:37 +01:00
bart 8063f2a49f chore(htpc): update submodule pointer with jellyfin fix 2026-11-07 10:58:55 +01:00
bart 30adef5687 chore(submodule): update k8s-infra-vmserver with healthy oracle-db probes 2026-11-07 10:48:27 +01:00
bart 1dec428949 chore(htpc): update submodule pointer for jellyfin manifests 2026-11-07 10:44:17 +01:00
bart 58fae430a0 feat(apex): add Oracle Database Free in development and Tomcat 10 with ORDS in cluster-infra 2026-11-07 10:43:22 +01:00
bart 0b78895dfb chore(submodule): update cluster-infra (remove soularr docs) 2026-11-07 10:13:56 +01:00
bart 5e1c2d590e chore(submodules): bump jellyfin-client and package-repo to 0.1.5 2026-11-06 18:25:24 +01:00
bart 8c7cd6647f chore(submodules): bump jellyfin-client and package-repo to 0.1.4 2026-11-05 22:20:46 +01:00
bart 2bd3cea773 chore(submodules): bump jellyfin-client and package-repo to 0.1.3 2026-11-05 19:12:28 +01:00
bart 22a2be6cc2 chore(submodules): update jellyfin-client and package-repo with hidden cursor 2026-11-05 18:58:26 +01:00
bart 99cdcd1f63 chore(submodules): bump jellyfin-client and package-repo to 0.1.2 2026-11-05 18:46:45 +01:00
bart 4986f16d2a chore(submodules): update jellyfin-client and package-repo 2026-11-04 23:26:42 +01:00
bart ff5a18ea6b feat(submodule): voeg jellyfin-client toe als submodule 2026-11-03 19:28:53 +01:00
bart 3f848d389b fix(gitops): update k8s-infra-vmserver submodule pointer after image revert 2026-11-02 21:18:57 +01:00
bart e7f666c995 Merge branch 'main' of https://git.bnhmeijer.nl/bart/cluster 2026-11-02 20:33:44 +01:00
bart 4aa412b653 chore(htpc): bump submodule pointer for flaresolverr 2026-10-30 10:18:27 +01:00
bart 664e18c952 chore(htpc): bump submodule pointer for jackett config fix 2026-10-30 10:11:42 +01:00
bart bca67df61f chore(htpc): bump submodule pointer for jackett migration 2026-10-30 10:08:26 +01:00
bart 00a31363a6 chore(htpc): bump submodule pointer for slskd remote_file_management 2026-10-30 09:56:32 +01:00
bart 12b6b2c312 chore(htpc): bump submodule pointer for slskd memory limit 2026-10-30 09:14:27 +01:00
bart a6e30caf65 chore(htpc): bump submodule pointer for slskd startup grace period 2026-10-30 09:02:35 +01:00
bart f9215475da chore(htpc): bump submodule pointer for lidarr nightly 2026-10-30 08:51:46 +01:00
bart 76aaeb5161 chore(htpc): bump submodule pointer for slskd startup probe 2026-10-30 08:30:52 +01:00
bart 176e8f61ce chore(htpc): bump submodule pointer for slskd migration 2026-10-30 08:18:30 +01:00
bart 9d84493c6f chore(submodule): update cluster-infra with dnsmasq fail-fast entrypoint 2026-10-29 17:25:00 +01:00
bart c299d54aff chore(submodules): update cluster-infra (label-service) and HERMS (dopetiketten) 2026-10-29 16:52:04 +01:00
bart 41fb511877 Merge branch 'main' of https://git.bnhmeijer.nl/bart/cluster 2026-10-29 16:02:02 +01:00
bart 7f2d2b64c3 grasmaaier 2026-10-29 15:51:23 +01:00
bart f2c463f2ab chore(submodules): update cluster-infra submodule pointer 2026-10-25 17:28:26 +01:00
bart 42d5f9675b chore(submodule): update package-repo to 6ee1625 (v1.0.1 browser policies) 2026-10-20 23:36:59 +02:00
bart fed5ceb987 Update package-repo pointer with update-repo.sh 2026-10-20 23:12:59 +02:00
bart c5ef437346 feat: add crt.bnhmeijer.nl aliases and sync cert-service manifests 2026-10-20 23:11:38 +02:00
bart cd8d2ac337 feat: add automated renewal and deploy initial certs for all OpenWrt APs 2026-10-20 23:06:22 +02:00
bart 55b0077109 feat: enable HTTPS for herms.lan and internal Apache LAN services 2026-10-20 22:48:05 +02:00
bart 4d08a9c4bb Update package-repo pointer with bnhmeijer-ca-certificates 2026-10-20 22:44:35 +02:00
bart 95fd38de45 Add eendoeserver AGENTS.md and document deploy command 2026-10-20 22:40:07 +02:00
bart e65b592d9c feat: add cert-service for homelab token-based TLS certificate issuance 2026-10-20 22:33:56 +02:00
bart b0a06a721f Update eendoeserver submodule pointer 2026-10-20 22:31:29 +02:00
bart 953d9b0c7a Update eendoeserver submodule pointer 2026-10-20 22:02:20 +02:00
bart 47186f08fc Update package-repo pointer with install test workflow and package fixes 2026-10-20 22:01:25 +02:00
bart 3d83b38db4 Update submodules with /dev/tty interactive prompt fix 2026-10-20 21:43:39 +02:00
bart e3c035450d Update package-repo submodule pointer (brand styled index.html) 2026-10-20 21:41:50 +02:00
bart 6f3a65b83e Update package-repo submodule pointer (modern index.html) 2026-10-20 21:38:17 +02:00
bart 94c576a634 Update eendoeserver and package-repo submodules 2026-10-20 21:35:15 +02:00
bart 63e8a68489 Update AGENTS.md with eendoeserver and package-repo instructions 2026-10-20 21:25:22 +02:00
bart 68116d1493 Remove redundant agents.md symlink 2026-10-20 21:24:14 +02:00
bart 98f04233c9 Add eendoeserver and package-repo as git submodules 2026-10-20 21:23:16 +02:00
bart ce3dc60773 chore(submodule): update k8s-infra-vmserver with deployed dnsmasq image 2026-10-20 20:36:57 +02:00
bart 10d6d7f98f chore(submodules): update cluster-infra with IPv6 SLAAC fix and k8s-infra-vmserver 2026-10-20 20:31:30 +02:00
bart 40640247db chore(submodule): update k8s-infra-vmserver 2026-10-19 22:57:22 +02:00
bart 05f28fd8f9 chore(submodule): update cluster-infra with dnsmasq IPv6 fix 2026-10-19 22:44:53 +02:00
bart 79cdef1e16 chore(submodule): update cluster-infra with WLAN comparison improvements 2026-10-19 22:09:45 +02:00
bart b346e8a420 chore(submodules): update cluster-infra and k8s-infra-vmserver 2026-10-19 21:54:27 +02:00
bart 78dab9f291 chore(submodule): update cluster-infra with pushed InfluxDB MAC query filters 2026-10-19 21:19:08 +02:00
bart 0c67e5c2d8 chore(submodule): update cluster-infra with selectable event limit up to 5000 2026-10-19 21:16:34 +02:00
bart 86ff350f7a chore(submodule): update cluster-infra with refined wlan diff commands 2026-10-19 21:02:54 +02:00
bart eddd3cf57e chore(submodules): update cluster-infra and k8s-infra-vmserver for wlan collector and settings comparison 2026-10-19 20:39:37 +02:00
bart b77103ef72 chore(submodule): update cluster-infra with full IPv4 DHCP parsing 2026-10-19 20:00:14 +02:00
bart 921b274811 chore(submodule): update cluster-infra with sorting and timeline fixes in network events 2026-10-19 19:50:34 +02:00
bart ee213290be docs(wlan): update cluster-infra submodule with OpenWrt NTP guide 2026-10-19 19:17:05 +02:00
bart 63d98b2359 feat(events): update cluster-infra submodule with DHCP network events support 2026-10-19 18:13:21 +02:00
bart b1edbb6cc1 chore(submodules): sync htpc and k8s-infra-vmserver submodule pointers 2026-10-19 17:50:31 +02:00
bart 892e475704 feat(time): update cluster-infra submodule with Europe/Amsterdam timezone formatting 2026-10-19 17:50:06 +02:00
bart a27efdc3c1 fix(openwrt): update cluster-infra submodule with syslog PRI parser fix 2026-10-19 17:35:27 +02:00
bart 3f0550722a Merge branch 'main' of https://git.bnhmeijer.nl/bart/cluster
# Conflicts:
#	cluster-infra
#	k8s-infra-vmserver
2026-10-19 17:23:45 +02:00
bart ab02f607be feat(network): update submodules with WLAN APs, roaming events, and OpenWrt syslog ingestion 2026-10-19 17:16:15 +02:00
bart 0afcaf2eb0 chore(submodules): update k8s-infra-vmserver reference for dnsmasq deploy 2026-10-18 22:02:43 +02:00
bart 53956d9d1d chore(submodules): update cluster-infra with dnsmasq no-resolv fix 2026-10-18 21:54:12 +02:00
bart 66d0df1a03 chore(submodules): update cluster-infra reference and docs for ntp 2026-10-18 21:25:20 +02:00
bart ec1ab9377a chore(submodules): update cluster-infra, k8s-infra-vmserver, and htpc for lidarr 2026-10-18 16:43:49 +02:00
bart 32700ce0a1 chore(submodules): update htpc reference with sonarr scripts 2026-10-18 16:03:23 +02:00
bart d561155b7e chore(submodules): update htpc and cluster-infra for Sonarr 2026-10-18 15:50:10 +02:00
bart 1364575930 chore(submodules): update htpc reference with cleanup script 2026-10-18 15:45:32 +02:00
bart 2a7f3d1707 chore(submodules): update htpc with /mnt/mp3 volume mount 2026-10-18 15:39:30 +02:00
bart 04b4d444d3 chore(submodules): update htpc reference with host filtering fix 2026-10-18 15:29:47 +02:00
bart aafcbf1c01 chore(submodules): update submodules with PostgreSQL configuration for Radarr 2026-10-18 15:06:18 +02:00
bart c4e81fab2d chore(submodules): update htpc reference 2026-10-18 14:57:17 +02:00
bart d0669e4069 chore(submodules): update htpc and k8s-infra-vmserver references with Radarr 2026-10-18 14:53:54 +02:00
bart 1b4a2d8bf4 feat(submodule): add htpc repository and gitops integration 2026-10-18 14:35:54 +02:00
16 changed files with 562 additions and 5 deletions
+18
View File
@@ -10,3 +10,21 @@
[submodule "smart-home"] [submodule "smart-home"]
path = smart-home path = smart-home
url = https://git.bnhmeijer.nl/bart/smart-home.git url = https://git.bnhmeijer.nl/bart/smart-home.git
[submodule "htpc"]
path = htpc
url = https://git.bnhmeijer.nl/bart/htpc.git
[submodule "eendoeserver"]
path = eendoeserver
url = https://git.bnhmeijer.nl/bart/eendoeserver.git
[submodule "package-repo"]
path = package-repo
url = https://git.bnhmeijer.nl/bart/package-repo.git
[submodule "jellyfin-client"]
path = jellyfin-client
url = https://git.bnhmeijer.nl/bart/jellyfin-client.git
[submodule "jellyfinradio"]
path = jellyfinradio
url = https://github.com/brupje/jellyfinradio.git
[submodule "chargeman"]
path = chargeman
url = https://git.bnhmeijer.nl/bart/chargeman.git
+237
View File
@@ -0,0 +1,237 @@
# AGENTS.md — Homelab Cluster Platform
Instructies, architectuurcontext, werkwijzen en richtlijnen voor AI-agents (en ontwikkelaars) die werken binnen deze repository workspace.
---
## 🎯 1. Overzicht & Doel van de Repository
Deze repository (`/home/bart/git/cluster`) is de centrale **Git meta-repository (superproject)** voor het homelab Kubernetes cluster, domotica en automatiseringsplatform van `bnhmeijer.nl`, gehost op de bare-metal server **`vmserver` (`10.2.0.4`)**.
Het platform omvat:
* **Infrastructuurdiensten**: Databases, messaging brokers, caching, lokale DNS/NTP en reverse proxy configuraties.
* **GitOps & CI/CD**: Volledig geautomatiseerde pipelines met Gitea Actions en ArgoCD.
* **HERMS Brouwplatform**: Geautomatiseerd Heat Exchange Recirculating Mash System (Rust microservices, Next.js frontend, ESP32 firmware, KiCad hardware).
* **Smart Home**: Home Assistant en IoT-koppelingen binnen Kubernetes.
* **HTPC & Media**: Jellyfin, `*Arr`-stack en downloadvoorzieningen.
* **Web & Reverse Proxy (`eendoeserver`)**: Apache VirtualHosts, reverse proxy configuraties en de website van `eendoe.nl` op `web03`.
* **Software Distributie (`package-repo`)**: Debian / APT package repository bronnen, build-scripts en CI/CD packaging pipelines.
---
## ⚠️ 2. Gouden Regels voor AI-Agents
Lees en volg deze regels nauwkeurig bij het uitvoeren van wijzigingen:
1. **Meta-repository & Submodules (NIET direct in root code committen)**:
* Deze workspace bestaat uit Git submodules.
* Wijzigingen aan broncode, configuraties of componenten horen thuis in de betreffende submodule map (`cluster-infra/`, `HERMS/`, `k8s-infra-vmserver/`, `smart-home/`, `htpc/`, `eendoeserver/`, `package-repo/`, `jellyfin-client/`, `jellyfinradio/`, `chargeman/`).
* Voer commits altijd uit binnen de submodule zelf (bijv. via `git -C <submodule> commit -m "..."`).
* Pas na het committen in de submodule werk je de submodule-pointer bij in deze root repository (`git add <submodule>` && `git commit`).
2. **GitOps Manifest Synchronisatie (Bron vs. Bestemming)**:
* **`k8s-infra-vmserver` is een pure GitOps target-repository:**
* Breng **nooit** direct handmatige wijzigingen of commits aan in `k8s-infra-vmserver/workloads/cluster-infra/` (of andere componenten die via CI/CD beheerd worden).
* Dit voorkomt configuratie-drift en mergeconflicten met de geautomatiseerde deployment bots (`Gitea Actions Bot`).
* **Single Source of Truth is de bronrepository:**
* Pas Kubernetes manifests **altijd aan in de respectievelijke bronrepository** (bijv. `cluster-infra/<dienst>/k8s/`, `HERMS/deployments/`, `htpc/k8s/`).
* Na een `git push` naar de bronrepository draait de Gitea Actions workflow (`.gitea/workflows/build-and-deploy.yaml`).
* Deze workflow synct gewijzigde manifests automatisch naar `k8s-infra-vmserver/workloads/...` met het commitbericht `ci(...): sync manifests (...)`.
* ArgoCD detecteert de commit in `k8s-infra-vmserver` en synct de workloads naar het live Kubernetes cluster.
3. **CI/CD Path Filtering (`dorny/paths-filter`)**:
* Zowel `cluster-infra` als `HERMS` gebruiken path filters in hun workflows (`.gitea/workflows/*.yaml`).
* Wijzigingen in uitsluitend markdown/documentatie of mappen die buiten het filter vallen, triggeren geen build of image deployment.
* Controleer bij nieuwe componenten altijd of het pad in de workflow staat geregistreerd.
4. **Productie-integriteit & Veiligheid**:
* Dit cluster draait live workloads (inclusief DNS, domotica en actieve databases).
* Voer **geen** destructieve commando's uit (`kubectl delete namespace`, geforceerde teardowns, data-volume deletes) zonder expliciete bevestiging van de gebruiker.
* Breng wijzigingen aan via GitOps (declaratief) in plaats van ad-hoc `kubectl edit` of `kubectl apply` op productieworkloads.
---
## 📦 3. Submodules & Componenten
| Map / Submodule | Remote Git URL | Stack & Technologieën | Doel & Kerncomponenten |
| :--- | :--- | :--- | :--- |
| **`cluster-infra`** | `https://git.bnhmeijer.nl/bart/cluster-infra.git` | Docker, K8s manifests, Bash | PostgreSQL, MongoDB, InfluxDB, RabbitMQ, Mosquitto MQTT, Dnsmasq, Chrony NTP, Apache vhosts, Infra Web Dashboard |
| **`k8s-infra-vmserver`** | `https://git.bnhmeijer.nl/bart/k8s-infra-vmserver.git` | Kustomize, ArgoCD, Gateway API | GitOps source-of-truth voor ArgoCD, Gateway API HTTPRoutes, Kustomize overlays & ApplicationSets |
| **`HERMS`** | `https://git.bnhmeijer.nl/bart/HERMS.git` | Rust, Next.js, C++ (ESP32), KiCad | Brouwautomatisering: `herms-controller` (Rust), `herms-storage` (Rust REST/NATS), `frontend` (Next.js/Tailwind), `firmware`, KiCad PCB |
| **`smart-home`** | `https://git.bnhmeijer.nl/bart/smart-home.git` | YAML, Python, Home Assistant | Domotica, Home Assistant configuraties, IoT migratie- en koppelscripts |
| **`htpc`** | `https://git.bnhmeijer.nl/bart/htpc.git` | Docker, K8s manifests | Jellyfin media server, `*Arr`-suite (Sonarr, Radarr, Lidarr, Prowlarr), download clients |
| **`eendoeserver`** | `https://git.bnhmeijer.nl/bart/eendoeserver.git` | Apache vhosts, HTML, SASS | Website `eendoe.nl` en Apache VirtualHost configuraties van web03 |
| **`package-repo`** | `https://git.bnhmeijer.nl/bart/package-repo.git` | Debian packaging, Gitea Actions | Bronnen, staging en build-pipelines voor debian packages |
| **`jellyfin-client`** | `https://git.bnhmeijer.nl/bart/jellyfin-client.git` | Python, Rust, MPV, Systemd | Jellyfin client player/kiosk applicatie, MPV controller en remote integraties |
| **`jellyfinradio`** | `https://github.com/brupje/jellyfinradio.git` | Python, FFMPEG, Icecast | Radio stream scheduling, Icecast audio/video streaming en integratie met Jellyfin |
| **`chargeman`** | `https://git.bnhmeijer.nl/bart/chargeman.git` | Python, D-Bus, MQTT, Tibber API | Thuisbatterij-controller voor Victron (Venus OS): laad-/ontlaadmodi, dynamische P1-nulsturing, goedkoop laden op Tibber-prijs, MQTT-publicatie |
---
## 🏛️ 4. Systeemarchitectuur & Netwerkverkeer
```mermaid
flowchart TD
WAN([Internet / Lokaal LAN]) --> Apache["Apache Reverse Proxy (vmserver: 10.2.0.4)"]
subgraph Host ["vmserver Bare-Metal (10.2.0.4)"]
Apache -->|SSL / OIDC| Keycloak["Keycloak (login.bnhmeijer.nl)"]
Apache --> Gitea["Gitea (git.bnhmeijer.nl)"]
Apache --> Media["Nextcloud / Jellyfin / *Arr"]
Apache -->|NodePort 32608| Envoy["Envoy Gateway API (k8s)"]
Dnsmasq["Dnsmasq (10.2.0.4:53)"]
Chrony["Chrony NTP (10.2.0.4:123)"]
end
subgraph K8s ["Kubernetes Cluster (Single-Node vmserver)"]
Envoy --> HTTPRoutes[Envoy Gateway HTTPRoutes]
HTTPRoutes --> InfraWeb["Infra Web (`infra.lan`, `infra.bnhmeijer.nl`)"]
HTTPRoutes --> InfluxUI["InfluxDB Explorer (`influx-ui.lan`)"]
HTTPRoutes --> HermsUI["HERMS Frontend (`herms.lan`, `herms.bnhmeijer.nl`)"]
HTTPRoutes --> ArgoServer["ArgoCD UI (`thuus.bnhmeijer.nl`)"]
HTTPRoutes --> GravMon["Gravitymon Ingress (`gravitymon.lan:8002`)"]
ArgoCD["ArgoCD Operator"] -->|Sync Manifests| Namespaces["Namespaces: cluster-infra, herms, smart-home, htpc"]
end
subgraph GitOps ["GitOps & CI/CD Pipeline"]
Gitea -->|Gitea Actions| Build["Container Build & Test"]
Build --> Reg["Gitea Container Registry"]
Reg --> PushManifests["Sync manifests naar k8s-infra-vmserver"]
PushManifests --> ArgoCD
end
```
### Belangrijke Netwerk- en Clusterparameters
* **Host IP**: `10.2.0.4` (`vmserver`, K3s/Kubernetes node)
* **Kubelet Probes**: Health probes (`readinessProbe` / `livenessProbe`) verbinden vanaf node-IP `10.2.0.4`
* **Edge Reverse Proxy**: Apache draait native op `vmserver` (`10.2.0.4`) vóór Envoy Gateway / hostdiensten
* **CNI & Pod CIDR**: Calico (`10.10.174.0/...`)
* **Service CIDR**: `10.96.0.0/12`
* **Cluster DNS**: CoreDNS op `10.96.0.10`
* **Opslagklasse**: `local-path` (`local-path-provisioner` in namespace `local-path-storage`)
---
## 💻 5. Tech Stacks & Conventies per Component
### 🍺 HERMS (`HERMS/`)
* **Frontend (`frontend/`)**:
* Next.js, React, Tailwind CSS.
* **Thema**: *SevenGrid Aurora Dark*:
* Achtergrond: `#0A0F12`
* Accent primair: Aurora Teal `#1DC7B7`
* Accent verwarming/warning: Coral `#E26F3A`
* UI-elementen: `rounded-full` pills voor statusindicatoren en toggles.
* Communicatie: REST via `herms-storage` (`/api/...`) en realtime WebSockets (`/api/ws`) gevoed door NATS messaging.
* **Backend Microservices (`herms-controller/`, `herms-storage/`, `gravitymon-2-nats/`)**:
* Geschreven in **Rust** (Cargo).
* Logging via `tracing` / `log`.
* Integratie met InfluxDB (Line Protocol) en NATS message bus.
* **MQTT Communicatie Regels**:
* Base topic: `<prefix>/<installation_id>/` (bijv. `avr59/installation1/` of `avr59/hermsdev/`).
* Ketel/Heater index: **altijd als string**, nooit numeriek (`hlt`, `mlt`, `boil`).
* Telemetrie publiceren met `retain: true` op `<base>heater/<idx>/temperature/state`.
* Commando-bevestiging: commando op `.../<endpoint>/cmd` moet direct bevestigd worden op `.../<endpoint>/state`.
### 🌐 cluster-infra (`cluster-infra/`)
* Bevat configuraties voor gedeelde middleware.
* Toevoegen van een nieuwe service:
1. Maak directory: `cluster-infra/<service-name>/k8s/`.
2. Voeg eventuele `Dockerfile` toe in `cluster-infra/<service-name>/`.
3. Voeg manifests toe (`deployment.yaml`, `service.yaml`, `kustomization.yaml`).
4. Zorg dat de Gitea Actions workflow het pad oppakt in het path-filter.
### 🚀 k8s-infra-vmserver (`k8s-infra-vmserver/`)
* Bevat ArgoCD ApplicationSets en Kustomize base/overlay structuren voor het cluster.
* Map `workloads/` bevat gesynchroniseerde manifests voor `cluster-infra`, `herms`, `demo` en `htpc`.
### 🏢 eendoeserver (`eendoeserver/`)
* Bevat de configuratie en bestanden voor de standalone server `web03` (`eendoe.nl`):
* **`eendoe/`**: Document root voor de website `eendoe.nl` en `bm4.nl` (HTML, SASS, CSS, JS, afbeeldingen).
* **`vhosts/`**: Apache 2.4 VirtualHost configuraties (geïncludeerd via `Include /sites/vhosts/*.conf`).
* **Regels**:
* Grote binaire installers (zoals `.AppImage` of losse `.deb` installatiebestanden) horen **niet** thuis in git, maar worden beheerd via `package-repo` of downloads.
### 📦 package-repo (`package-repo/`)
* Bevat de bronbestanden en distributiestructuur voor de Debian/APT package repository van Eendoe:
* **`sources/`**: Bevat bronbestanden per package (bijv. `eendoe_repository`, `eendoe_hyperdeck`, `eendoe_srs`) met hun control templates en `bin/build.sh`.
* **`staging/`**: Bestemming voor nieuw gebouwde en bestaande `.deb` pakketten.
* **`binaries/`**: Publiek geserveerde repository bestanden (`pool/`, `dists/`).
* **`buildpackages.sh`**: Universeel build-script om packages direct te genereren.
* **`.gitea/workflows/build-and-publish.yaml`**: CI/CD pipeline voor automatische package-builds en SSH/rsync deployments.
* **Belangrijke regel**:
* **Nooit** grote externe database installatiebestanden (zoals Oracle Database XE deb packages van >2 GB) toevoegen aan deze repository.
---
## 🛠️ 6. Handige Commando's voor Agents
### Submodule & Git Beheer
```bash
# Submodule status en eventuele uncommitted changes inspecteren
for d in cluster-infra HERMS k8s-infra-vmserver smart-home htpc eendoeserver package-repo jellyfin-client jellyfinradio chargeman; do
echo "=== $d ==="
git -C "$d" status -s
done
# Alle submodules bijwerken naar de nieuwste remote commits
git submodule update --remote --merge
# Submodules initialiseren na clone
git submodule update --init --recursive
```
### Debian Packages Bouwen (`package-repo`)
```bash
# Alle debian packages in sources/ compileren
./package-repo/buildpackages.sh all
# Een specifiek package compileren
./package-repo/buildpackages.sh eendoe_hyperdeck
```
### Kubernetes & Kustomize Inspectie
```bash
# Pods bekijken over alle relevante namespaces
kubectl get pods -n cluster-infra
kubectl get pods -n herms
kubectl get pods -n argocd
kubectl get pods -n htpc
# Kustomize build lokaal valideren vóór commit
kubectl kustomize k8s-infra-vmserver/workloads/herms/
kubectl kustomize cluster-infra/postgresql/k8s/
```
### HERMS Backend (Rust) & Frontend
```bash
# Rust syntax- & typecheck
cargo check --manifest-path HERMS/herms-controller/Cargo.toml
cargo check --manifest-path HERMS/herms-storage/Cargo.toml
# Frontend build & linting
npm --prefix HERMS/frontend run lint
npm --prefix HERMS/frontend run build
```
### Eendoe Website & Server (`eendoeserver`)
```bash
# Website deployen naar productie (web03 / eendoe.nl)
rsync -avz eendoeserver/eendoe/ bart@eendoe.nl:/sites/eendoe/
# Live status controleren
curl -sI https://eendoe.nl | head -n 5
```
---
## 📚 7. Documentatie Index
In de map `docs/` is gedetailleerde achtergrondinformatie beschikbaar:
* [`docs/agent-cheatsheet.md`](file:///home/bart/git/cluster/docs/agent-cheatsheet.md) — Snelle cheatsheet en valkuilen voor ontwikkelaars en agents.
* [`docs/platform.md`](file:///home/bart/git/cluster/docs/platform.md) — Volledige architectuur, domeinen, SSL-terminatie en GitOps-flow.
* [`docs/cluster-status.md`](file:///home/bart/git/cluster/docs/cluster-status.md) — Actuele clusterconfiguratie, node resources, PVC's en Ingress HTTPRoutes.
* [`docs/repositories.md`](file:///home/bart/git/cluster/docs/repositories.md) — Diepgaande details per repository en service.
* [`docs/apache-reverse-proxy.md`](file:///home/bart/git/cluster/docs/apache-reverse-proxy.md) — Apache VirtualHost configuraties, SSL-certificaten en OIDC/Keycloak koppeling.
+1 -1
Submodule HERMS updated: 8c78b80131...db3f64a0b8
+4
View File
@@ -35,6 +35,9 @@ Deze repository fungeert als **superproject** dat alle componenten van het platf
| **[`k8s-infra-vmserver`](file:///home/bart/git/cluster/k8s-infra-vmserver)** | `https://git.bnhmeijer.nl/bart/k8s-infra-vmserver.git` | GitOps configuratierepository | Kustomize manifests, Envoy Gateway HTTPRoutes, ArgoCD ApplicationSets | | **[`k8s-infra-vmserver`](file:///home/bart/git/cluster/k8s-infra-vmserver)** | `https://git.bnhmeijer.nl/bart/k8s-infra-vmserver.git` | GitOps configuratierepository | Kustomize manifests, Envoy Gateway HTTPRoutes, ArgoCD ApplicationSets |
| **[`HERMS`](file:///home/bart/git/cluster/HERMS)** | `https://git.bnhmeijer.nl/bart/HERMS.git` | Geautomatiseerd brouwplatform | Rust microservices, Next.js frontend, ESP32 firmware, KiCad hardware | | **[`HERMS`](file:///home/bart/git/cluster/HERMS)** | `https://git.bnhmeijer.nl/bart/HERMS.git` | Geautomatiseerd brouwplatform | Rust microservices, Next.js frontend, ESP32 firmware, KiCad hardware |
| **[`smart-home`](file:///home/bart/git/cluster/smart-home)** | `https://git.bnhmeijer.nl/bart/smart-home.git` | Huisautomatisering | Home Assistant, IoT netwerk- en migratiescripts | | **[`smart-home`](file:///home/bart/git/cluster/smart-home)** | `https://git.bnhmeijer.nl/bart/smart-home.git` | Huisautomatisering | Home Assistant, IoT netwerk- en migratiescripts |
| **[`htpc`](file:///home/bart/git/cluster/htpc)** | `https://git.bnhmeijer.nl/bart/htpc.git` | HTPC & Media Services | Jellyfin, *Arr stack, download clients, K8s manifests |
| **[`eendoeserver`](file:///home/bart/git/cluster/eendoeserver)** | `https://git.bnhmeijer.nl/bart/eendoeserver.git` | Eendoe server configuratie | Website bronbestanden (`eendoe/`) en Apache vhosts (`vhosts/`) |
| **[`package-repo`](file:///home/bart/git/cluster/package-repo)** | `https://git.bnhmeijer.nl/bart/package-repo.git` | Debian / APT package repository | Package bronnen (`sources/`), staging deb packages en CI workflow |
--- ---
@@ -116,4 +119,5 @@ Alle gedetailleerde platformdocumentatie bevindt zich in de map **[`docs/`](file
* 📊 **[Live Cluster Status](file:///home/bart/git/cluster/docs/cluster-status.md)**: Actuele hardware-specs, namespaces, pods, PVCs en routes op `10.2.0.4`. * 📊 **[Live Cluster Status](file:///home/bart/git/cluster/docs/cluster-status.md)**: Actuele hardware-specs, namespaces, pods, PVCs en routes op `10.2.0.4`.
* 🛡️ **[Apache Reverse Proxy & VHosts](file:///home/bart/git/cluster/docs/apache-reverse-proxy.md)**: VHosts configuraties, SSL terminatie en OIDC authenticatie. * 🛡️ **[Apache Reverse Proxy & VHosts](file:///home/bart/git/cluster/docs/apache-reverse-proxy.md)**: VHosts configuraties, SSL terminatie en OIDC authenticatie.
* 📦 **[Repository Details & Modules](file:///home/bart/git/cluster/docs/repositories.md)**: Mappenstructuur, protocollen (MQTT/NATS) en microservices. * 📦 **[Repository Details & Modules](file:///home/bart/git/cluster/docs/repositories.md)**: Mappenstructuur, protocollen (MQTT/NATS) en microservices.
* 🚜 **[Grasmaaier Automatisering (OpenMower / Mowgli)](file:///home/bart/git/cluster/docs/grasmaaier.md)**: Yardforce 500 robotmaaier met Mowgli, ROS Noetic, RTK GPS, Docker stack en MQTT-koppeling.
* 💡 **[Developer & Agent Cheatsheet](file:///home/bart/git/cluster/docs/agent-cheatsheet.md)**: Handige commando's, git conventies en valkuilen. * 💡 **[Developer & Agent Cheatsheet](file:///home/bart/git/cluster/docs/agent-cheatsheet.md)**: Handige commando's, git conventies en valkuilen.
Submodule
+1
Submodule chargeman added at 8fd6676d5c
+1
View File
@@ -26,4 +26,5 @@ De werkmap `/home/bart/git/cluster` is een centrale **Git meta-repository** (sup
* **[Live Cluster Status (10.2.0.4)](file:///home/bart/git/cluster/docs/cluster-status.md)**: Actuele status, node-specificaties, namespaces, pods, PVCs en HTTPRoutes van het actieve cluster. * **[Live Cluster Status (10.2.0.4)](file:///home/bart/git/cluster/docs/cluster-status.md)**: Actuele status, node-specificaties, namespaces, pods, PVCs en HTTPRoutes van het actieve cluster.
* **[Apache Reverse Proxy & VHosts](file:///home/bart/git/cluster/docs/apache-reverse-proxy.md)**: Details over Apache op `10.2.0.4`, `/sites/vhosts`, TLS/OIDC terminatie en koppeling naar Envoy Gateway (NodePort 32608). * **[Apache Reverse Proxy & VHosts](file:///home/bart/git/cluster/docs/apache-reverse-proxy.md)**: Details over Apache op `10.2.0.4`, `/sites/vhosts`, TLS/OIDC terminatie en koppeling naar Envoy Gateway (NodePort 32608).
* **[Repository Details & Modules](file:///home/bart/git/cluster/docs/repositories.md)**: Gedetailleerde beschrijving van alle componenten, mappen, protocollen (MQTT, NATS) en functies. * **[Repository Details & Modules](file:///home/bart/git/cluster/docs/repositories.md)**: Gedetailleerde beschrijving van alle componenten, mappen, protocollen (MQTT, NATS) en functies.
* **[Grasmaaier Automatisering (OpenMower / Mowgli)](file:///home/bart/git/cluster/docs/grasmaaier.md)**: Yardforce 500 robotmaaier met Mowgli, ROS Noetic, RTK GPS, Docker stack, MQTT bridge en netwerkconfiguratie.
* **[AI Cheatsheet & Developer Richtlijnen](file:///home/bart/git/cluster/docs/agent-cheatsheet.md)**: Snelle referentie voor commando's, submodule workflows, conventies en valkuilen. * **[AI Cheatsheet & Developer Richtlijnen](file:///home/bart/git/cluster/docs/agent-cheatsheet.md)**: Snelle referentie voor commando's, submodule workflows, conventies en valkuilen.
+216
View File
@@ -0,0 +1,216 @@
# Grasmaaier Automatisering (OpenMower / Mowgli)
Documentatie van de autonome robotmaaier (**`mowerv2`**) binnen het homelab netwerk en de integratie met het centrale Kubernetes cluster en Home Assistant.
---
## 🧭 Inhoudsopgave
- [Overzicht](#-overzicht)
- [Hardware & Componenten](#-hardware--componenten)
- [Netwerk & Verbinding](#-netwerk--verbinding)
- [Software Architectuur (Docker & ROS)](#-software-architectuur-docker--ros)
- [Cluster & Smart Home Integratie](#-cluster--smart-home-integratie)
- [Onderhoud & Troubleshooting](#-onderhoud--troubleshooting)
---
## 📌 Overzicht
| Eigenschap | Waarde |
| :--- | :--- |
| **Hostname** | `mowerv2` / `mowerv2.lan` |
| **IP-adres** | `10.2.1.10` (statisch IPv4 /16, gateway: `10.2.0.1`) |
| **Basis Robot** | Yardforce 500 |
| **Controller Mainboard** | Mowgli (OpenMower drop-in STM32 PCB) |
| **Boordcomputer** | Raspberry Pi 4 Model B Rev 1.5 (4GB RAM) |
| **Besturingssysteem** | Ubuntu 24.04 LTS (Noble Numbat) aarch64 (Kernel 6.8.0-raspi) |
| **MAC-adressen** | Wi-Fi (`wlan0`): `2C:CF:67:64:8E:9F`<br>Ethernet (`eth0`): `2C:CF:67:64:8E:9A` |
| **SSID** | `brupjelan` (vastgezet op 2.4 GHz) |
| **Web UI & App** | `http://10.2.1.10:3000` (OpenMower App) / Poort 4005 (Nginx) |
---
## 🛠️ Hardware & Componenten
```mermaid
flowchart TD
subgraph MowerChassis ["Yardforce 500 Chassis"]
Motors["Wiel- & Maaimotoren (BLDC + ESCs)"]
Sensors["Bumpers, Lift- & Noodstopsensoren"]
Mowgli["Mowgli Mainboard (STM32 MCU)"]
STLink["STM32 STLink Programmer (SWD)"]
GPS["RTK GPS Ontvanger (CH341 UART)"]
Pi["Raspberry Pi 4B (4GB)"]
end
Motors <--> Mowgli
Sensors --> Mowgli
STLink -.->|SWD Flashen| Mowgli
STLink <-->|USB /dev/bus/usb/001/00x| Pi
Mowgli <-->|USB CDC ACM /dev/mowgli| Pi
GPS <-->|USB Serial /dev/serial/by-id/usb-1a86_USB_Serial...| Pi
Pi <-->|Wi-Fi 2.4 GHz| LAN["Thuisnetwerk (10.2.0.0/16)"]
```
1. **Yardforce 500 Chassis**:
* Wielmotoren en maaimotoren aangedreven via borstelloze ESCs.
* Veiligheidssensoren (kantelsensor, optilsensor, bumper microswitches).
2. **Mowgli Mainboard**:
* Open-source PCB ontworpen voor het OpenMower project ter vervanging van het originele Yardforce moederbord.
* Bevat een STM32-microcontroller die real-time motorbesturing en sensor-uitlezing uitvoert.
* Communiceert met de Raspberry Pi via USB CDC ACM (`/dev/mowgli` -> `/dev/ttyACM0`).
3. **STM32 STLink Programmer**:
* Vaste onboard STLink-debugger aangesloten via USB.
* Maakt het mogelijk om de STM32 firmware direct vanaf de Pi te flashen met OpenOCD.
4. **RTK GPS Ontvanger**:
* Biedt centimeter-nauwkeurige RTK-positionering voor de maaier.
* Aangesloten via CH341 USB-naar-serieel adapter (`ttyUSB0` op baudrate 460800).
---
## 📶 Netwerk & Verbinding
### 1. Statische Netplan Configuratie
De netwerkconfiguratie bevindt zich in `/etc/netplan/50-cloud-init.yaml`:
```yaml
network:
version: 2
wifis:
wlan0:
optional: true
dhcp4: false
dhcp6: false
link-local: [ ipv4 ]
addresses:
- 10.2.1.10/16
routes:
- to: default
via: 10.2.0.1
nameservers:
addresses:
- 192.168.2.11
- 1.1.1.1
- 8.8.8.8
access-points:
"brupjelan":
password: "..."
band: "2.4GHz"
```
### 2. 2.4 GHz Band Pinnen
Om verbindingsdrops door band-steering (switchen tussen 2.4 GHz en 5 GHz) tijdens het rijden in de tuin te voorkomen, is `band: "2.4GHz"` ingesteld. Hierdoor genereert Netplan een strikte frequentielijst in `wpa_supplicant` (`freq_list` 2412 t/m 2484 MHz).
### 3. Wi-Fi Power Management Permanente Fix
Standaard schakelt de `brcmfmac` Wi-Fi-driver van de Raspberry Pi energiebeheer in, wat leidt tot gemiste frames en deauthentications. Dit is permanent uitgeschakeld via de systemd-service:
* **Unit**: `/etc/systemd/system/wifi-powersave-off.service`
* **Commando**: `/sbin/iwconfig wlan0 power off`
---
## 🐳 Software Architectuur (Docker & ROS)
De volledige OpenMower runtime draait in Docker Compose onder `/root/mowgli-docker/docker-compose.yaml` (repository `github.com/brupje/mowgli-docker`).
```mermaid
flowchart LR
subgraph DockerMower ["mowerv2 Docker Stack"]
RosCore["mowgli-roscore (ROS Noetic)"]
RosSerial["mowgli-rosserial (/dev/mowgli)"]
OpenMower["mowgli-openmower (open_mower.launch)"]
GUI["openmower-gui (v2)"]
App["app (Web UI :3000)"]
MQTT["mowgli-mqtt (Mosquitto :1883)"]
end
RosSerial <-->|Topic I/O| RosCore
OpenMower <-->|Navigation & Planner| RosCore
GUI <-->|Status & Map DB| RosCore
App <-->|REST / WS| GUI
OpenMower -->|Telemetry| MQTT
MQTT <-->|Bridge| K8sMosquitto["Centrale Mosquitto (K8s: 10.2.0.4)"]
```
### Belangrijkste Containers
| Container | Image | Poorten / Netwerk | Functie |
| :--- | :--- | :--- | :--- |
| **`mowgli-roscore`** | `ghcr.io/brupje/mowgli-docker:upstream` | `host` (:11311) | Centrale ROS Noetic Master broker |
| **`mowgli-rosserial`** | `ghcr.io/brupje/mowgli-docker:upstream` | `host` | `rosserial_server` gekoppeld aan `/dev/mowgli` (115200 baud) |
| **`mowgli-openmower`** | `ghcr.io/brupje/mowgli-docker:upstream` | `host` | Hoofdproces voor navigatie, padplanning en RTK GPS integratie |
| **`openmower-gui`** | `ghcr.io/brupje/openmower-gui:v2` | `host` | Backend service voor kaart- en taakbeheer |
| **`app`** | `ghcr.io/xtech/openmower-app:edge` | `3000:3000` | Moderne webinterface voor status en live kaart |
| **`mowgli-web`** | `nginx` | `4005:80` | Webserver voor statische data en web assets |
| **`mowgli-mqtt`** | `eclipse-mosquitto:latest` | `1883:1883`, `9001:9001` | Lokale MQTT broker voor status-uitwisseling |
| **`watchtower`** | `containrrr/watchtower` | Geïsoleerd | Automatische updates voor OpenMower GUI images |
---
## 🔗 Cluster & Smart Home Integratie
### 1. DNS (Dnsmasq)
In `cluster-infra/dnsmasq/dns-records` op `vmserver` is de maaier geregistreerd:
```text
10.2.1.10 mowerv2.lan mowerv2
fd00:2::1:10 mowerv2.lan mowerv2
```
### 2. MQTT Bridge (K8s Mosquitto -> Grasmaaier)
In de centrale Mosquitto broker in het Kubernetes cluster (`cluster-infra/mosquitto/k8s/configmap.yaml`) is een actieve bridge geconfigureerd:
```text
connection mower
address grasmaaier.lan:1883
cleansession true
local_cleansession true
notifications true
try_private true
topic # both 0 grasmaaier/ ""
```
Alle telemetrie en commando's van de maaier worden gesynchroniseerd onder het MQTT-prefix `grasmaaier/#` (de maaier publiceert root-topics zoals `robot_state/json`, welke lokaal gemapt worden naar `grasmaaier/robot_state/json`).
### 3. Home Assistant
Binnen de `smart-home` submodule koppelt Home Assistant via de centrale MQTT-broker aan de `grasmaaier/#` topics om de actuele status (batterij, maaimodus, foutmeldingen, laadstatus) in te zien en automatiseringen te triggeren.
---
## 🔧 Onderhoud & Troubleshooting
### 1. Inloggen via SSH
Vanaf het werkstation of de `vmserver`:
```bash
ssh bart@10.2.1.10
# of
ssh bart@mowerv2.lan
```
### 2. STM32 Firmware Flashen
Wanneer er een nieuwe firmware gebouwd is (`firmware.elf`), kan deze direct geflashed worden naar het Mowgli board via de onboard STLink:
```bash
cd /home/bart
./upload.sh
```
*Dit script stopt tijdelijk de communicatie, gebruikt OpenOCD om de STM32 te wissen en te herprogrammeren, en reset de USB-bus (`1-1`).*
### 3. Docker Containers Beheren
```bash
cd /root/mowgli-docker
# Status controleren
sudo docker compose ps
# Herstarten van de stack
sudo docker compose restart
# Live logs van de maaier en planner bekijken
sudo docker logs -f mowgli-openmower
sudo docker logs -f mowgli-rosserial
```
### 4. Wi-Fi & Verbinding Controleren
```bash
# Linkkwaliteit en frequentie controleren (moet 2.4xx GHz zijn en Power Management: off)
iwconfig wlan0
# Controleren of powersave-off service actief is
sudo systemctl status wifi-powersave-off.service
```
+6
View File
@@ -89,6 +89,12 @@ De werkmap `/home/bart/git/cluster` is gestructureerd als een **Git superproject
| **[`k8s-infra-vmserver`](file:///home/bart/git/cluster/k8s-infra-vmserver)** | GitOps repository gemonitord door ArgoCD | Kubernetes Kustomize manifests, HTTPRoutes, Service definities | | **[`k8s-infra-vmserver`](file:///home/bart/git/cluster/k8s-infra-vmserver)** | GitOps repository gemonitord door ArgoCD | Kubernetes Kustomize manifests, HTTPRoutes, Service definities |
| **[`HERMS`](file:///home/bart/git/cluster/HERMS)** | Geautomatiseerd brouwplatform (brouwautomatisering) | Rust microservices, Next.js / TypeScript GUI, ESP32 C++, KiCad PCB | | **[`HERMS`](file:///home/bart/git/cluster/HERMS)** | Geautomatiseerd brouwplatform (brouwautomatisering) | Rust microservices, Next.js / TypeScript GUI, ESP32 C++, KiCad PCB |
| **[`smart-home`](file:///home/bart/git/cluster/smart-home)** | Huisautomatisering & IoT | Home Assistant, netwerk- en migratiescripts | | **[`smart-home`](file:///home/bart/git/cluster/smart-home)** | Huisautomatisering & IoT | Home Assistant, netwerk- en migratiescripts |
| **[`htpc`](file:///home/bart/git/cluster/htpc)** | HTPC & Media Services Platform | Jellyfin, *Arr stack, K8s manifests, GitOps |
| **[`eendoeserver`](file:///home/bart/git/cluster/eendoeserver)** | Web & Reverse Proxy web03 | Apache vhosts, HTML, SASS |
| **[`package-repo`](file:///home/bart/git/cluster/package-repo)** | Debian Package Repository | Debian packaging, Gitea Actions |
| **[`jellyfin-client`](file:///home/bart/git/cluster/jellyfin-client)** | HTPC Client & YouTube Receiver | Python, Rust, MPV IPC, Kodi JSON-RPC |
| **[`jellyfinradio`](file:///home/bart/git/cluster/jellyfinradio)** | Jellyfin Radio & Live Streamer | Python, FFMPEG, Icecast |
| **[`chargeman`](file:///home/bart/git/cluster/chargeman)** | Victron thuisbatterij-controller | Python, D-Bus, MQTT, Tibber |
--- ---
+71 -2
View File
@@ -1,6 +1,6 @@
# Repository Details & Modules # Repository Details & Modules
Dit document bevat specifieke details over de vier repositories in deze workspace, inclusief mappenstructuur, protocollen en configuraties. Dit document bevat specifieke details over de repositories in deze workspace, inclusief mappenstructuur, protocollen en configuraties.
--- ---
@@ -54,8 +54,10 @@ Dit document bevat specifieke details over de vier repositories in deze workspac
* **`influxdb/`**: InfluxDB time-series database. * **`influxdb/`**: InfluxDB time-series database.
* **`rabbitmq/`**: AMQP message broker. * **`rabbitmq/`**: AMQP message broker.
* **`mosquitto/`**: Eclipse Mosquitto MQTT broker. * **`mosquitto/`**: Eclipse Mosquitto MQTT broker.
* **`dnsmasq/`**: Lokale DNS caching en forwarding. * **`dnsmasq/`**: Lokale DNS caching, DHCP en NTP-optie uitgifte.
* **`ntp/`**: Lokale Chrony NTP tijdserver (UDP 123) voor LAN en IoT apparaten.
* **`email-service/`**: Interne mailrelay / notificatiedienst. * **`email-service/`**: Interne mailrelay / notificatiedienst.
* **`label-service/`**: gLabels template rendering naar PDF, ZPL II en PNG via JSON API.
* **`infra-web/`**: Dashboard/webinterface voor infrastructuurbeheer. * **`infra-web/`**: Dashboard/webinterface voor infrastructuurbeheer.
* **`vhosts/`**: Apache/Nginx SSL en non-SSL reverse proxy configuraties voor bnhmeijer.nl domeinen. * **`vhosts/`**: Apache/Nginx SSL en non-SSL reverse proxy configuraties voor bnhmeijer.nl domeinen.
* **`argocd/`**: ApplicationSet configuratie voor automatische ontdekking van workloads. * **`argocd/`**: ApplicationSet configuratie voor automatische ontdekking van workloads.
@@ -88,3 +90,70 @@ Dit document bevat specifieke details over de vier repositories in deze workspac
* **Git Remote**: `https://git.bnhmeijer.nl/bart/smart-home.git` * **Git Remote**: `https://git.bnhmeijer.nl/bart/smart-home.git`
* **Doel**: Smart home configuraties (Home Assistant integraties, scripts, automatiseringen). * **Doel**: Smart home configuraties (Home Assistant integraties, scripts, automatiseringen).
* **Status**: In initiële opstartfase. * **Status**: In initiële opstartfase.
---
## 5. 🎬 htpc Repository
* **Pad**: `/home/bart/git/cluster/htpc`
* **Git Remote**: `https://git.bnhmeijer.nl/bart/htpc.git`
* **Doel**: HTPC & Media platform configuraties, deployments en automatisering.
### Beheerde Services & Stacks
* **Jellyfin**: Media streamer en afspeelinterface voor audio/video.
* **`*Arr` Suite**: Sonarr, Radarr, Lidarr, Bazarr voor geautomatiseerd content- en ondertitelbeheer.
* **Indexer & Downloaders**: Prowlarr/Jackett, SABnzbd, torrent clients.
### GitOps Workflow
* Manifests bevinden zich in `k8s/` en worden via Gitea Actions gesynchroniseerd naar `k8s-infra-vmserver` onder `workloads/htpc/`.
---
## 6. 🏢 eendoeserver Repository
* **Pad**: `/home/bart/git/cluster/eendoeserver`
* **Git Remote**: `https://git.bnhmeijer.nl/bart/eendoeserver.git`
* **Doel**: Website `eendoe.nl` en Apache VirtualHost configuraties van web03.
---
## 7. 📦 package-repo Repository
* **Pad**: `/home/bart/git/cluster/package-repo`
* **Git Remote**: `https://git.bnhmeijer.nl/bart/package-repo.git`
* **Doel**: Debian/APT package repository bronnen, build-scripts en distributie.
---
## 8. 📺 jellyfin-client Repository
* **Pad**: `/home/bart/git/cluster/jellyfin-client`
* **Git Remote**: `https://git.bnhmeijer.nl/bart/jellyfin-client.git`
* **Doel**: HTPC client applicatie & YouTube video receiver voor Linux mini-PC's.
* **Componenten**:
* Python WebSocket client sessie gekoppeld aan de centrale Jellyfin server.
* MPV video player controller met hardwareversnelling via IPC unix socket.
* Geëmuleerde Kodi JSON-RPC server (`:8080`, `:9090`) voor bediening via Yatse.
* Web remote / REST API (`:8097`) voor mobiel YouTube links delen (`yt-dlp`).
* `jellyfin-kiosk-rs`: Rust-gebaseerde kiosk launcher.
---
## 9. 📻 jellyfinradio Repository
* **Pad**: `/home/bart/git/cluster/jellyfinradio`
* **Git Remote**: `https://github.com/brupje/jellyfinradio.git`
* **Doel**: Radio stream scheduler, Icecast streamer en audio/video rendering gekoppeld aan Jellyfin.
* **Componenten**:
* Python webserver en scheduler voor radio streams.
* Icecast watcher & audio/video writers via FFmpeg.
* Jellyfin API client integratie voor playlists en media selectie.
## 10. 🔋 chargeman Repository
* **Pad**: `/home/bart/git/cluster/chargeman`
* **Git Remote**: `https://git.bnhmeijer.nl/bart/chargeman.git`
* **Stack**: Python (D-Bus, paho-mqtt, pyTibber), draait op een Victron Venus OS (`/data`).
* **Doel**: Stuurt de Victron-omvormer/accu aan via D-Bus (setpoint, feed-in/charge aan/uit) op basis van chargemode (floating, handmatig, max, goedkoop via Tibber, dynamisch P1-gestuurd), met status via MQTT (broker `10.2.0.15`).
Submodule
+1
Submodule eendoeserver added at ed8f87411b
Submodule
+1
Submodule htpc added at b5750423ed
+1
Submodule jellyfin-client added at a795c3d024
Submodule
+1
Submodule jellyfinradio added at b225941c53
Submodule
+1
Submodule package-repo added at ee9ceb4256