Lesson 0009 · groupdir-infra

Service hinzufügen

End-to-End: neuer Lab-Dienst von der freien IP bis zum Deploy von lab-gateway.

Einleitung

Die Einzelteile kennst du: DNS-Optionen (0002), Terraform für öffentliches DNS (0004), Module (0006), Deploy (0007). Heute verbindest du sie zum Alltagsweg „neuen Lab-Service anbinden“, wie in operations.md und lab-ipam.md.

Selbststudium: Schritte am Repo nachvollziehen und die richtige Entscheidung (direct vs. reverse-proxy) treffen. Live-Deploy bleibt optional.

Der Standardweg (Lab-HTTP hinter Caddy)

  1. Freie Lab-IP wählen:
    just lab-ipam
  2. Host-Datei anlegen, typisch:
    # net/lab/hosts/mein-dienst.nix
    {
      name = "mein-dienst";
      ipv4 = "192.168.200.40";
      dns = {
        name = "mein-dienst.lab";
        target = "reverse-proxy";
        upstream = "http://192.168.200.40:8080";
      };
    }
    Kein zweiter Eintrag in net/dns/groupdir.de.nix nötig — die Zone merged net/lab/dns-records.nix.
  3. Lokal prüfen, dass die Config noch baut:
    nix build .#nixosConfigurations.lab-gateway.config.system.build.toplevel
  4. Gateway deployen (DNS intern + Caddy-Route):
    colmena apply --on lab-gateway

Der Name ist dann z. B. mein-dienst.lab.groupdir.de im internen DNS; HTTPS läuft über den zentralen Proxy am lab-gateway.

Wann anders?

  • Kein HTTP hinter Caddy (LDAP, DB, …): dns = { name = "…"; } (Default target = "direct"). Siehe DNS-Records.
  • Nur IP reservieren (noch kein DNS): dns = false.
  • Öffentlich bei Hetzner: Eintrag in net/dns/groupdir.de.nix mit scope = "public" oder "both", dann Generate + Terraform unter tofu/dns (Lesson 0004). Rein interne Lab-Dienste brauchen das nicht.
  • Host selbst konfigurieren (Paket, Dienst, User): Modul/Host unter nixos/ (0006), danach Colmena auf den betroffenen Host.
  • Kein zentraler Proxy: wenn End-to-End-TLS auf dem Backend nötig ist (operations.md: „When not to use the central proxy“).

Checkliste vor dem Merge

Lesen am Repo

  1. operations.md „Add a lab service“ und lab-ipam.md
  2. Beispiele: net/lab/hosts/grafana.nix (Proxy) und net/lab/hosts/dc1.nix (direct, mehrere Namen)
  3. Optional: Build-Befehl oben trocken üben

Üben

Retrieval

Neuer interner HTTP-Dienst hinter Caddy. Reihenfolge?

Welche Datei für einen neuen Lab-Namen hinter dem Proxy?

Nach einem rein internen Lab-Eintrag: was als Nächstes?

Primärquelle

docs/operations.md, docs/lab-ipam.md, docs/dns-records.md.

Kompakt: Referenz: Service hinzufügen.