4.3 KiB
Neuinstallation (Reinstall)
Diese Anleitung beschreibt die Neuinstallation eines bestehenden Hosts, z.B. nach Hardwarewechsel oder bei Problemen.
Unterschied zur Erstinstallation
| Aspekt | Erstinstallation | Neuinstallation |
|---|---|---|
| SOPS-Secrets | Noch nicht vorhanden | Bereits konfiguriert |
| SSH-Host-Key | Neu generiert | Muss wiederhergestellt werden! |
| Disk-IDs | Neu ermitteln | Oft geändert (neue Hardware) |
| secrets.yaml | Wird erstellt | Bereits vorhanden |
Wichtig: SSH-Host-Key Problem
Bei einer Neuinstallation wird ein neuer SSH-Host-Key generiert. Dieser stimmt nicht mehr mit dem Age-Key in .sops.yaml überein!
Lösungsmöglichkeiten
Option A: Alten Host-Key sichern und wiederherstellen (empfohlen)
Option B: Neuen Key generieren und SOPS aktualisieren
Voraussetzungen
- Backup des alten SSH-Host-Keys (falls Option A)
- Zugriff auf
.sops.yamlund die Admin-Age-Keys - Bootbares NixOS ISO
Schritt 1: Vorbereitung (vor der Installation)
1.1 Alten SSH-Host-Key sichern (Option A)
Falls der alte Host noch läuft:
# Auf dem alten Host
sudo cat /etc/ssh/ssh_host_ed25519_key > ~/ssh_host_ed25519_key.backup
sudo cat /etc/ssh/ssh_host_ed25519_key.pub > ~/ssh_host_ed25519_key.pub.backup
Dateien sicher auf den Entwicklungsrechner kopieren.
1.2 Disk-IDs ermitteln
Bei neuer Hardware ändern sich die Disk-IDs!
# Im NixOS Live-System
lsblk -o NAME,SIZE,MODEL,SERIAL
ls -la /dev/disk/by-id/
Die neue Disk-ID in hosts/<hostname>/disks.sh oder disks.nix eintragen:
# Beispiel disks.sh
DISK="/dev/disk/by-id/nvme-Samsung_SSD_970_EVO_Plus_XXXXX"
Schritt 2: Installation durchführen
2.1 NixOS ISO booten
Von USB/CD booten, Root-Passwort setzen, per SSH verbinden.
2.2 Repository klonen
sudo -i
nix-shell -p git
git clone <GIT_REPO_URL> /tmp/nixos
cd /tmp/nixos
2.3 Disk-Konfiguration prüfen
# Aktuelle Disk-IDs anzeigen
ls -la /dev/disk/by-id/
# Mit Konfiguration vergleichen
cat hosts/<hostname>/disks.sh | grep DISK
Falls nötig: Disk-ID in der Konfiguration anpassen.
2.4 Install-Script ausführen
bash scripts/install.sh -n <hostname>
2.5 SSH-Host-Key wiederherstellen (Option A)
Vor dem Reboot!
# Host-Key vom Backup wiederherstellen
cp /path/to/ssh_host_ed25519_key.backup /mnt/etc/ssh/ssh_host_ed25519_key
cp /path/to/ssh_host_ed25519_key.pub.backup /mnt/etc/ssh/ssh_host_ed25519_key.pub
chmod 600 /mnt/etc/ssh/ssh_host_ed25519_key
chmod 644 /mnt/etc/ssh/ssh_host_ed25519_key.pub
2.6 Reboot
umount -Rl /mnt
reboot
Schritt 3: Nach dem Reboot
Bei Option A (Key wiederhergestellt)
SOPS-Secrets sollten automatisch funktionieren. Testen:
sudo cat /run/secrets/tailscale/auth-key
Bei Option B (Neuer Key)
Der Host kann die Secrets nicht entschlüsseln. Neuen Key konfigurieren:
# Neuen Age-Key ermitteln
nix-shell -p ssh-to-age --run 'cat /etc/ssh/ssh_host_ed25519_key.pub | ssh-to-age'
Auf dem Entwicklungsrechner:
# .sops.yaml aktualisieren mit neuem Key
vim .sops.yaml
# Secrets mit neuem Key neu verschlüsseln
sops updatekeys hosts/<hostname>/secrets.yaml
Dann Konfiguration neu deployen:
nixos-rebuild switch --flake .#<hostname> \
--target-host <user>@<IP> --use-remote-sudo \
--ssh-option="-p 2299"
Häufige Probleme
"No secret key available"
SOPS kann die Secrets nicht entschlüsseln. Ursache:
- SSH-Host-Key stimmt nicht mit Age-Key in
.sops.yamlüberein
Lösung: Option B durchführen (neuen Key konfigurieren).
"Device not found" beim Partitionieren
Disk-ID in disks.sh/disks.nix ist falsch.
# Richtige ID finden
ls -la /dev/disk/by-id/
Hardware-Config veraltet
Bei neuer Hardware muss hardware.nix neu generiert werden:
# Install-Script generiert automatisch neu, falls Datei fehlt
rm hosts/<hostname>/hardware.nix
bash scripts/install.sh -n <hostname>
Checkliste
- Alten SSH-Host-Key gesichert (falls möglich)
- Disk-IDs in Konfiguration geprüft/aktualisiert
- Installation durchgeführt
- SSH-Host-Key wiederhergestellt ODER neuen Key in SOPS konfiguriert
- Secrets funktionieren (
sudo cat /run/secrets/...) - Tailscale verbunden (
tailscale status)