
Docker Compose auf dem VPS: Webserver, Datenbank & Reverse Proxy richtig betreiben
Praxisnaher Guide für Docker Compose auf dem VPS: Webserver, Datenbank, Reverse Proxy, TLS, Backups, Updates und Sicherheit richtig planen und betreiben.
Der LEMP Stack ist eine bewährte Kombination aus vier Open-Source-Technologien, die zusammen eine leistungsstarke Webserver-Umgebung bilden. Das Akronym steht für Linux als Betriebssystem, Nginx (ausgesprochen "Engine-X") als Webserver, MySQL oder MariaDB als Datenbanksystem und PHP als serverseitige Skriptsprache. Diese Kombination bildet das Rückgrat unzähliger Webanwendungen, von WordPress und Magento bis hin zu individuellen Laravel- und Symfony-Projekten.
Im Vergleich zum klassischen LAMP-Stack (mit Apache) bietet LEMP eine deutlich höhere Performance bei der Auslieferung statischer Inhalte und eine bessere Skalierbarkeit unter Last. Nginx arbeitet mit einem ereignisgesteuerten (event-driven) Architekturmodell, das tausende gleichzeitige Verbindungen mit minimalem Ressourcenverbrauch verarbeiten kann. Gerade auf kleinen VPS-Instanzen mit 1–4 GB RAM ist dies ein entscheidender Vorteil.
Im Jahr 2026 hat sich der LEMP-Stack als Quasi-Standard für hochperformante Webhosting-Lösungen etabliert. Die aktuellen Versionen – PHP 8.4, MariaDB 11.x, Nginx 1.26+ und Linux-Distributionen wie Ubuntu 24.04 LTS oder Debian 12 – bilden eine moderne, zukunftssichere Grundlage. Diese Anleitung führt dich Schritt für Schritt durch die komplette Einrichtung, von der Servervorbereitung bis zum produktiven Betrieb mit SSL-Verschlüsselung und Performance-Tuning.
Die nachfolgende Tabelle zeigt die Hauptkomponenten des LEMP-Stacks und ihre jeweilige Aufgabe:
| Komponente | Software | Hauptaufgabe | Aktuelle Version 2026 |
|---|---|---|---|
| L – Linux | Ubuntu / Debian | Betriebssystem und Basis | Ubuntu 24.04 LTS, Debian 12 |
| E – Engine-X | Nginx | Webserver & Reverse Proxy | 1.26.x (stable) |
| M – MySQL/MariaDB | MariaDB | Datenbankmanagementsystem | 11.4 LTS |
| P – PHP | PHP-FPM | Skript-Engine für dynamische Inhalte | 8.4 (oder 8.3 LTS) |
Bevor du mit der Installation des LEMP-Stacks beginnst, solltest du sicherstellen, dass dein VPS die technischen Mindestanforderungen erfüllt. Für eine produktive Umgebung empfehlen wir mindestens 2 CPU-Kerne, 2 GB RAM und 20 GB SSD-Speicher. Für stark frequentierte Webseiten oder E-Commerce-Plattformen sind 4 CPU-Kerne und 4–8 GB RAM ratsam. Die meisten Anbieter wie Hetzner, Netcup, IONOS oder DigitalOcean bieten entsprechende Tarife bereits ab 4–8 Euro pro Monat an.
Du benötigst zudem einen SSH-Zugang mit Root- oder Sudo-Rechten. Moderne VPS-Instanzen werden in der Regel mit einem Cloud-Init-Setup ausgeliefert, bei dem du dich direkt als root oder einen vom Provider definierten Benutzer (z. B. ubuntu oder debian) per SSH anmelden kannst. Achte darauf, dass dein DNS-Eintrag (A-Record) für die Domain bereits auf die IP-Adresse deines VPS zeigt, damit später Let's Encrypt korrekt funktioniert.
Folgende Tools sollten auf deinem lokalen Rechner vorhanden sein, um die Installation durchzuführen:
Die nachstehende Tabelle gibt einen Überblick über empfohlene Mindestkonfigurationen je nach Einsatzzweck:
| Einsatz | CPU | RAM | Speicher | Traffic |
|---|---|---|---|---|
| Kleine Website / Blog | 1–2 Kerne | 1–2 GB | 20 GB SSD | 1–2 TB |
| Mittlere Webanwendung | 2–4 Kerne | 4 GB | 40 GB SSD | 4 TB |
| Shop / Enterprise | 4+ Kerne | 8+ GB | 80+ GB NVMe | Unlimitiert |
| Entwicklungsumgebung | 1 Kern | 1 GB | 10 GB SSD | 500 GB |
Der erste Schritt nach dem Login auf einem neuen VPS ist die Aktualisierung des Systems und das Einspielen aller Sicherheitspatches. Ein frisch aufgesetzter Server sollte nie ohne vorheriges Update produktiv betrieben werden, da bekannte Schwachstellen in veralteten Paketen ein Einfallstor für Angreifer darstellen. Verbinde dich zunächst per SSH mit deinem Server und führe das Update aus.
Für Ubuntu 24.04 LTS:
sudo apt update && sudo apt upgrade -y
sudo apt install -y software-properties-common curl wget git ufw
Für Debian 12:
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget git ufw ca-certificates apt-transport-https lsb-release
Nach dem Update empfehlen wir, einen neuen Benutzer mit eingeschränkten Rechten anzulegen und den direkten Root-Login per SSH zu deaktivieren. Dies ist eine der wichtigsten Sicherheitsmaßnahmen, da Brute-Force-Angriffe auf den Root-Account zu den häufigsten Angriffsszenarien gehören. Erstelle einen neuen Benutzer und konfiguriere den SSH-Zugang sicher.
sudo adduser deploy
sudo usermod -aG sudo deploy
sudo mkdir -p /home/deploy/.ssh
sudo cp ~/.ssh/authorized_keys /home/deploy/.ssh/
sudo chown -R deploy:deploy /home/deploy/.ssh
sudo chmod 700 /home/deploy/.ssh
sudo chmod 600 /home/deploy/.ssh/authorized_keys
Im nächsten Schritt wird die SSH-Konfiguration gehärtet. Öffne die Datei /etc/ssh/sshd_config und passe folgende Parameter an:
Port 2222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2
Starte den SSH-Dienst neu, damit die Änderungen wirksam werden. Wichtig: Lasse die alte SSH-Session offen, bis du die neue Konfiguration getestet hast, sonst sperrst du dich möglicherweise aus.
sudo systemctl restart sshd
sudo systemctl status sshd
| Sicherheitsmaßnahme | Status | Empfehlung 2026 |
|---|---|---|
| Root-Login per SSH | Pflicht | Deaktivieren |
| Passwort-Authentifizierung | Pflicht | Nur SSH-Keys |
| SSH-Port | 22 (Standard) | Auf >1024 ändern |
| Fail2Ban | Optional | Dringend empfohlen |
| Automatische Updates | Optional | Aktivieren |
Nginx (Engine-X) ist das Herzstück des LEMP-Stacks und dient als Webserver, Reverse Proxy und Lastverteiler. Im Vergleich zu Apache verarbeitet Nginx Anfragen asynchron und deutlich ressourcenschonender, was ihn zur ersten Wahl für hochfrequentierte Webseiten macht. Die Installation erfolgt aus den offiziellen Repositories, um stets die aktuelle stabile Version zu erhalten.
Installiere Nginx auf Ubuntu oder Debian mit folgendem Befehl:
sudo apt install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
sudo systemctl status nginx
Nach der Installation lauscht Nginx standardmäßig auf Port 80 und liefert die Default-Website unter /var/www/html aus. Überprüfe die Installation, indem du die IP-Adresse deines Servers im Browser aufrufst – du solltest die Standard-Nginx-Willkommensseite sehen. Falls die Seite nicht lädt, prüfe mit sudo ufw status, ob die Firewall den Port 80 blockiert.
Die Hauptkonfigurationsdatei von Nginx befindet sich unter /etc/nginx/nginx.conf. Für die meisten Anwendungsfälle empfehlen wir, eine modulare Struktur zu verwenden, bei der einzelne Webseiten als separate "Server Blocks" (vHosts) in /etc/nginx/sites-available/ definiert und über symbolische Links in /etc/nginx/sites-enabled/ aktiviert werden. Diese Struktur erleichtert die Verwaltung mehrerer Domains erheblich.
Eine optimierte Basiskonfiguration der nginx.conf für 2026 könnte wie folgt aussehen:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
error_log /var/log/nginx/error.log warn;
events {
worker_connections 2048;
multi_accept on;
use epoll;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
server_tokens off;
client_max_body_size 64M;
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
access_log /var/log/nginx/access.log main;
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml application/json application/javascript application/xml+rss application/atom+xml image/svg+xml;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Teste die Konfiguration mit sudo nginx -t, bevor du Nginx neu startest. Dies ist essenziell, da Syntaxfehler den Server stoppen können.
Als Datenbanksystem kommt im LEMP-Stack typischerweise MariaDB zum Einsatz – ein vollständig Open-Source-Drop-in-Ersatz für MySQL, der von der Community weiterentwickelt wird. MariaDB bietet eine bessere Performance, zusätzliche Storage-Engines und eine aktivere Release-Politik als das kommerzielle MySQL von Oracle. Für die meisten Anwendungen ist MariaDB die empfohlene Wahl.
Installation auf Ubuntu 24.04 oder Debian 12:
sudo apt install -y mariadb-server mariadb-client
sudo systemctl enable mariadb
sudo systemctl start mariadb
sudo systemctl status mariadb
Direkt nach der Installation solltest du das mitgelieferte Sicherheitsskript ausführen, um Standardrisiken zu eliminieren. Das Skript entfernt anonyme Benutzer, deaktiviert den Remote-Root-Login und entfernt die Test-Datenbank:
sudo mysql_secure_installation
Beantworte die interaktiven Fragen wie folgt:
Anschließend erstellst du eine dedizierte Datenbank und einen Benutzer für deine Webanwendung. Aus Sicherheitsgründen

Praxisnaher Guide für Docker Compose auf dem VPS: Webserver, Datenbank, Reverse Proxy, TLS, Backups, Updates und Sicherheit richtig planen und betreiben.