# 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 x` statt `export`, `$status` statt `$?`, 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.
