Das Übungslabor starten
Beispiel herunterladen, ein lokales Geheimnis anlegen, drei Dienste starten und das Ergebnis prüfen.
Schließe zuerst die Docker-Installation ab. Führe diese Befehle auf dem Übungsserver mit demselben Benutzer aus. Bewahre das Projektverzeichnis auf: Die relativen Bind-Mounts beziehen sich darauf.
Herunterladen und prüfen
Das Archiv enthält Compose-Datei, HTML-Seite, Routing- und Metrikkonfiguration, README, aber keine Zugangsdaten. Die Prüfsumme erkennt beschädigte oder nicht zusammengehörige Downloads; sie ist keine unabhängige Signatur. Bei einem Fehler nicht fortfahren. Lies vor dem Start compose.yaml und README.md.
Das Paket enthält außerdem zwei Dockerfiles. docker compose build web backup baut das korrigierte Web-Image und das Offline-Backup-Werkzeug vor dem Start. Der erste Build lädt Quellcode und Abhängigkeiten herunter und kann mehrere Minuten dauern. Es handelt sich um Übungs-Images; Umfang und Lizenz stehen in der mitgelieferten README.
mkdir -p ~/homelab-practice
cd ~/homelab-practice
curl -fSLO https://qazizada.de/downloads/homelab-starter.tar.gz
curl -fSLO https://qazizada.de/downloads/homelab-starter.tar.gz.sha256
sha256sum -c homelab-starter.tar.gz.sha256
tar -tzf homelab-starter.tar.gz
tar -xzf homelab-starter.tar.gz
mkdir -p secrets restore
chmod 700 secrets
# Run only when the password file does not exist.
(umask 077; set -C; openssl rand -hex 32 > secrets/restic-password)
sudo docker compose config --quiet
sudo docker compose build web backup
sudo docker compose up -d web gateway metrics
sudo docker compose ps
Der Passwortbefehl überschreibt keine vorhandene Datei. Bewahre das Passwort zusätzlich getrennt auf, bevor du dich auf ein Backup verlässt. Die stille Compose-Prüfung gibt keine eingesetzten Geheimnisse aus. up -d lädt Images und startet die Dienste im Hintergrund. Der Backup-Auftrag startet dabei nicht.
Ergebnis prüfen
Führe diese Befehle auf dem Server aus. Warte etwa 30 Sekunden auf die erste Metrikerfassung.
curl --fail --resolve lab.test:18080:127.0.0.1 http://lab.test:18080/
curl --fail 'http://127.0.0.1:19090/api/v1/query?query=up'
Die erste Antwort enthält Homelab practice. Die zweite enthält zwei up-Ergebnisse mit dem Wert 1. Das bedeutet, dass Prometheus die Ziele abfragen konnte, nicht dass jede Anwendungsfunktion geprüft wurde.
Für den Zugriff vom Laptop öffnest du dort ein separates Terminal. Ersetze Benutzer und Server:
ssh -N -L 18080:127.0.0.1:18080 -L 19090:127.0.0.1:19090 learner@YOUR_SERVER
Lass das Terminal geöffnet. Prometheus erreichst du unter http://127.0.0.1:19090. Trage für die Webseite 127.0.0.1 lab.test nach der Anleitung deines Betriebssystems in die lokale hosts-Datei ein und öffne http://lab.test:18080. Alternativ funktioniert der curl-Befehl oben auf dem Laptop ohne diesen Eintrag. Der Gateway prüft den angefragten Hostnamen; die IP allein liefert 404.
Anhalten und fortsetzen
Im Projektverzeichnis hält sudo docker compose stop die Container an; sudo docker compose start startet sie wieder. sudo docker compose down entfernt Container und Projektnetzwerke, behält aber benannte Volumes. up -d web gateway metrics erstellt sie erneut. Mit --volumes werden Metrik- und Backup-Volumes gelöscht. Nutze das nicht als pauschale Fehlerbehebung.
Zeigt Compose einen belegten Port, ermittle mit sudo ss -ltnp dessen Besitzer. Wähle einen anderen Loopback-Port und passe curl sowie SSH-Weiterleitung entsprechend an. Stoppe keinen fremden Dienst. Bei fehlender Bind-Quelldatei prüfst du Verzeichnis und Archiv, statt eine leere Konfiguration anzulegen.
Weiter: Einstellungen verstehen.