Fast jeder Server läuft auf Linux. Wer die Grundlagen kennt – Dateisystem, Berechtigungen, Prozesse, Netzwerk – hat die Kontrolle über die gesamte Infrastruktur. Kein Self-Hosting ohne Linux-Verständnis.
UbuntuDebiansystemdBerechtigungenSSH
Linux-Grundlagen die auf jedem Server gelten
Das Wichtigste zuerst – Konzepte die auf Ubuntu, Debian, AlmaLinux und allen anderen Distributionen identisch sind:
Dateisystem-Hierarchie:/etc für Konfiguration, /var für Daten/Logs, /opt für externe Software, /home für Nutzer. Diese Struktur ist Standard.
Berechtigungen: Jede Datei hat Eigentümer (user), Gruppe (group) und andere (other). chmod 755, chown user:group sind tägliche Werkzeuge.
systemd: Der Standard-Init-System und Service-Manager auf modernen Distros. systemctl start/stop/enable/status dienstname.
# Häufig gebrauchte Linux-Befehle
df -h # Festplattenplatz
free -h # RAM-Verbrauch
ss -tlnp # Welche Ports lauschen?
journalctl -u nginx -f # Service-Logs live
lsof -i :80 # Wer nutzt Port 80?
Benutzer, Gruppen und Berechtigungen richtig verstehen
Linux-Sicherheit basiert auf Benutzer-Trennung. Für Server-Setups besonders wichtig:
Root vs. sudo: Niemals dauerhaft als Root arbeiten. Sudo-Benutzer mit sparsamer Privilegierung. sudo -i nur wenn wirklich nötig.
Service-Benutzer: Nginx, PostgreSQL und Docker laufen unter eigenen Benutzern ohne Login-Shell – reduziert Angriffsfläche bei Kompromittierung
Dateirechte für Webserver: Nginx-User braucht `r-x` auf Verzeichnisse und `r--` auf Dateien. Write-Rechte nur dort wo wirklich benötigt.
ACLs: Feinere Berechtigungskontrolle als das klassische rwxrwxrwx-Modell – für komplexe Multi-User-Szenarien
Netzwerk, Firewall und SSH-Härtung
Ein Linux-Server im Internet braucht minimale Netzwerk-Härtung von Anfang an:
ufw (Uncomplicated Firewall):ufw allow 22,80,443/tcp && ufw enable – einfach, effektiv. Standard auf Ubuntu.
SSH-Härtung: In /etc/ssh/sshd_config: PasswordAuthentication no, PermitRootLogin no, Port 2222 (Obfuscation, kein echter Schutz aber reduziert automatisierte Scans)
fail2ban: Sperrt IPs nach mehreren fehlgeschlagenen Login-Versuchen automatisch – muss auf jedem öffentlichen Server laufen
Netzwerk-Debugging:ss -tlnp zeigt lauschende Ports, curl -v localhost:port testet lokale Services, traceroute für Routing-Probleme
Häufige Fragen zu Linux
Ubuntu LTS (Long Term Support, alle 2 Jahre) für Einsteiger: neuere Pakete, große Community, einfachere Docker-Installation. Debian für Puristen: stabiler, konservativer, weniger Bloat. Beide sind exzellent für Server-Einsatz. Ubuntu 24.04 LTS ist aktuell die empfohlene Wahl für neue Server.
`systemctl status servicename` gibt den letzten Fehler. `journalctl -u servicename -n 50` zeigt die letzten 50 Log-Einträge. `journalctl -xe` für System-Level Fehler. Bei Docker: `docker compose logs servicename`. 90% aller Probleme werden durch genaues Lesen der Logs gelöst.
`unattended-upgrades` automatisch Security-Updates installieren lassen. Manuell: `apt update && apt upgrade` regelmäßig. Kernel-Updates brauchen Neustart – `needrestart` oder `reboot required`-Datei prüfen. Docker-Images separat via Watchtower oder manuell updaten.
Für Dateien: restic nach S3/Backblaze B2 – inkrementell, verschlüsselt, günstig. Für Datenbanken: täglicher Dump via Cron (`pg_dump` für PostgreSQL). Backup-Skript testen indem man es tatsächlich wiederherstellt – ungetestedte Backups sind keine Backups.