4.2 KiB
4.2 KiB
CheckPoint VPS-Projekt — Zusammenfassung & Lernhinweise
Ausgangslage
- VPS bei IONOS (Typ VPS 6-8-240: 6 vCore, 8 GB RAM, 240 GB NVMe SSD).
- Alter Zustand: unsauber gewachsen — ein Git-Server und eine unfertige App lagen ohne Struktur durcheinander. Ziel: kompletter sauberer Neuaufbau, kein Reparieren des Bestehenden.
- Datenschutz-Vorgabe für die geplante App (CheckPoint Ehrenamt): EU-Hosting, eigener Server (= dieser VPS).
Getroffene Entscheidungen
- Kompletter Wipe statt Reparatur — bereits umgesetzt, VPS ist neu installiert.
- Reihenfolge: Desktop zuerst sauber (Anker-Maschine), dann VPS, Laptop zuletzt.
- LLM-Zugriff (Desktop als lokaler LLM-Host) läuft künftig über VPN, nicht über einen SSH-Tunnel via VPS.
- SSH-Keys: pro Gerät ein eigenes ed25519-Keypair (Desktop, Laptop). Private Key verlässt das Gerät nie.
- Shell: Analyse gemacht, finale Entscheidung noch offen (siehe Lernhinweise + Status).
Lernhinweise
SSH-Diagnose
- „Permission denied" = Verbindung steht, Dienst läuft — nur die Authentifizierung scheitert (Key / User / Berechtigung).
- „Connection refused" = auf dem Port antwortet niemand → Dienst gestoppt/abgestürzt oder etwas blockt davor (Firewall / Fail2ban).
- Die Reihenfolge „erst denied, dann refused" ist ein typisches Fail2ban-Muster: erst Fehlversuche, dann IP-Bann.
ssh -v(verbose) zeigt, wie weit der Verbindungsaufbau kommt → trennt Netzwerk-/Firewall-Problem von Auth-Problem.
Fail2ban
- Bannt nach mehreren Fehlversuchen die IP. Weitere Blind-Versuche können den Bann verlängern/erneuern → nicht „auf Verdacht" wiederholt probieren.
- Die Web-Konsole des Hosters ist der Rettungsweg, wenn SSH gesperrt ist.
Backup-Philosophie
- Ein Wipe ist endgültig. Entscheidend ist nur, ob Daten nur an einem Ort existieren (single-copy).
- Wenn man bewusst „frisch" neu macht (Keys und LLMs regeneriert man ohnehin), muss das Backup nur das Unwiederbringliche sichern: echte Daten/Dokumente, single-copy-Repos, Passwort-Tresor/2FA-Seeds, ggf. GPG-Keys.
- In diesem Fall gelöst: Repo-Klone liegen auf der zweiten Laptop-Partition → Wipe war risikofrei.
Shell: interaktiv vs. Skript (die wichtigste Einsicht)
- Das sind zwei getrennte Entscheidungen, die nur wie eine aussehen.
- Interaktive Shell = persönlicher Komfort. Per
chsh -s …wechselbar, jederzeit reversibel, berührt das System nicht (Arch:/bin/sh→ Bash; Systemskripte laufen darüber, unabhängig von der Login-Shell). - Skriptsprache = die einzige „klebende" Entscheidung: Alles, was den VPS anfasst oder reproduzierbar sein soll, muss Bash/POSIX sein. Der VPS hat kein Fish; Fish-Skripte laufen dort nicht.
- Fish: exzellente Ergonomie out-of-the-box, aber nicht-POSIX (
set -x VAR xstattexport,$statusstatt$?, Listen 1-indiziert). Eingefügte Bash-Befehle (aus Doku/KI-Tools) brechen gelegentlich. - Zsh: Bash-kompatibel (gleiche Sprache wie die Server) + Fish-ähnliche Plugins (
zsh-autosuggestions,zsh-syntax-highlighting) → bester Kompromiss für server-zentriertes Arbeiten. - Bash + ble.sh / atuin / fzf: maximal gängig, fast gleicher Komfort.
SSH-Key-Architektur
- Pro Gerät ein eigenes Keypair → ein Gerät verloren/kompromittiert = nur dessen Public Key vom Server entfernen, Rest bleibt unberührt.
- ed25519 als moderner Standard.
- Public Keys wandern auf den VPS, Private Keys bleiben lokal.
VPN für LLM-Zugriff
- „VPN" zum Erreichen des eigenen Desktops = Mesh / Self-Hosted (WireGuard, Tailscale, Netbird) — nicht ein kommerzielles Privacy-VPN (das macht das Gegenteil).
- Passt zur Eigen-Server-/Datenschutz-Philosophie.
Offene Designfrage: Multi-App-Struktur (noch nicht besprochen)
Der VPS soll mehrere Apps parallel hosten. Zu entscheidende Achsen:
- Isolation: Container (Docker/Podman) vs. systemd-Services + venvs.
- Reverse Proxy: Caddy (Auto-HTTPS, simpel) vs. Nginx vs. Traefik.
- Domains/Subdomains-Organisation.
- Backup-Strategie für die Zukunft (automatisiert).
- Hardening: SSH key-only, Fail2ban sinnvoll konfigurieren, Firewall — und die IONOS-Web-Konsole bewusst als Recovery-Weg behalten, um erneutes Aussperren zu vermeiden.