Compare commits
89
Commits
a362b05637
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8d42ba4aa9 | ||
|
|
eddde47f6e | ||
|
|
e1a9b1df3f | ||
|
|
6fad45d632 | ||
|
|
2899a4ef89 | ||
|
|
1fffb2f13e | ||
|
|
292659bfe2 | ||
|
|
7ab467d3dc | ||
|
|
c0f7d9f04e | ||
|
|
9a74068e92 | ||
|
|
2189f460ac | ||
|
|
8063f2a49f | ||
|
|
30adef5687 | ||
|
|
1dec428949 | ||
|
|
58fae430a0 | ||
|
|
0b78895dfb | ||
|
|
5e1c2d590e | ||
|
|
8c7cd6647f | ||
|
|
2bd3cea773 | ||
|
|
22a2be6cc2 | ||
|
|
99cdcd1f63 | ||
|
|
4986f16d2a | ||
|
|
ff5a18ea6b | ||
|
|
3f848d389b | ||
|
|
e7f666c995 | ||
|
|
4aa412b653 | ||
|
|
664e18c952 | ||
|
|
bca67df61f | ||
|
|
00a31363a6 | ||
|
|
12b6b2c312 | ||
|
|
a6e30caf65 | ||
|
|
f9215475da | ||
|
|
76aaeb5161 | ||
|
|
176e8f61ce | ||
|
|
9d84493c6f | ||
|
|
c299d54aff | ||
|
|
41fb511877 | ||
|
|
7f2d2b64c3 | ||
|
|
f2c463f2ab | ||
|
|
42d5f9675b | ||
|
|
fed5ceb987 | ||
|
|
c5ef437346 | ||
|
|
cd8d2ac337 | ||
|
|
55b0077109 | ||
|
|
4d08a9c4bb | ||
|
|
95fd38de45 | ||
|
|
e65b592d9c | ||
|
|
b0a06a721f | ||
|
|
953d9b0c7a | ||
|
|
47186f08fc | ||
|
|
3d83b38db4 | ||
|
|
e3c035450d | ||
|
|
6f3a65b83e | ||
|
|
94c576a634 | ||
|
|
63e8a68489 | ||
|
|
68116d1493 | ||
|
|
98f04233c9 | ||
|
|
ce3dc60773 | ||
|
|
10d6d7f98f | ||
|
|
40640247db | ||
|
|
05f28fd8f9 | ||
|
|
79cdef1e16 | ||
|
|
b346e8a420 | ||
|
|
78dab9f291 | ||
|
|
0c67e5c2d8 | ||
|
|
86ff350f7a | ||
|
|
eddd3cf57e | ||
|
|
b77103ef72 | ||
|
|
921b274811 | ||
|
|
ee213290be | ||
|
|
63d98b2359 | ||
|
|
b1edbb6cc1 | ||
|
|
892e475704 | ||
|
|
a27efdc3c1 | ||
|
|
3f0550722a | ||
|
|
ab02f607be | ||
|
|
0afcaf2eb0 | ||
|
|
53956d9d1d | ||
|
|
66d0df1a03 | ||
|
|
ec1ab9377a | ||
|
|
32700ce0a1 | ||
|
|
d561155b7e | ||
|
|
1364575930 | ||
|
|
2a7f3d1707 | ||
|
|
04b4d444d3 | ||
|
|
aafcbf1c01 | ||
|
|
c4e81fab2d | ||
|
|
d0669e4069 | ||
|
|
1b4a2d8bf4 |
+18
@@ -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
|
||||||
|
|||||||
@@ -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
@@ -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
-1
Submodule cluster-infra updated: 3bbc88f082...ef669522fc
@@ -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.
|
||||||
|
|||||||
@@ -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
|
||||||
|
```
|
||||||
@@ -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
@@ -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
Submodule
+1
Submodule jellyfin-client added at a795c3d024
Submodule
+1
Submodule jellyfinradio added at b225941c53
+1
-1
Submodule k8s-infra-vmserver updated: cdbaf9e6b7...35cb9419b9
Submodule
+1
Submodule package-repo added at ee9ceb4256
Reference in New Issue
Block a user