main
Co-authored-by: Copilot <copilot@github.com>
HomeLabScripts
HomeLabScripts ist ein Infrastruktur-Repository fuer mein HomeLab auf Basis von K3s. Es enthaelt Installationsskripte, Kubernetes-Manifeste und Helm-Values fuer mehrere Self-Hosting-Services.
Ziele
- Reproduzierbarer Aufbau eines K3s-Clusters
- Betrieb zentraler Self-Hosting-Dienste im Heimnetz
- Trennung von Storage-Workloads zwischen NFS (gross) und Longhorn (lokal/schnell)
- Nachvollziehbare Betriebsablaeufe ueber Skripte und YAML-Manifeste
Tech-Stack
- K3s (Kubernetes)
- Helm
- NFS
- Longhorn
- MariaDB / PostgreSQL / Redis
- Authentik
Repository-Struktur
HomeLabScripts/
├── k3s/
│ ├── install.sh
│ ├── get_helm.sh
│ ├── installHelm.sh
│ ├── k8sUser/
│ │ └── addUser.sh
│ └── apps/
│ ├── authentik/
│ ├── dashboard/
│ ├── gitea/
│ ├── gitLab/
│ ├── homarr/
│ ├── longhorn/
│ ├── Nextcloud/
│ ├── nfs-pv/
│ ├── photo/
│ └── speedtest-tracker/
├── nfs/
│ ├── server.sh
│ ├── client.sh
│ ├── nfsClient2.sh
│ ├── nfsClient2SlowData.sh
│ └── nfsSlowData.sh
├── mountscript/
│ └── mount-plus.sh
└── WISSENSBASIS.md
Enthaltene Services (Auswahl)
- Authentik
- Kubernetes Dashboard
- Gitea
- GitLab
- Nextcloud
- Immich
- PhotoPrism
- iCloudPD
- Homarr
- Speedtest Tracker
- Longhorn
Storage-Strategie
- Longhorn fuer Datenbanken und kleinere persistente Volumes
- NFS fuer grosse RWX-Workloads wie Medien, Repositories und Cloud-Daten
Empfehlung:
- Performance-kritische DB-Workloads nicht auf langsames NFS legen
- RWX-Daten (z. B. Medien) bevorzugt auf NFS
Schnellstart (neu aufsetzen)
- System vorbereiten (Kernel, Netzwerk, Zeitsync, DNS)
- K3s installieren:
bash k3s/install.sh
- Helm installieren:
bash k3s/installHelm.sh
- Optionalen K8s-User/Kubeconfig erstellen:
bash k3s/k8sUser/addUser.sh
- Storage bereitstellen:
- NFS via Skripte unter
nfs/ - Longhorn-StorageClass unter
k3s/apps/longhorn/
- NFS via Skripte unter
- Apps schrittweise deployen (pro App-Ordner)
Deployment-Hinweise
- Erst Namespace und Secrets anwenden, dann Deployments/Stateful Workloads
- Bei Helm-basierten Setups zuerst
values.yamlpruefen - Migrationen (z. B. auf Longhorn) nur mit Backup durchfuehren
- NodeSelector, fsGroup und Permissions pro App pruefen
Wichtige Skripte
k3s/install.sh: K3s-Installationk3s/installHelm.sh: Helm-Installationk3s/k8sUser/addUser.sh: ServiceAccount + RBAC + Kubeconfigk3s/apps/dashboard/getToken.sh: Dashboard-Token abrufenk3s/apps/Nextcloud/helm/cleanRestart.sh: Nextcloud sauber neu startennfs/server.sh: NFS-Server einrichtennfs/client.sh: NFS-Client einrichtenmountscript/mount-plus.sh: Datentraeger partitionieren/mounten
Konventionen
- Manifeste:
*-deployment.yaml,*-service.yaml,*-secret.yaml,namespace.yaml - Secrets nie im Klartext committen
- Keine produktiven Zugangsdaten in Doku oder Repo-Historie speichern
- Aenderungen pro App in kleinen, nachvollziehbaren Commits
Sicherheit
- Bereits veroeffentlichte Tokens/Passwoerter sofort rotieren
- Secrets ueber Kubernetes Secrets oder externe Secret-Manager verwalten
- Admin-UIs nur intern oder hinter Authentik/Ingress absichern
- Regelmaessige Backups fuer DB und Volumes einplanen
Betrieb und Troubleshooting
Nuetzliche Kommandos:
kubectl get pods -A
kubectl get pvc -A
kubectl describe pod <pod-name> -n <namespace>
kubectl logs <pod-name> -n <namespace>
Falls ein Dienst nicht startet:
- Namespace und Secret vorhanden?
- PVC gebunden?
- DB erreichbar?
- Berechtigungen (uid/gid, fsGroup, NFS export options) korrekt?
Roadmap (optional)
- Einheitliche Ingress-Strategie fuer alle Services
- Zentralisiertes Secret-Management (z. B. SOPS/Sealed Secrets/Vault)
- Monitoring/Alerting (Prometheus + Grafana + Alertmanager)
- CI-Pruefungen fuer Manifeste (lint/validate)
Hinweis
Details zu bestehenden Setups und internen Notizen stehen in WISSENSBASIS.md.
Diese README dient als zentraler Einstiegspunkt fuer Aufbau und Betrieb.
Description
Languages
Shell
100%