HOME LAB · SELFHOSTING · NETZWERK

Kategorie: Tutorials

Schritt-für-Schritt Anleitungen für Homelab und Selfhosting.

  • Nginx Proxy Manager mit Let’s Encrypt: saubere Reverse-Proxy-Basis

    Nginx Proxy Manager mit Let’s Encrypt: saubere Reverse-Proxy-Basis

    Schwierigkeit: Mittel · Dauer: 45–90 Min · Ziel: Nginx Proxy Manager mit Let's Encrypt: saubere Reverse-Proxy-Basis

    Kurzproblem und Zielbild

    In diesem Guide setzt du Nginx Proxy Manager mit Let’s Encrypt: saubere Reverse-Proxy-Basis mit reproduzierbaren Schritten, klaren Checks und belastbaren Recovery-Pfaden um.

    Voraussetzungen

    • Linux-/CLI-Grundlagen
    • Admin-Zugriff auf die Zielsysteme
    • Snapshot/Backup vor Änderungen

    Schnellstart (funktionierende Basis)

    hostnamectl
    ip a
    systemctl --failed
    journalctl -p 3 -xb --no-pager | tail -n 30

    Schritt-für-Schritt Umsetzung

    1) Ausgangszustand dokumentieren

    date -Iseconds
    uname -a
    # aktuelle Versionen und relevante Konfig-Pfade notieren

    2) Kernkonfiguration sauber setzen

    docker compose up -d
    docker logs --tail 100 nginx-proxy-manager
    curl -I http://localhost:81

    3) Dienst/Funktion gezielt prüfen

    curl -I https://deine-domain.tld
    docker exec -it nginx-proxy-manager ls -lah /etc/letsencrypt/live

    4) Betriebsgrenzen testen

    # Gezielten Failover-/Negativtest ausführen
    # Reaktionszeit und Fehlerbild protokollieren
    # Danach Service normalisieren und Zustand erneut verifizieren

    Validierung / Checks

    curl -I https://deine-domain.tld
    docker exec -it nginx-proxy-manager ls -lah /etc/letsencrypt/live
    # End-to-End Test mit klaren Sollwerten durchführen und Ergebnis dokumentieren

    Troubleshooting

    Konfiguration wird nicht übernommen

    Ursache: Syntax-/Reload-Fehler oder falscher Parameterpfad.

    journalctl -n 120 --no-pager
    # betroffenen Dienst gezielt reload/restarten
    # Konfigurationsdatei auf Syntax prüfen

    Dienst läuft, Funktion aber fehlerhaft

    Ursache: Abhängigkeiten, Routing, Rechte oder Versionen inkonsistent.

    ip a
    ip route
    ss -tulpn
    # Berechtigungen und Abhängigkeiten gegenprüfen

    Fazit

    Mit einem klaren Ablauf, harten Checks und dokumentierten Grenzwerten bleibt das Setup wartbar statt zufällig stabil. Nächster Schritt: den Ablauf als monatliche Betriebsroutine einplanen.

    Quellen

  • Docker Compose Healthchecks richtig nutzen: depends_on, retries, startup-order

    Docker Compose Healthchecks richtig nutzen: depends_on, retries, startup-order

    Schwierigkeit: Mittel · Dauer: 45–90 Min · Ziel: Docker Compose Healthchecks richtig nutzen: depends_on, retries, startup-order

    Kurzproblem und Zielbild

    In diesem Guide setzt du Docker Compose Healthchecks richtig nutzen: depends_on, retries, startup-order mit reproduzierbaren Schritten, klaren Checks und belastbaren Recovery-Pfaden um.

    Voraussetzungen

    • Linux-/CLI-Grundlagen
    • Admin-Zugriff auf die Zielsysteme
    • Snapshot/Backup vor Änderungen

    Schnellstart (funktionierende Basis)

    hostnamectl
    ip a
    systemctl --failed
    journalctl -p 3 -xb --no-pager | tail -n 30

    Schritt-für-Schritt Umsetzung

    1) Ausgangszustand dokumentieren

    date -Iseconds
    uname -a
    # aktuelle Versionen und relevante Konfig-Pfade notieren

    2) Kernkonfiguration sauber setzen

    cat docker-compose.yml
    docker compose config
    docker compose up -d
    docker inspect --format "{{json .State.Health}}" CONTAINER

    3) Dienst/Funktion gezielt prüfen

    docker compose ps
    docker inspect --format "{{.Name}} {{.State.Health.Status}}" $(docker ps -q)

    4) Betriebsgrenzen testen

    # Gezielten Failover-/Negativtest ausführen
    # Reaktionszeit und Fehlerbild protokollieren
    # Danach Service normalisieren und Zustand erneut verifizieren

    Validierung / Checks

    docker compose ps
    docker inspect --format "{{.Name}} {{.State.Health.Status}}" $(docker ps -q)
    # End-to-End Test mit klaren Sollwerten durchführen und Ergebnis dokumentieren

    Troubleshooting

    Konfiguration wird nicht übernommen

    Ursache: Syntax-/Reload-Fehler oder falscher Parameterpfad.

    journalctl -n 120 --no-pager
    # betroffenen Dienst gezielt reload/restarten
    # Konfigurationsdatei auf Syntax prüfen

    Dienst läuft, Funktion aber fehlerhaft

    Ursache: Abhängigkeiten, Routing, Rechte oder Versionen inkonsistent.

    ip a
    ip route
    ss -tulpn
    # Berechtigungen und Abhängigkeiten gegenprüfen

    Fazit

    Mit einem klaren Ablauf, harten Checks und dokumentierten Grenzwerten bleibt das Setup wartbar statt zufällig stabil. Nächster Schritt: den Ablauf als monatliche Betriebsroutine einplanen.

    Quellen

  • Immich Wartung im Alltag: Updates, Datenbank-Backup, Speicherhygiene

    Immich Wartung im Alltag: Updates, Datenbank-Backup, Speicherhygiene

    Schwierigkeit: Mittel · Dauer: 35–65 Min · Ziel: Immich Wartung im Alltag: Updates, Datenbank-Backup, Speicherhygiene

    Kurzproblem und Zielbild

    In vielen Homelabs funktioniert die Erstinstallation, aber der Dauerbetrieb wird schnell unübersichtlich. Dieses Tutorial zeigt einen reproduzierbaren Ablauf für Immich Wartung im Alltag mit Fokus auf Stabilität, klare Checks und einfache Fehlerbehebung.

    Ziel ist ein Setup, das nicht nur heute läuft, sondern auch nach Updates und Änderungen beherrschbar bleibt.

    Voraussetzungen

    • Aktuelles Debian/Ubuntu oder kompatible Appliance
    • Administrative Rechte und Wartungsfenster
    • Backup- oder Snapshot-Möglichkeit vor Änderungen

    Schnellstart (funktionierende Basis)

    # Basisprüfung
    hostnamectl
    ip a
    # Dienste prüfen
    systemctl --failed
    # Logs kurz prüfen
    journalctl -p 3 -xb --no-pager | tail -n 30

    Was macht das? Du prüfst erst den Grundzustand und vermeidest, dass Altfehler in neue Änderungen hineinwirken.

    Schritt-für-Schritt Umsetzung

    1) Ausgangszustand dokumentieren

    date -Iseconds
    uname -a
    # versions/relevante configs sichern

    Erklärung: Mit einer kurzen Bestandsaufnahme lassen sich spätere Fehler schneller eingrenzen.

    2) Kernkonfiguration sauber setzen

    cd /opt/immich
    docker compose pull
    docker compose ps
    docker exec -t immich_postgres pg_dump -U postgres immich > immich-$(date +%F).sql
    ls -lh immich-*.sql
    docker compose up -d

    Erklärung: Änderungen gezielt umsetzen, danach direkt den Dienst-/Funktionszustand prüfen.

    3) Dienst kontrolliert neu laden

    sudo systemctl daemon-reload
    sudo systemctl restart 
    sudo systemctl status  --no-pager

    4) Betriebsgrenzen testen

    docker compose ps
    docker compose logs --tail=120 server
    docker compose logs --tail=120 microservices
    curl -I http://127.0.0.1:2283

    Validierung / Checks

    docker compose ps
    docker exec -t immich_postgres psql -U postgres -d immich -c "select now();"
    docker volume ls | grep immich
    df -h

    Troubleshooting

    Konfiguration wird nicht übernommen

    Ursache: Syntax-, Reload- oder Parameterfehler.

    docker compose logs --tail=200 server
    docker compose logs --tail=200 microservices
    docker compose logs --tail=200 immich_postgres

    Dienst läuft, Funktion aber fehlerhaft

    Ursache: Abhängigkeiten, Routing oder Berechtigungen sind inkonsistent.

    createdb -U postgres immich_restore_test
    psql -U postgres immich_restore_test < immich-YYYY-MM-DD.sql
    psql -U postgres -d immich_restore_test -c "\dt"

    Fazit

    Mit einem klaren Ablauf für Immich Wartung im Alltag reduzierst du Ausfälle und erhöhst die Wartbarkeit deutlich. Der wichtigste Hebel ist die Kombination aus kleiner Änderung, sofortigem Check und dokumentiertem Ergebnis.

    Nächster Schritt: den Ablauf als monatliche Betriebsroutine einplanen und regelmäßig gegen echte Störfälle testen.

    Quellen

  • k3s Worker Node hinzufügen: Join, Labels, Drain und sichere Wartung

    k3s Worker Node hinzufügen: Join, Labels, Drain und sichere Wartung

    Schwierigkeit: Mittel · Dauer: 35–65 Min · Ziel: k3s Worker Node hinzufügen: Join, Labels, Drain und sichere Wartung

    Kurzproblem und Zielbild

    In vielen Homelabs funktioniert die Erstinstallation, aber der Dauerbetrieb wird schnell unübersichtlich. Dieses Tutorial zeigt einen reproduzierbaren Ablauf für k3s Worker Node hinzufügen mit Fokus auf Stabilität, klare Checks und einfache Fehlerbehebung.

    Ziel ist ein Setup, das nicht nur heute läuft, sondern auch nach Updates und Änderungen beherrschbar bleibt.

    Voraussetzungen

    • Aktuelles Debian/Ubuntu oder kompatible Appliance
    • Administrative Rechte und Wartungsfenster
    • Backup- oder Snapshot-Möglichkeit vor Änderungen

    Schnellstart (funktionierende Basis)

    # Basisprüfung
    hostnamectl
    ip a
    # Dienste prüfen
    systemctl --failed
    # Logs kurz prüfen
    journalctl -p 3 -xb --no-pager | tail -n 30

    Was macht das? Du prüfst erst den Grundzustand und vermeidest, dass Altfehler in neue Änderungen hineinwirken.

    Schritt-für-Schritt Umsetzung

    1) Ausgangszustand dokumentieren

    date -Iseconds
    uname -a
    # versions/relevante configs sichern

    Erklärung: Mit einer kurzen Bestandsaufnahme lassen sich spätere Fehler schneller eingrenzen.

    2) Kernkonfiguration sauber setzen

    sudo cat /var/lib/rancher/k3s/server/node-token
    curl -sfL https://get.k3s.io | K3S_URL=https://SERVER_IP:6443 K3S_TOKEN=TOKEN sh -
    kubectl get nodes -o wide
    kubectl label node WORKER1 workload=apps tier=edge

    Erklärung: Änderungen gezielt umsetzen, danach direkt den Dienst-/Funktionszustand prüfen.

    3) Dienst kontrolliert neu laden

    sudo systemctl daemon-reload
    sudo systemctl restart 
    sudo systemctl status  --no-pager

    4) Betriebsgrenzen testen

    kubectl cordon WORKER1
    kubectl drain WORKER1 --ignore-daemonsets --delete-emptydir-data
    kubectl get nodes
    kubectl uncordon WORKER1

    Validierung / Checks

    kubectl get nodes -o wide
    kubectl describe node WORKER1 | sed -n "1,180p"
    systemctl status k3s-agent --no-pager
    journalctl -u k3s-agent -n 150 --no-pager

    Troubleshooting

    Konfiguration wird nicht übernommen

    Ursache: Syntax-, Reload- oder Parameterfehler.

    nc -vz SERVER_IP 6443
    cat /etc/rancher/k3s/config.yaml
    journalctl -u k3s-agent -n 200 --no-pager

    Dienst läuft, Funktion aber fehlerhaft

    Ursache: Abhängigkeiten, Routing oder Berechtigungen sind inkonsistent.

    kubectl get pdb -A
    kubectl get pods -A -o wide | grep WORKER1
    kubectl describe pod POD -n NAMESPACE

    Fazit

    Mit einem klaren Ablauf für k3s Worker Node hinzufügen reduzierst du Ausfälle und erhöhst die Wartbarkeit deutlich. Der wichtigste Hebel ist die Kombination aus kleiner Änderung, sofortigem Check und dokumentiertem Ergebnis.

    Nächster Schritt: den Ablauf als monatliche Betriebsroutine einplanen und regelmäßig gegen echte Störfälle testen.

    Quellen

  • OPNsense WireGuard Remote-Zugriff: sauberes Routing ohne Regelchaos

    OPNsense WireGuard Remote-Zugriff: sauberes Routing ohne Regelchaos

    Schwierigkeit: Mittel · Dauer: 35–65 Min · Ziel: OPNsense WireGuard Remote-Zugriff: sauberes Routing ohne Regelchaos

    Kurzproblem und Zielbild

    In vielen Homelabs funktioniert die Erstinstallation, aber der Dauerbetrieb wird schnell unübersichtlich. Dieses Tutorial zeigt einen reproduzierbaren Ablauf für OPNsense WireGuard Remote-Zugriff mit Fokus auf Stabilität, klare Checks und einfache Fehlerbehebung.

    Ziel ist ein Setup, das nicht nur heute läuft, sondern auch nach Updates und Änderungen beherrschbar bleibt.

    Voraussetzungen

    • Aktuelles Debian/Ubuntu oder kompatible Appliance
    • Administrative Rechte und Wartungsfenster
    • Backup- oder Snapshot-Möglichkeit vor Änderungen

    Schnellstart (funktionierende Basis)

    # Basisprüfung
    hostnamectl
    ip a
    # Dienste prüfen
    systemctl --failed
    # Logs kurz prüfen
    journalctl -p 3 -xb --no-pager | tail -n 30

    Was macht das? Du prüfst erst den Grundzustand und vermeidest, dass Altfehler in neue Änderungen hineinwirken.

    Schritt-für-Schritt Umsetzung

    1) Ausgangszustand dokumentieren

    date -Iseconds
    uname -a
    # versions/relevante configs sichern

    Erklärung: Mit einer kurzen Bestandsaufnahme lassen sich spätere Fehler schneller eingrenzen.

    2) Kernkonfiguration sauber setzen

    # GUI: VPN -> WireGuard (Local + Endpoint)
    # Interfaces -> Assignments: wg0 zuweisen
    # Firewall -> Rules: nur benötigte Netze/Ports erlauben
    # NAT Outbound auf Konsistenz prüfen

    Erklärung: Änderungen gezielt umsetzen, danach direkt den Dienst-/Funktionszustand prüfen.

    3) Dienst kontrolliert neu laden

    sudo systemctl daemon-reload
    sudo systemctl restart 
    sudo systemctl status  --no-pager

    4) Betriebsgrenzen testen

    wg show
    netstat -rn
    pfctl -sr | head -n 120

    Validierung / Checks

    wg show
    ifconfig | grep -A4 wg
    pfctl -vvsr | sed -n "1,120p"
    clog /var/log/filter/filter.log | tail -n 80

    Troubleshooting

    Konfiguration wird nicht übernommen

    Ursache: Syntax-, Reload- oder Parameterfehler.

    wg show
    netstat -rn
    pfctl -sr | grep -i wireguard -n

    Dienst läuft, Funktion aber fehlerhaft

    Ursache: Abhängigkeiten, Routing oder Berechtigungen sind inkonsistent.

    wg show
    ping -M do -s 1380 REMOTE_IP

    Fazit

    Mit einem klaren Ablauf für OPNsense WireGuard Remote-Zugriff reduzierst du Ausfälle und erhöhst die Wartbarkeit deutlich. Der wichtigste Hebel ist die Kombination aus kleiner Änderung, sofortigem Check und dokumentiertem Ergebnis.

    Nächster Schritt: den Ablauf als monatliche Betriebsroutine einplanen und regelmäßig gegen echte Störfälle testen.

    Quellen

  • Home Assistant Backups verlässlich machen: Full/Partial, Restore-Drill

    Home Assistant Backups verlässlich machen: Full/Partial, Restore-Drill

    Schwierigkeit: Mittel · Dauer: 35–65 Min · Ziel: Home Assistant Backups verlässlich machen: Full/Partial, Restore-Drill

    Kurzproblem und Zielbild

    In vielen Homelabs funktioniert die Erstinstallation, aber der Dauerbetrieb wird schnell unübersichtlich. Dieses Tutorial zeigt einen reproduzierbaren Ablauf für Home Assistant Backups verlässlich machen mit Fokus auf Stabilität, klare Checks und einfache Fehlerbehebung.

    Ziel ist ein Setup, das nicht nur heute läuft, sondern auch nach Updates und Änderungen beherrschbar bleibt.

    Voraussetzungen

    • Aktuelles Debian/Ubuntu oder kompatible Appliance
    • Administrative Rechte und Wartungsfenster
    • Backup- oder Snapshot-Möglichkeit vor Änderungen

    Schnellstart (funktionierende Basis)

    # Basisprüfung
    hostnamectl
    ip a
    # Dienste prüfen
    systemctl --failed
    # Logs kurz prüfen
    journalctl -p 3 -xb --no-pager | tail -n 30

    Was macht das? Du prüfst erst den Grundzustand und vermeidest, dass Altfehler in neue Änderungen hineinwirken.

    Schritt-für-Schritt Umsetzung

    1) Ausgangszustand dokumentieren

    date -Iseconds
    uname -a
    # versions/relevante configs sichern

    Erklärung: Mit einer kurzen Bestandsaufnahme lassen sich spätere Fehler schneller eingrenzen.

    2) Kernkonfiguration sauber setzen

    ha backups list
    ha backups new --name "full-$(date +%F)" --all
    ha backups list | head -n 40

    Erklärung: Änderungen gezielt umsetzen, danach direkt den Dienst-/Funktionszustand prüfen.

    3) Dienst kontrolliert neu laden

    sudo systemctl daemon-reload
    sudo systemctl restart 
    sudo systemctl status  --no-pager

    4) Betriebsgrenzen testen

    ha backups list
    # Partial-Restore auf Test-Entität prüfen
    # danach Automationen/Entities gegenchecken

    Validierung / Checks

    ha core info
    ha backups list
    ha addons list
    ha supervisor logs --lines 150

    Troubleshooting

    Konfiguration wird nicht übernommen

    Ursache: Syntax-, Reload- oder Parameterfehler.

    ha core info
    ha supervisor info
    ha supervisor logs --lines 200

    Dienst läuft, Funktion aber fehlerhaft

    Ursache: Abhängigkeiten, Routing oder Berechtigungen sind inkonsistent.

    ha backups info BACKUP_SLUG
    ha backups new --name "full-verify-$(date +%F)" --all

    Fazit

    Mit einem klaren Ablauf für Home Assistant Backups verlässlich machen reduzierst du Ausfälle und erhöhst die Wartbarkeit deutlich. Der wichtigste Hebel ist die Kombination aus kleiner Änderung, sofortigem Check und dokumentiertem Ergebnis.

    Nächster Schritt: den Ablauf als monatliche Betriebsroutine einplanen und regelmäßig gegen echte Störfälle testen.

    Quellen

  • Uptime Kuma + Status Pages: Monitoring intern und extern trennen

    Uptime Kuma + Status Pages: Monitoring intern und extern trennen

    Schwierigkeit: Mittel · Dauer: 35–65 Min · Ziel: Uptime Kuma + Status Pages: Monitoring intern und extern trennen

    Kurzproblem und Zielbild

    In vielen Homelabs funktioniert die Erstinstallation, aber der Dauerbetrieb wird schnell unübersichtlich. Dieses Tutorial zeigt einen reproduzierbaren Ablauf für Uptime Kuma + Status Pages mit Fokus auf Stabilität, klare Checks und einfache Fehlerbehebung.

    Ziel ist ein Setup, das nicht nur heute läuft, sondern auch nach Updates und Änderungen beherrschbar bleibt.

    Voraussetzungen

    • Aktuelles Debian/Ubuntu oder kompatible Appliance
    • Administrative Rechte und Wartungsfenster
    • Backup- oder Snapshot-Möglichkeit vor Änderungen

    Schnellstart (funktionierende Basis)

    # Basisprüfung
    hostnamectl
    ip a
    # Dienste prüfen
    systemctl --failed
    # Logs kurz prüfen
    journalctl -p 3 -xb --no-pager | tail -n 30

    Was macht das? Du prüfst erst den Grundzustand und vermeidest, dass Altfehler in neue Änderungen hineinwirken.

    Schritt-für-Schritt Umsetzung

    1) Ausgangszustand dokumentieren

    date -Iseconds
    uname -a
    # versions/relevante configs sichern

    Erklärung: Mit einer kurzen Bestandsaufnahme lassen sich spätere Fehler schneller eingrenzen.

    2) Kernkonfiguration sauber setzen

    docker run -d --name uptime-kuma -p 3001:3001 -v uptime-kuma:/app/data --restart unless-stopped louislam/uptime-kuma:1
    # In der UI: Monitor-Gruppen internal/external trennen
    # Status Page nur mit externen Checks veröffentlichen

    Erklärung: Änderungen gezielt umsetzen, danach direkt den Dienst-/Funktionszustand prüfen.

    3) Dienst kontrolliert neu laden

    sudo systemctl daemon-reload
    sudo systemctl restart 
    sudo systemctl status  --no-pager

    4) Betriebsgrenzen testen

    docker ps --filter name=uptime-kuma
    docker logs --tail 100 uptime-kuma
    curl -I http://127.0.0.1:3001

    Validierung / Checks

    docker inspect uptime-kuma --format "{{json .HostConfig.RestartPolicy}}"
    # UI-Check: Nur externe Gruppe auf Status Page sichtbar

    Troubleshooting

    Konfiguration wird nicht übernommen

    Ursache: Syntax-, Reload- oder Parameterfehler.

    # Monitor-Visibility und Public Group in Uptime-Kuma prüfen
    # interne Monitore auf private setzen

    Dienst läuft, Funktion aber fehlerhaft

    Ursache: Abhängigkeiten, Routing oder Berechtigungen sind inkonsistent.

    dig your-service.example.com
    docker logs --tail 200 uptime-kuma

    Fazit

    Mit einem klaren Ablauf für Uptime Kuma + Status Pages reduzierst du Ausfälle und erhöhst die Wartbarkeit deutlich. Der wichtigste Hebel ist die Kombination aus kleiner Änderung, sofortigem Check und dokumentiertem Ergebnis.

    Nächster Schritt: den Ablauf als monatliche Betriebsroutine einplanen und regelmäßig gegen echte Störfälle testen.

    Quellen

  • Tailscale ACLs richtig nutzen: Rollen, Segmente, sichere Freigaben

    Tailscale ACLs richtig nutzen: Rollen, Segmente, sichere Freigaben

    Schwierigkeit: Mittel · Dauer: 35–65 Min · Ziel: Tailscale ACLs richtig nutzen: Rollen, Segmente, sichere Freigaben

    Kurzproblem und Zielbild

    In vielen Homelabs funktioniert die Erstinstallation, aber der Dauerbetrieb wird schnell unübersichtlich. Dieses Tutorial zeigt einen reproduzierbaren Ablauf für Tailscale ACLs richtig nutzen mit Fokus auf Stabilität, klare Checks und einfache Fehlerbehebung.

    Ziel ist ein Setup, das nicht nur heute läuft, sondern auch nach Updates und Änderungen beherrschbar bleibt.

    Voraussetzungen

    • Aktuelles Debian/Ubuntu oder kompatible Appliance
    • Administrative Rechte und Wartungsfenster
    • Backup- oder Snapshot-Möglichkeit vor Änderungen

    Schnellstart (funktionierende Basis)

    # Basisprüfung
    hostnamectl
    ip a
    # Dienste prüfen
    systemctl --failed
    # Logs kurz prüfen
    journalctl -p 3 -xb --no-pager | tail -n 30

    Was macht das? Du prüfst erst den Grundzustand und vermeidest, dass Altfehler in neue Änderungen hineinwirken.

    Schritt-für-Schritt Umsetzung

    1) Ausgangszustand dokumentieren

    date -Iseconds
    uname -a
    # versions/relevante configs sichern

    Erklärung: Mit einer kurzen Bestandsaufnahme lassen sich spätere Fehler schneller eingrenzen.

    2) Kernkonfiguration sauber setzen

    # ACL-Policy (Admin Console) rollenbasiert halten
    # group:admins -> tag:infra:*
    # tagOwners für tag:infra und tag:dev setzen
    # Änderungen speichern und deployen

    Erklärung: Änderungen gezielt umsetzen, danach direkt den Dienst-/Funktionszustand prüfen.

    3) Dienst kontrolliert neu laden

    sudo systemctl daemon-reload
    sudo systemctl restart 
    sudo systemctl status  --no-pager

    4) Betriebsgrenzen testen

    tailscale status
    tailscale ping TARGET_HOST
    tailscale netcheck

    Validierung / Checks

    tailscale version
    tailscale status --json | jq ".Self, .Peer[]?.HostName"
    tailscale ping TAGGED_NODE

    Troubleshooting

    Konfiguration wird nicht übernommen

    Ursache: Syntax-, Reload- oder Parameterfehler.

    tailscale status
    # In Admin Console Tags/ACL-Syntax prüfen und neu deployen

    Dienst läuft, Funktion aber fehlerhaft

    Ursache: Abhängigkeiten, Routing oder Berechtigungen sind inkonsistent.

    tailscale netcheck
    nslookup host.tailnet-name.ts.net
    traceroute TARGET_HOST

    Fazit

    Mit einem klaren Ablauf für Tailscale ACLs richtig nutzen reduzierst du Ausfälle und erhöhst die Wartbarkeit deutlich. Der wichtigste Hebel ist die Kombination aus kleiner Änderung, sofortigem Check und dokumentiertem Ergebnis.

    Nächster Schritt: den Ablauf als monatliche Betriebsroutine einplanen und regelmäßig gegen echte Störfälle testen.

    Quellen

  • TrueNAS SMB Shares sicher aufsetzen: Rechte, Snapshots, Restore

    TrueNAS SMB Shares sicher aufsetzen: Rechte, Snapshots, Restore

    Schwierigkeit: Mittel · Dauer: 35–65 Min · Ziel: TrueNAS SMB Shares sicher aufsetzen: Rechte, Snapshots, Restore

    Kurzproblem und Zielbild

    In vielen Homelabs funktioniert die Erstinstallation, aber der Dauerbetrieb wird schnell unübersichtlich. Dieses Tutorial zeigt einen reproduzierbaren Ablauf für TrueNAS SMB Shares sicher aufsetzen mit Fokus auf Stabilität, klare Checks und einfache Fehlerbehebung.

    Ziel ist ein Setup, das nicht nur heute läuft, sondern auch nach Updates und Änderungen beherrschbar bleibt.

    Voraussetzungen

    • Aktuelles Debian/Ubuntu oder kompatible Appliance
    • Administrative Rechte und Wartungsfenster
    • Backup- oder Snapshot-Möglichkeit vor Änderungen

    Schnellstart (funktionierende Basis)

    # Basisprüfung
    hostnamectl
    ip a
    # Dienste prüfen
    systemctl --failed
    # Logs kurz prüfen
    journalctl -p 3 -xb --no-pager | tail -n 30

    Was macht das? Du prüfst erst den Grundzustand und vermeidest, dass Altfehler in neue Änderungen hineinwirken.

    Schritt-für-Schritt Umsetzung

    1) Ausgangszustand dokumentieren

    date -Iseconds
    uname -a
    # versions/relevante configs sichern

    Erklärung: Mit einer kurzen Bestandsaufnahme lassen sich spätere Fehler schneller eingrenzen.

    2) Kernkonfiguration sauber setzen

    midclt call pool.dataset.query | head -n 20
    midclt call sharing.smb.query | head -n 40
    # ACL und SMB-Share im TrueNAS Web-UI setzen
    # Snapshot Task auf Dataset-Ebene aktivieren

    Erklärung: Änderungen gezielt umsetzen, danach direkt den Dienst-/Funktionszustand prüfen.

    3) Dienst kontrolliert neu laden

    sudo systemctl daemon-reload
    sudo systemctl restart 
    sudo systemctl status  --no-pager

    4) Betriebsgrenzen testen

    smbstatus
    testparm -s
    zfs list -t snapshot | tail -n 20
    zpool status -x

    Validierung / Checks

    systemctl status smbd --no-pager
    midclt call sharing.smb.query | sed -n "1,120p"
    getfacl /mnt/POOL/DATASET | head -n 40

    Troubleshooting

    Konfiguration wird nicht übernommen

    Ursache: Syntax-, Reload- oder Parameterfehler.

    getfacl /mnt/POOL/DATASET
    midclt call user.query | head -n 80
    midclt call group.query | head -n 80

    Dienst läuft, Funktion aber fehlerhaft

    Ursache: Abhängigkeiten, Routing oder Berechtigungen sind inkonsistent.

    zfs list -t snapshot -o name,creation | tail -n 30
    # Rollback nur im Wartungsfenster durchführen

    Fazit

    Mit einem klaren Ablauf für TrueNAS SMB Shares sicher aufsetzen reduzierst du Ausfälle und erhöhst die Wartbarkeit deutlich. Der wichtigste Hebel ist die Kombination aus kleiner Änderung, sofortigem Check und dokumentiertem Ergebnis.

    Nächster Schritt: den Ablauf als monatliche Betriebsroutine einplanen und regelmäßig gegen echte Störfälle testen.

    Quellen