updated docs for an other activation step
This commit is contained in:
parent
6037b55091
commit
da37a2dce3
1 changed files with 72 additions and 19 deletions
|
|
@ -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>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue