1. Root-Server vs. VPS: Was ist der Unterschied?

Der Begriff "Root-Server" wird in Deutschland oft fuer beides verwendet: physische Dedicated Server und virtuelle Server (VPS). Der entscheidende Unterschied:

EigenschaftShared HostingVPSDedicated Server
RessourcenGeteilt, begrenztGarantierte vCPUs/RAMDedizierte Hardware
Root-ZugangNeinJaJa
BetriebssystemVorgegebenFrei waehlbarFrei waehlbar
AdministrationHosting-PanelKomplett selbstKomplett selbst
Preis ab1-5 EUR/Monat3-15 EUR/Monat30-200 EUR/Monat

Fuer die meisten Web-Projekte ist ein VPS die beste Wahl: Volle Kontrolle zu guenstigem Preis, ohne die Verantwortung fuer Hardware. Hetzner Cloud-VPS starten bei 3,79 EUR/Monat, netcup VPS ab 2,99 EUR/Monat.

2. Erste Schritte nach der Server-Provisionierung

Nach dem Anlegen eines neuen VPS (mit Ubuntu 24.04 LTS empfohlen) bekommst du Root-Zugangsdaten. Folge diesen Schritten in der angegebenen Reihenfolge:

1. System aktualisieren

apt update && apt upgrade -y
apt install -y curl wget git unzip vim

2. Neuen Benutzer anlegen und sudo-Rechte geben

adduser meinnutzer
usermod -aG sudo meinnutzer

3. SSH-Key einrichten

# Als neuer Benutzer: .ssh-Verzeichnis anlegen
su - meinnutzer
mkdir -p ~/.ssh
chmod 700 ~/.ssh

# Deinen Public Key einfuegen
echo "ssh-ed25519 AAAA... deine@email.de" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

4. SSH absichern (als root)

nano /etc/ssh/sshd_config

Aendere folgende Werte:

Port 2222                    # Standard-Port aendern
PermitRootLogin no           # Root-Login deaktivieren
PasswordAuthentication no    # Nur SSH-Keys erlauben
PubkeyAuthentication yes
systemctl restart sshd
SSH-Key testen BEVOR du Passwort-Login deaktivierst

Oeffne eine neue SSH-Verbindung mit deinem Key, bevor du die alte Verbindung schliesst. Wenn der Key-Login funktioniert, dann erst PasswordAuthentication auf no setzen. Sonst sperrst du dich selbst aus – und musst den Server ueber die Rescue-Konsole des Anbieters wiederherstellen.

3. Firewall einrichten mit UFW

UFW (Uncomplicated Firewall) ist die einfachste Methode, iptables auf Ubuntu zu konfigurieren. Standard-Setup fuer einen Webserver:

# UFW installieren und aktivieren
apt install ufw

# Standard: alles blockieren (incoming), alles erlauben (outgoing)
ufw default deny incoming
ufw default allow outgoing

# Notwendige Ports oeffnen
ufw allow 2222/tcp comment 'SSH (custom port)'
ufw allow 80/tcp comment 'HTTP'
ufw allow 443/tcp comment 'HTTPS'

# UFW aktivieren
ufw enable

# Status pruefen
ufw status verbose
Tipp: Fail2Ban nach UFW installieren

Fail2Ban sperrt IPs nach mehreren fehlgeschlagenen Login-Versuchen automatisch. Essentiell zum Schutz vor Brute-Force:

apt install fail2ban
Standardkonfiguration schuetzt SSH bereits. Logs: tail -f /var/log/fail2ban.log

4. Nginx als Webserver einrichten

Nginx ist der empfohlene Webserver fuer neue Installationen: schnell, ressourceneffizient und einfach zu konfigurieren. Apache ist eine Alternative, wird aber von Nginx in Performance-Tests bei statischen Files und hoher Konkurrenz meist geschlagen.

Nginx installieren und starten

apt install nginx
systemctl enable nginx
systemctl start nginx

Virtual Host konfigurieren

nano /etc/nginx/sites-available/meinedomain.de
server {
    listen 80;
    listen [::]:80;
    server_name meinedomain.de www.meinedomain.de;

    root /var/www/meinedomain.de;
    index index.html index.php;

    location / {
        try_files $uri $uri/ =404;
    }

    # PHP-FPM (falls PHP benoetigt)
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
    }

    # Logs
    access_log /var/log/nginx/meinedomain.de.access.log;
    error_log /var/log/nginx/meinedomain.de.error.log;
}
# Site aktivieren und nginx neu laden
ln -s /etc/nginx/sites-available/meinedomain.de /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

5. PHP und MySQL installieren

PHP-FPM installieren

apt install php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml php8.3-zip
systemctl enable php8.3-fpm
systemctl start php8.3-fpm

MySQL (MariaDB) installieren

apt install mariadb-server
systemctl enable mariadb
systemctl start mariadb

# Sicherheitsskript ausfuehren (Root-Passwort, anonyme User entfernen etc.)
mysql_secure_installation

Datenbank und Benutzer anlegen

mysql -u root -p

CREATE DATABASE meinedatenbank CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'meindbuser'@'localhost' IDENTIFIED BY 'sicherespasswort';
GRANT ALL PRIVILEGES ON meinedatenbank.* TO 'meindbuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

6. SSL mit Certbot und Let's Encrypt

apt install certbot python3-certbot-nginx
certbot --nginx -d meinedomain.de -d www.meinedomain.de

Certbot konfiguriert nginx automatisch fuer HTTPS und richtet den HTTP-zu-HTTPS-Redirect ein. Die automatische Verlaengerung pruefst du mit:

certbot renew --dry-run

7. Monitoring und laufende Wartung

Systemressourcen im Blick behalten

# CPU und RAM in Echtzeit
htop

# Festplattenbelegung
df -h

# Verzeichnisgroessen
du -sh /var/www/*

# Offene Netzwerkverbindungen
ss -tulpn

# Aktive Prozesse nach CPU sortiert
ps aux --sort=-%cpu | head -10

Automatische Sicherheitsupdates aktivieren

apt install unattended-upgrades
dpkg-reconfigure --priority=low unattended-upgrades

Aktiviert automatische Installation von Sicherheitsupdates – einer der wichtigsten Schritte fuer einen sicheren Server.

Log-Rotation pruefen

# Logrotate-Status pruefen
logrotate -d /etc/logrotate.conf

# Nginx-Logs werden standardmaessig woechentlich rotiert
cat /etc/logrotate.d/nginx

Cronjobs fuer Wartungsaufgaben

crontab -e
# Taeglich um 3 Uhr: Datenbank-Backup
0 3 * * * /usr/bin/mysqldump --single-transaction meinedatenbank | gzip > /backup/db_$(date +\%Y\%m\%d).sql.gz

# Woechentlich: Alte Backups loeschen
0 4 * * 0 find /backup/ -name "db_*.sql.gz" -mtime +30 -delete

# Stundlich: Festplattenbelegung loggen
0 * * * * df -h >> /var/log/diskusage.log

8. Haeufige Probleme und Loesungen

502 Bad Gateway bei Nginx

502 bedeutet, nginx kann nicht mit dem Backend (PHP-FPM, Node.js etc.) kommunizieren. Pruefe: Laeuft der PHP-FPM Prozess? (systemctl status php8.3-fpm) Ist der Socket-Pfad korrekt? (ls /var/run/php/)

Kein Speicherplatz mehr (No space left on device)

# Groesste Verzeichnisse finden
du -sh /* 2>/dev/null | sort -rh | head -10

# Groesste Log-Dateien finden
find /var/log -type f -name "*.log" | xargs du -sh | sort -rh | head -10

# Alte Pakete aufraumen
apt autoremove --purge && apt clean

Server antwortet sehr langsam

# Last-Average pruefen (Zahl > Anzahl CPU-Kerne = Problem)
uptime

# Prozesse mit hoher CPU
top -bn1 | grep -v "0.0" | head -20

# Speicher pruefen
free -h
Empfehlung: Welche VPS-Anbieter fuer Einsteiger?
  • Hetzner Cloud – Beste Preis-Leistung, exzellente API, deutsche Rechenzentren. CX22 (2 vCPU, 4 GB RAM) ab 3,79 EUR/Monat
  • netcup VPS – Guenstig, eigene Rechenzentren in Deutschland, gutes Preis-Leistung. VPS 500 G11 ab 2,99 EUR/Monat
  • Contabo – Viel RAM und Speicher fuer wenig Geld, aber Support langsamer. VPS S ab 4,50 EUR/Monat

VPS und Root-Server vergleichen

Vergleiche Anbieter nach CPU, RAM, Speicher, Netzwerk und Preis fuer deinen Root-Server.

Anbieter vergleichen Domain suchen