updated docs for an other activation step

This commit is contained in:
steffen 2026-03-14 12:14:54 +01:00
parent 6037b55091
commit da37a2dce3

View file

@ -16,8 +16,10 @@ Bei der Erstinstallation gibt es ein Henne-Ei-Problem:
```
1. Services deaktivieren (die Secrets brauchen)
2. NixOS installieren
3. SSH-Host-Key extrahieren, SOPS konfigurieren, Secrets erstellen
4. Services reaktivieren und deployen
3. SSH-Host-Key extrahieren, SOPS konfigurieren, sofort erstellbare Secrets anlegen
4. Stufe-1-Services aktivieren und deployen (Headscale, Forgejo, Mail, Nginx)
5. Restliche Secrets generieren (Tailscale, Headplane, Forgejo-Runner)
6. Stufe-2-Services aktivieren und final deployen
```
## Schritt 1: Host-Konfiguration vorbereiten
@ -198,7 +200,7 @@ Diese Secrets haben keine Abhaengigkeiten und koennen direkt generiert werden:
#### Secrets die laufende Services brauchen
Diese Secrets koennen erst erstellt werden, nachdem die entsprechenden Services laufen. Bis dahin **Platzhalter** eintragen (z.B. `placeholder`):
Diese Secrets koennen erst nach Schritt 4 erstellt werden. **Jetzt noch nicht eintragen** -- sie werden spaeter ergaenzt.
| Secret | Befehl | Voraussetzung |
|--------|--------|---------------|
@ -209,13 +211,8 @@ Diese Secrets koennen erst erstellt werden, nachdem die entsprechenden Services
#### Beispiel secrets.yaml (Klartext vor Verschluesselung)
```yaml
tailscale:
auth-key: "placeholder"
forgejo-runner:
token: "placeholder"
headplane:
cookie_secret: "a1b2c3d4e5f6..."
agent_pre_authkey: "placeholder"
mailserver:
accounts:
admin: "$2b$05$..."
@ -224,29 +221,53 @@ forgejo:
mail-pw: "das-klartext-passwort"
```
### 3.4 Services reaktivieren
### 3.4 Services stufenweise reaktivieren -- Stufe 1
Auf dem **Entwicklungsrechner** die in Schritt 1.4 auskommentierten Imports in `hosts/<hostname>/services/default.nix` wieder aktivieren:
> **Wichtig:** Services die Headscale- oder Forgejo-Secrets brauchen (Tailscale,
> Headplane, Forgejo-Runner) duerfen noch **nicht** aktiviert werden, da diese
> Secrets erst generiert werden koennen, wenn die Services laufen.
Auf dem **Entwicklungsrechner** in `hosts/<hostname>/services/default.nix` die
Services **ohne externe Abhaengigkeiten** aktivieren:
```nix
{
imports = [
# Stufe 1: Services ohne externe Abhaengigkeiten
./forgejo.nix
./headplane.nix
./headscale.nix
./mailserver.nix
./netdata.nix
./nginx.nix
./openssh.nix
./sops.nix
./tailscale.nix
# Stufe 2: Erst nach Schritt 4 aktivieren
# ./headplane.nix # braucht: headplane/agent_pre_authkey (Headscale)
# ./tailscale.nix # braucht: tailscale/auth-key (Headscale)
];
}
```
Ebenso in `hosts/<hostname>/services/sops.nix` die Secrets-Definitionen wieder einkommentieren.
Ebenso in `hosts/<hostname>/services/sops.nix` die Secrets-Definitionen wieder
einkommentieren, **aber nur die fuer Stufe-1-Services**:
### 3.5 Deployen
```nix
sops = {
defaultSopsFile = ../secrets.yaml;
secrets = {
# "forgejo-runner/token" = { }; # Stufe 2
"tailscale/auth-key" = { };
};
};
```
> **Hinweis:** `tailscale/auth-key` muss in `sops.nix` definiert bleiben, da das
> Tailscale-Modul es referenziert. Es wird aber erst in Schritt 4 mit einem
> echten Wert befuellt. Solange Tailscale nicht importiert ist, hat das keinen
> Effekt.
### 3.5 Deployen (Stufe 1)
```bash
nix run .#deploy -- -n <hostname>
@ -259,9 +280,11 @@ NIX_SSHOPTS="-p 2299" nixos-rebuild switch --flake .#<hostname> \
--target-host <user>@<IP> --sudo --ask-sudo-password
```
## Schritt 4: Platzhalter-Secrets ersetzen
Nach diesem Deploy laufen Headscale, Forgejo, Mailserver und Nginx.
Nachdem der Server mit Headscale und Forgejo laeuft, die Platzhalter durch echte Werte ersetzen:
## Schritt 4: Restliche Secrets generieren und alle Services aktivieren
Nachdem der Server mit Headscale und Forgejo laeuft:
1. **Headscale-User anlegen** (auf dem Server):
@ -283,14 +306,44 @@ Nachdem der Server mit Headscale und Forgejo laeuft, die Platzhalter durch echte
3. **Forgejo-Runner-Token** ueber das Forgejo Admin Panel erstellen:
Administration > Actions > Runners > Create new Runner
4. **Secrets aktualisieren**:
4. **Secrets ergaenzen**:
```bash
sops hosts/<hostname>/secrets.yaml
# Platzhalter durch echte Werte ersetzen
```
5. **Erneut deployen**:
Die fehlenden Secrets eintragen:
```yaml
tailscale:
auth-key: "tskey-..."
forgejo-runner:
token: "..."
headplane:
agent_pre_authkey: "..."
```
5. **Stufe-2-Services aktivieren** in `hosts/<hostname>/services/default.nix`:
```nix
{
imports = [
./forgejo.nix
./headplane.nix
./headscale.nix
./mailserver.nix
./netdata.nix
./nginx.nix
./openssh.nix
./sops.nix
./tailscale.nix
];
}
```
Und in `sops.nix` auch `forgejo-runner/token` einkommentieren.
6. **Erneut deployen**:
```bash
nix run .#deploy -- -n <hostname>