commit c5fb4daf0f78c6db3c7552b3379d0ad6b6684364 Author: Bilal Teke Date: Tue May 26 15:24:55 2026 +0200 erster commit nach bestandsaufnahme diff --git a/VPS/backup.md b/VPS/backup.md new file mode 100644 index 0000000..12fe1ba --- /dev/null +++ b/VPS/backup.md @@ -0,0 +1,101 @@ +# Backup Dokumentation + +## Backup Strategie + +Die VPS wird per restic auf eine Hetzner Storage Box gesichert. + +Transport: +- SFTP + +Backup Tool: +- restic + +— + +# Gesicherte Verzeichnisse + +```text +/opt +/etc/wireguard +/etc/ssh +/etc/letsencrypt +``` + +— + +# Backup Ziel + +## Hetzner Storage Box + +Repository Struktur: + +```text +backups/vps +``` + +— + +# Retention Policy + +| Typ | Anzahl | +|—|—| +| Daily | 7 | +| Weekly | 4 | +| Monthly | 6 | + +Zusätzlich: +- regelmäßiges prune + +— + +# Backup Zeitplan + +## systemd timer + +Nächster Lauf: +- täglich um 02:30 UTC + +Timer: +- restic-backup.timer + +— + +# Ziele der Backupstrategie + +- vollständige Wiederherstellbarkeit der VPS +- schnelle Recovery +- Schutz vor Fehlkonfigurationen +- Schutz vor Datenverlust + +— + +# Wiederherstellungsziele + +Die folgenden Bereiche müssen wiederherstellbar sein: + +| Bereich | Wichtigkeit | +|—|—| +| Docker Stacks | kritisch | +| Reverse Proxy | kritisch | +| authentik | kritisch | +| WireGuard | kritisch | +| Zertifikate | kritisch | +| SSH Zugriff | kritisch | + +— + +# Verbesserungspotenzial + +## Noch offen + +- Restore-Test dokumentieren +- Backup Monitoring ergänzen +- Backup Erfolg automatisch prüfen +- Alerting bei Fehlern +- Dokumentierte Recovery-Anleitung + +— + +# Langfristiges Ziel + +Die VPS soll vollständig reproduzierbar und innerhalb kurzer Zeit wiederherstellbar sein. \ No newline at end of file diff --git a/VPS/docker.md b/VPS/docker.md new file mode 100644 index 0000000..d4531a3 --- /dev/null +++ b/VPS/docker.md @@ -0,0 +1,128 @@ +# Docker Übersicht + +## Docker Netzwerke + +| Netzwerk | Zweck | +|—|—| +| proxy | Hauptnetzwerk für Reverse Proxy und Dienste | +| authentik_authentik | internes authentik Netzwerk | +| nextcloud_internal | internes Nextcloud Netzwerk | +| teamspeak_default | isoliertes TeamSpeak Netzwerk | + +— + +# Hauptnetzwerk „proxy“ + +## Netzwerk + +- Name: proxy +- Subnetz: 172.20.0.0/16 + +Das proxy-Netzwerk dient als zentrale Kommunikationsschicht zwischen: +- Nginx Proxy Manager +- öffentlichen Diensten +- internen Reverse-Proxy-Zielen + +— + +# Container + +| Container | Aufgabe | Netzwerk | +|—|—|—| +| npm | Reverse Proxy | proxy | +| authentik-server | SSO Frontend | proxy | +| authentik-worker | Hintergrundprozesse | authentik_authentik | +| authentik-postgresql | Datenbank | authentik_authentik | +| authentik-redis | Cache | authentik_authentik | +| nextcloud | Cloud-Plattform | proxy | +| nextcloud-db | MariaDB | nextcloud_internal | +| nextcloud-redis | Redis Cache | nextcloud_internal | +| vaultwarden | Passwortmanager | proxy | +| forgejo | Git Hosting | proxy | +| collabora | Office Integration | proxy | +| uptime-kuma | Verfügbarkeitsmonitoring | proxy | +| netdata | Monitoring | proxy | +| adguardhome | DNS | proxy | +| teamspeak | Voice Server | teamspeak_default | +| site | Statische Webseite | proxy | + +— + +# Öffentlich erreichbare Ports + +| Port | Dienst | +|—|—| +| 80 | NPM HTTP | +| 443 | NPM HTTPS | +| 9000 | authentik | +| 3000 | Forgejo | +| 2222 | Forgejo SSH | +| 9987/UDP | TeamSpeak | +| 10011 | TeamSpeak ServerQuery | +| 30033 | TeamSpeak Dateitransfer | +| 51820/UDP | WireGuard | + +— + +# Localhost-only Bindings + +| Port | Dienst | +|—|—| +| 81 | NPM Admin | +| 3001 | Uptime Kuma | +| 3002 | AdGuard UI | + +— + +# Docker Speicherstruktur + +## Basisverzeichnis + +```text +/opt/ +``` + +Jeder Dienst besitzt aktuell ein eigenes Verzeichnis. + +Beispiele: + +```text +/opt/authentik +/opt/nextcloud +/opt/npm +``` + +— + +# Persistenzstrategie + +Die VPS nutzt überwiegend: +- Bind Mounts +- lokale persistente Verzeichnisse + +anstatt vieler benannter Docker-Volumes. + +Vorteile: +- einfachere Backups +- einfachere Migration +- einfachere Wiederherstellung +- bessere Übersichtlichkeit + +— + +# Aktuelle Beobachtungen + +## Positiv + +- saubere Trennung der Dienste +- wenige Netzwerke +- kaum Docker-Müll +- minimale Anzahl ungenutzter Volumes +- strukturierter Aufbau + +## Verbesserungspotenzial + +- unnötige öffentliche Portfreigaben reduzieren +- Compose-Strukturen vereinheitlichen +- Labels und Restart Policies standardisieren +- Netzwerk-Namenskonventionen vereinheitlichen \ No newline at end of file diff --git a/VPS/known-issues.md b/VPS/known-issues.md new file mode 100644 index 0000000..e6b0253 --- /dev/null +++ b/VPS/known-issues.md @@ -0,0 +1,47 @@ +# Bekannte Themen / Verbesserungspotenzial + +## Security + +- authentik aktuell direkt öffentlich erreichbar +- Forgejo öffentlich exposed +- öffentliche Ports teilweise historisch gewachsen + +— + +## Dokumentation + +- WireGuard Peers noch nicht vollständig benannt +- Domains/Subdomains noch nicht dokumentiert +- Compose Standards noch nicht vereinheitlicht + +— + +## Monitoring + +- kein zentrales Alerting +- Backup Monitoring fehlt +- VPN Monitoring ausbaufähig + +— + +## Docker + +- Compose-Dateien unterschiedlich aufgebaut +- Netzwerk-Namenskonventionen uneinheitlich +- Logging noch nicht standardisiert + +— + +## Backups + +- Restore-Prozess noch nicht dokumentiert +- kein regelmäßiger Restore-Test + +— + +## Langfristige Themen + +- Matrix Server +- zentrale Benachrichtigungen +- vollständige Infrastructure-as-Code Struktur +- automatische Inventarisierung \ No newline at end of file diff --git a/VPS/maintenance.md b/VPS/maintenance.md new file mode 100644 index 0000000..345d5d7 --- /dev/null +++ b/VPS/maintenance.md @@ -0,0 +1,65 @@ +# Wartung und Betrieb + +## Regelmäßige Aufgaben + +### Täglich + +- Monitoring prüfen +- Uptime Kuma Alerts prüfen +- CrowdSec Events prüfen + +— + +### Wöchentlich + +- Docker Container Status prüfen +- verfügbare Updates prüfen +- Backup Logs prüfen +- freien Speicherplatz prüfen + +— + +### Monatlich + +- Restore-Prozess testen +- ungenutzte Docker Images entfernen +- Logs prüfen +- Sicherheitsreview durchführen + +— + +# Automatische Wartung + +## Bereits vorhanden + +| Funktion | Status | +|—|—| +| apt Updates | aktiv | +| Security Updates | aktiv | +| restic Backup | aktiv | +| logrotate | aktiv | +| CrowdSec Updates | aktiv | + +— + +# Geplante Automatisierung + +| Funktion | Status | +|—|—| +| Docker Cleanup | geplant | +| Journal Cleanup | geplant | +| Backup Validation | geplant | +| Health Reports | geplant | +| Matrix Alerts | geplant | + +— + +# Wartungsziele + +Die VPS soll möglichst: +- wartungsarm +- stabil +- nachvollziehbar +- automatisiert + +betrieben werden. \ No newline at end of file diff --git a/VPS/monitoring.md b/VPS/monitoring.md new file mode 100644 index 0000000..0fe1e48 --- /dev/null +++ b/VPS/monitoring.md @@ -0,0 +1,121 @@ +# Monitoring Dokumentation + +## Monitoring Stack + +Die VPS nutzt aktuell mehrere Monitoring-Lösungen mit unterschiedlichen Aufgabenbereichen. + +— + +# Verwendete Systeme + +| Dienst | Aufgabe | +|—|—| +| Netdata | Live-Systemmonitoring | +| Uptime Kuma | Verfügbarkeitsmonitoring | +| CrowdSec | Sicherheitsmonitoring | +| Ubuntu Timer | Wartung / Updates | + +— + +# Netdata + +## Aufgabe + +Netdata überwacht: +- CPU +- RAM +- Prozesse +- Netzwerk +- Docker +- Festplatten +- Systemmetriken + +Container: +- netdata + +— + +# Uptime Kuma + +## Aufgabe + +Uptime Kuma überwacht: +- externe Erreichbarkeit +- HTTPS Checks +- Zertifikate +- Dienste +- Domains + +Container: +- uptime-kuma + +Localhost Binding: + +```text +127.0.0.1:3001 +``` + +— + +# CrowdSec + +## Aufgabe + +CrowdSec überwacht: +- Loginversuche +- Angriffe +- bekannte Bad IPs + +Integration: +- nftables +- Docker +- Reverse Proxy + +— + +# Systemd Timer + +## Aktive Wartungstimer + +| Timer | Aufgabe | +|—|—| +| apt-daily.timer | Paketupdates | +| apt-daily-upgrade.timer | Sicherheitsupdates | +| restic-backup.timer | Backups | +| logrotate.timer | Logrotation | +| crowdsec-hub-update.timer | CrowdSec Updates | + +— + +# Aktuelle Beobachtungen + +## Positiv + +- mehrere Monitoring-Ebenen vorhanden +- Backups automatisiert +- CrowdSec integriert +- geringe Systemlast +- ausreichende Leistungsreserven + +— + +# Verbesserungspotenzial + +## Noch offen + +- zentrales Alerting +- Matrix Integration +- Backup Fehler Monitoring +- Zertifikatswarnungen +- VPN Health Checks +- Docker Health Alerts + +— + +# Langfristiges Ziel + +Das Monitoring soll: +- frühzeitig Probleme erkennen +- automatisch benachrichtigen +- Fehlkonfigurationen sichtbar machen +- möglichst wartungsarm funktionieren \ No newline at end of file diff --git a/VPS/networking.md b/VPS/networking.md new file mode 100644 index 0000000..bb3088c --- /dev/null +++ b/VPS/networking.md @@ -0,0 +1,97 @@ +# VPS Netzwerk + +## Öffentliches Netzwerk + +| Interface | Adresse | +|—|—| +| eth0 | 46.225.176.170 | + +— + +# VPN + +## WireGuard + +Die VPS dient als zentraler WireGuard-Hub zwischen: +- VPS +- Heimnetz +- zusätzlichen Clients + +Interface: +- wg0 + +Listening Port: +- 51820/UDP + +— + +# Heimnetz Routing + +Folgende Route wird aktuell über WireGuard bereitgestellt: + +```text +192.168.0.0/24 +``` + +Dadurch kann die VPS interne Dienste im Heimnetz sicher über VPN erreichen. + +— + +# Firewall / Paketfilterung + +## Aktueller Zustand + +UFW ist nicht aktiv. + +Stattdessen nutzt die VPS: +- nftables +- Docker-verwaltete Firewallregeln +- CrowdSec Integration + +— + +# Sicherheitslayer + +| Layer | Aufgabe | +|—|—| +| Docker nftables Regeln | Container-Isolation | +| CrowdSec | Dynamische Blockierung | +| WireGuard | Sicherer privater Zugriff | +| NPM | TLS Terminierung | + +— + +# Docker Netzwerkarchitektur + +## proxy Netzwerk + +Subnetz: + +```text +172.20.0.0/16 +``` + +Wichtige Dienste: +- NPM +- authentik +- Nextcloud +- Vaultwarden +- Forgejo +- Monitoring-Dienste + +— + +# Aktuelle Sicherheitsbeobachtungen + +## Positiv + +- interne Docker-Segmentierung vorhanden +- RAW nftables Isolationsregeln aktiv +- Localhost Bindings bereits genutzt +- CrowdSec in INPUT Chain integriert + +## Mögliche Verbesserungen + +- direkten öffentlichen Zugriff auf authentik entfernen +- öffentliche Erreichbarkeit von Forgejo prüfen +- Rolle von AdGuard auf der VPS bewerten \ No newline at end of file diff --git a/VPS/overview.md b/VPS/overview.md new file mode 100644 index 0000000..df1053d --- /dev/null +++ b/VPS/overview.md @@ -0,0 +1,101 @@ +# VPS Übersicht + +## Allgemeine Informationen + +| Eigenschaft | Wert | +|—|—| +| Hostname | ubuntu-8gb-nbg1-1 | +| Anbieter | Hetzner Cloud | +| Standort | nbg1 (Nürnberg) | +| Betriebssystem | Ubuntu 24.04.4 LTS | +| Kernel | 6.8.0-117-generic | +| Öffentliche IP | 46.225.176.170 | +| Hauptbenutzer | mbyte | +| Container Runtime | Docker | + +— + +# Aufgabe der VPS + +Die VPS dient als öffentliche Edge-Infrastruktur des Homelabs. + +Hauptaufgaben: + +- Öffentlicher Reverse Proxy +- Authentifizierung / SSO +- VPN-Gateway +- Sicherheitslayer +- Öffentlicher Einstiegspunkt für interne Dienste +- Externes Monitoring + +— + +# Hauptdienste + +| Dienst | Aufgabe | +|—|—| +| Nginx Proxy Manager | Reverse Proxy und TLS | +| authentik | SSO / Identity Provider | +| CrowdSec | Intrusion Prevention | +| WireGuard | VPN-Tunnel ins Heimnetz | +| Nextcloud | Cloud / Kollaboration | +| Vaultwarden | Passwortmanager | +| Forgejo | Git Hosting | +| Uptime Kuma | Verfügbarkeitsmonitoring | +| Netdata | Systemmonitoring | +| AdGuard Home | DNS-Dienst | +| Collabora | Office-Integration | +| TeamSpeak | Voice-Server | + +— + +# Infrastruktur-Architektur + +Internet +↓ +VPS +├── Nginx Proxy Manager +├── authentik +├── CrowdSec +├── WireGuard +├── Öffentliche Dienste +└── Monitoring +↓ VPN +Heimnetz +├── Unraid +├── internes NPM +├── Home Assistant +├── Seafile +├── Immich +└── interne Dienste + +— + +# Ressourcenverbrauch + +## Aktueller Status (2026-05-26) + +| Ressource | Nutzung | +|—|—| +| CPU Load | niedrig | +| RAM Nutzung | ~34% | +| Festplattennutzung | ~17% | +| Swap | 0% | + +Die VPS besitzt aktuell deutliche Leistungsreserven. + +— + +# Zielbild + +Die VPS soll langfristig: + +- stabil +- selbstwartend +- dokumentiert +- leicht wiederherstellbar +- sicher +- wartungsarm +- vollständig überwacht + +sein. \ No newline at end of file diff --git a/VPS/security.md b/VPS/security.md new file mode 100644 index 0000000..d70b942 --- /dev/null +++ b/VPS/security.md @@ -0,0 +1,107 @@ +# Sicherheitsdokumentation + +## Sicherheitsarchitektur + +Die VPS nutzt mehrere Sicherheitslayer. + +— + +# Sicherheitskomponenten + +| Komponente | Aufgabe | +|—|—| +| CrowdSec | Dynamische Angriffsblockierung | +| nftables | Paketfilterung | +| Docker Netzwerkisolierung | Segmentierung | +| WireGuard | Sicherer Fernzugriff | +| Nginx Proxy Manager | TLS Terminierung | +| authentik | Zentrale Authentifizierung | + +— + +# Firewall + +## Aktueller Zustand + +UFW ist deaktiviert. + +Die VPS nutzt stattdessen: +- nftables +- Docker-verwaltete Regeln +- CrowdSec Integration + +— + +# Docker Isolation + +Die Docker-Netzwerke sind durch nftables-Regeln segmentiert. + +Vorhanden: +- RAW Regeln +- Netzwerkisolation +- Interface-basierte Filterung + +— + +# Öffentlich erreichbare Dienste + +| Dienst | Port | +|—|—| +| NPM | 80 / 443 | +| Forgejo | 3000 | +| Forgejo SSH | 2222 | +| authentik | 9000 | +| TeamSpeak | 9987 / 10011 / 30033 | +| WireGuard | 51820 | + +— + +# Lokale Bindings + +Folgende Dienste sind nur lokal erreichbar: + +| Dienst | Binding | +|—|—| +| NPM Admin | 127.0.0.1:81 | +| Uptime Kuma | 127.0.0.1:3001 | +| AdGuard UI | 127.0.0.1:3002 | + +— + +# Sicherheitsbeobachtungen + +## Positiv + +- CrowdSec aktiv +- Docker Netzwerksegmentierung +- Localhost Bindings vorhanden +- VPN sauber getrennt +- geringe Angriffsfläche des Hosts + +— + +# Verbesserungspotenzial + +## Hohe Priorität + +- authentik nicht direkt öffentlich exposen +- Forgejo Exposure prüfen +- öffentliche Ports reduzieren + +— + +# Mittlere Priorität + +- Compose Standards vereinheitlichen +- zentrale Loggingstrategie +- automatische Sicherheitsbenachrichtigungen + +— + +# Langfristige Ziele + +- minimale Angriffsfläche +- vollständig dokumentierte Infrastruktur +- automatisierte Sicherheitsüberwachung +- reproduzierbare Konfiguration +- wartungsarme Architektur \ No newline at end of file diff --git a/VPS/services.md b/VPS/services.md new file mode 100644 index 0000000..52072d7 --- /dev/null +++ b/VPS/services.md @@ -0,0 +1,71 @@ +# Dienste Übersicht + +## Reverse Proxy + +| Dienst | Beschreibung | +|—|—| +| Nginx Proxy Manager | Öffentlicher Reverse Proxy | +| authentik | Zentrale Authentifizierung | + +— + +## Cloud / Produktivität + +| Dienst | Beschreibung | +|—|—| +| Nextcloud | Cloud Plattform | +| Collabora | Office Integration | +| Vaultwarden | Passwortmanager | + +— + +## Infrastruktur + +| Dienst | Beschreibung | +|—|—| +| WireGuard | VPN | +| CrowdSec | Angriffsschutz | +| AdGuard Home | DNS | +| Forgejo | Git Hosting | + +— + +## Monitoring + +| Dienst | Beschreibung | +|—|—| +| Netdata | Live Monitoring | +| Uptime Kuma | Uptime Monitoring | + +— + +## Kommunikation + +| Dienst | Beschreibung | +|—|—| +| TeamSpeak | Voice Server | + +— + +# SSO Status + +| Dienst | SSO | +|—|—| +| Nextcloud | aktiv | +| Vaultwarden | aktiv | +| Immich | aktiv | +| Forgejo | geplant | +| Matrix | geplant | + +— + +# Bekannte Abhängigkeiten + +| Dienst | Abhängigkeit | +|—|—| +| Nextcloud | MariaDB | +| Nextcloud | Redis | +| authentik | PostgreSQL | +| authentik | Redis | +| Collabora | Nextcloud | +| NPM | proxy Netzwerk | \ No newline at end of file diff --git a/VPS/wireguard.md b/VPS/wireguard.md new file mode 100644 index 0000000..b68b146 --- /dev/null +++ b/VPS/wireguard.md @@ -0,0 +1,92 @@ +# WireGuard Dokumentation + +## Allgemein + +Die VPS dient als zentraler WireGuard-Hub zwischen: +- VPS +- Heimnetz +- mobilen Clients +- zusätzlichen Geräten + +Interface: +- wg0 + +Listening Port: +- 51820/UDP + +— + +# VPN Netzwerk + +## WireGuard Subnetz + +```text +10.100.0.0/24 +``` + +— + +# Heimnetz Routing + +Folgende Route wird über den Heimnetz-Peer bereitgestellt: + +```text +192.168.0.0/24 +``` + +Dadurch kann die VPS interne Dienste zuhause sicher erreichen. + +— + +# Aktuelle Peers + +| Peer | Allowed IPs | Beschreibung | +|—|—|—| +| 10.100.0.4 | 10.100.0.4/32 | Client | +| 10.100.0.6 | 10.100.0.6/32 | Client | +| 10.100.0.55 | 10.100.0.55/32 | Client | +| 10.100.0.2 | 10.100.0.2/32 | Client | +| 10.100.0.3 | 10.100.0.3/32 | Client | +| 10.100.0.5 | 10.100.0.5/32 | Client | +| 10.100.0.10 | 10.100.0.10/32 + 192.168.0.0/24 | Heimnetz Gateway | +| 10.100.0.7 | 10.100.0.7/32 | Client | + +— + +# Beobachtungen + +## Positiv + +- Saubere /32 Zuordnung pro Client +- Heimnetz sauber über separaten Peer geroutet +- Keine offensichtlichen Routing-Konflikte +- Keepalive sauber konfiguriert + +— + +# Verbesserungspotenzial + +## Dokumentation ergänzen + +Aktuell fehlen: +- Gerätenamen +- Zuordnung der Peers +- Zweck einzelner Clients + +Empfehlung: + +| VPN IP | Gerät | Zweck | +|—|—|—| +| 10.100.0.x | MacBook | Mobiler Zugriff | +| 10.100.0.x | Unraid | Heimnetz Gateway | +| ... | ... | ... | + +— + +# Langfristige Ziele + +- Vollständige Peer-Dokumentation +- Backup der WireGuard-Konfiguration +- Monitoring des VPN-Tunnels +- Alerting bei Tunnel-Ausfall +- Optional QR-Code Archivierung \ No newline at end of file