🐧 · Betriebssystem

Linux: Das Fundament aller Server-Projekte

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.
  • Prozesse: ps aux, top / htop, kill -9 PID. Prozesse starten, stoppen, Ressourcenverbrauch überwachen.
  • 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.