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) 1. Services deaktivieren (die Secrets brauchen)
2. NixOS installieren 2. NixOS installieren
3. SSH-Host-Key extrahieren, SOPS konfigurieren, Secrets erstellen 3. SSH-Host-Key extrahieren, SOPS konfigurieren, sofort erstellbare Secrets anlegen
4. Services reaktivieren und deployen 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 ## Schritt 1: Host-Konfiguration vorbereiten
@ -198,7 +200,7 @@ Diese Secrets haben keine Abhaengigkeiten und koennen direkt generiert werden:
#### Secrets die laufende Services brauchen #### 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 | | Secret | Befehl | Voraussetzung |
|--------|--------|---------------| |--------|--------|---------------|
@ -209,13 +211,8 @@ Diese Secrets koennen erst erstellt werden, nachdem die entsprechenden Services
#### Beispiel secrets.yaml (Klartext vor Verschluesselung) #### Beispiel secrets.yaml (Klartext vor Verschluesselung)
```yaml ```yaml
tailscale:
auth-key: "placeholder"
forgejo-runner:
token: "placeholder"
headplane: headplane:
cookie_secret: "a1b2c3d4e5f6..." cookie_secret: "a1b2c3d4e5f6..."
agent_pre_authkey: "placeholder"
mailserver: mailserver:
accounts: accounts:
admin: "$2b$05$..." admin: "$2b$05$..."
@ -224,29 +221,53 @@ forgejo:
mail-pw: "das-klartext-passwort" 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 ```nix
{ {
imports = [ imports = [
# Stufe 1: Services ohne externe Abhaengigkeiten
./forgejo.nix ./forgejo.nix
./headplane.nix
./headscale.nix ./headscale.nix
./mailserver.nix ./mailserver.nix
./netdata.nix ./netdata.nix
./nginx.nix ./nginx.nix
./openssh.nix ./openssh.nix
./sops.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 ```bash
nix run .#deploy -- -n <hostname> 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 --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): 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: 3. **Forgejo-Runner-Token** ueber das Forgejo Admin Panel erstellen:
Administration > Actions > Runners > Create new Runner Administration > Actions > Runners > Create new Runner
4. **Secrets aktualisieren**: 4. **Secrets ergaenzen**:
```bash ```bash
sops hosts/<hostname>/secrets.yaml 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 ```bash
nix run .#deploy -- -n <hostname> nix run .#deploy -- -n <hostname>