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:
| Eigenschaft | Shared Hosting | VPS | Dedicated Server |
|---|---|---|---|
| Ressourcen | Geteilt, begrenzt | Garantierte vCPUs/RAM | Dedizierte Hardware |
| Root-Zugang | Nein | Ja | Ja |
| Betriebssystem | Vorgegeben | Frei waehlbar | Frei waehlbar |
| Administration | Hosting-Panel | Komplett selbst | Komplett selbst |
| Preis ab | 1-5 EUR/Monat | 3-15 EUR/Monat | 30-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
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
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
- 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