Die IT-Infrastruktur basiert auf einem modernen, containerisierten Ansatz, der Skalierbarkeit, Sicherheit und Wartbarkeit in den Vordergrund stellt. Alle Dienste werden als Infrastructure as Code (IaC) verwaltet.
1. Projektbeschreibung
Das Projekt umfasst den Betrieb und die Weiterentwicklung meiner professionellen Firmen-IT-Infrastruktur auf einem VPS (Virtual Private Server). Ziel ist die Bereitstellung hochverfügbarer Dienste für den geschäftlichen Betrieb, Collaboration und Dokumentenmanagement unter Einhaltung strenger Sicherheitsstandards und Datenschutzrichtlinien. Der gesamte Stack ist modular in Docker-Containern organisiert und durch einen zentralen Reverse Proxy abgesichert.
2. IT-Aufbau und Technologien
Basis-Infrastruktur (VPS & Docker)
- Host-System: Linux VPS, verwaltet mit Docker und Docker Compose.
- Orchestrierung: Jeder Dienst (Microservice-Architektur) residiert in einem eigenen Verzeichnis mit dedizierter
compose.yaml. Dies entkoppelt Abhängigkeiten und erleichtert Updates. - Networking: Ein zentrales traefik-Netzwerk verbindet die Container, während interne Dienste (Datenbanken, Redis) isoliert bleiben.
- Ingress / Reverse Proxy: Traefik fungiert als zentraler Einstiegspunkt (Edge Router). Er übernimmt:
- Automatisches Routing basierend auf Docker-Labels.
- SSL/TLS-Terminierung (automatische Zertifikate via Let’s Encrypt).
- Middleware-Handling (Security Headers, HSTS, Redirects).
Nextcloud & Talk (Performance-Optimierung)
Nextcloud dient als zentrale Collaboration-Plattform. Für Nextcloud Talk wird eine performante Verbindung durch spezielle High-Performance-Komponenten sichergestellt:
- High Performance Backend (HPB) / Signaling Server:
- Einsatz des
aio-talkContainers (Signaling Server). - Vorteil: Entlastet den Nextcloud-PHP-Server von der Signalisierungslast bei Audio-/Videoanrufen und ermöglicht deutlich mehr gleichzeitige Verbindungen als das Standard-PHP-Backend.
- Einsatz des
- TURN/STUN Server:
- Der Talk-Container exponiert Port 3478 (UDP/TCP) direkt.
- Funktion: Ermöglicht WebRTC-Verbindungen auch hinter strikten Firewalls oder NAT (Network Address Translation), was essenziell für zuverlässige Anrufe ist (Relaying).
- High Performance Files (Notify Push):
- Einsatz des
notify_pushService. - Funktion: Clients erhalten Dateiänderungen und Benachrichtigungen in Echtzeit über WebSockets, anstatt den Server periodisch abzufragen (Polling). Dies reduziert die Serverlast massiv und erhöht die Reaktionsgeschwindigkeit (“Snappiness”).
- Einsatz des
- Caching: Redis sorgt für schnelles Transaction-File-Locking und Caching.
Backup Strategie
Die Datensicherung folgt der 3-2-1-Regel-Annäherung und ist vollständig automatisiert:
- Tool: Borgmatic (Wrapper für BorgBackup) in einem Docker-Container.
- Ablauf:
- Pre-Backup Hooks: Automatische Erstellung von Datenbank-Dumps (PostgreSQL
pg_dumpall, MySQL Dumps) vor dem Backup-Lauf. - Deduplizierung & Kompression: Blobs werden effizient dedupliziert gespeichert, was Speicherplatz spart und die Backup-Zeit minimiert.
- Verschlüsselung: Alle Backups sind client-seitig verschlüsselt (Repo-Key).
- Ziel: Sicherung auf externen Storage (z.B. Storage Box / Remote VPS) via SSH.
- Pre-Backup Hooks: Automatische Erstellung von Datenbank-Dumps (PostgreSQL
- Recovery: Dokumentierte Restore-Prozesse (
howto.md) ermöglichen eine schnelle Wiederherstellung einzelner Dateien oder ganzer Datenbanken.
Sicherheit & Firewall (CrowdSec)
Sicherheit wird proaktiv durch Intrusion Prevention (IPS) gewährleistet:
- CrowdSec: Analysiert Logs von Traefik, Nextcloud und anderen Diensten in Echtzeit.
- Funktionsweise:
- Erkennt Angriffsmuster (Brute Force, Port Scans, HTTP Floods).
- Blockiert bösartige IPs dynamisch auf Netzwerkebene (via iptables/nftables Bouncer) oder Applikationsebene.
- Teilt Bedrohungsdaten mit der Community (Community-Blocklist), um präventiv bekannte Angreifer zu blockieren.
- Konfiguriert über
acquis.yamlund Docker-Labels.
Automatisierung & Monitoring
Der Zustand des Systems wird kontinuierlich überwacht (Observability):
- Metriken (Prometheus & Node Exporter): Sammelt Systemmetriken (CPU, RAM, Disk I/O) und Container-Metriken (Traefik-Statistiken).
- Visualisierung (Grafana): Dashboards zur grafischen Auswertung der Last.
- Uptime Monitoring (Uptime Kuma): Überprüft die Erreichbarkeit der externen Dienste (HTTP/TCP Checks) und alarmiert bei Ausfällen.
- Cron-Job Monitoring (Healthchecks.io): Überwacht, ob geplante Aufgaben (z.B. der nächtliche Backup-Run) erfolgreich liefen (“Dead Man’s Switch”). Wenn der “Ping” ausbleibt, wird alarmiert.
- GitOps-Ansatz: Konfigurationen liegen versioniert im Git-Repository, Änderungen werden dokumentiert und deployt.