← Übersicht  ·  Skripte & Dateien  ·  Webseite · Hetzner Cloud + CloudPanel

WordPress auf Hetzner

Eine WordPress-Site auf einem eigenen Hetzner-Cloud-Server – mit CloudPanel (kostenloses, WordPress-optimiertes Panel), Cloudflare davor und automatischen Backups. Voller Zugriff, viel Leistung fürs Geld. Wer es lieber komplett gemanagt will: Hetzner Webhosting (Abschnitt am Ende).

Stand: 1. September 2026 ca. 30 Minuten ~6–10 €/Monat

Platzhalter einsetzen – werden in allen Befehlen unten ersetzt, nur im Browser, nichts wird gesendet

Das Prinzip

Ein Hetzner-Cloud-Server mit CloudPanel – einem kostenlosen, WordPress-optimierten Panel mit Web-Oberfläche (nginx, PHP-FPM, MySQL, Redis, Let’s Encrypt, Backups). Du legst die WordPress-Site per Klick an, Cloudflare sitzt als CDN (Content Delivery Network)/Schutz davor. Verwaltet wird über https://<IP>:8443 im Browser – SSH (Secure Shell) brauchst du fast nur für die Installation.

Besucher Browser → deine Domain
Hetzner-Server CloudPanel: nginx + PHP (PHP Hypertext Preprocessor) + MySQL + Redis
WordPress liegt hier

01 Webhosting oder Cloud?

Zwei grundverschiedene Wege. Diese Anleitung nimmt den zweiten.

Hetzner Webhosting (managed)Cloud-Server + CloudPanel (diese Anleitung)
Wer pflegt OS (Betriebssystem)/PHP/DB/BackupsHetznerdu (CloudPanel nimmt viel ab)
Preis1,90 – 19,90 €/Mon~6 – 10 €/Mon
root / SSH / WP-CLIeingeschränktvoll
Mehrere Sites, Staging, eigene PHP-Configbegrenztja
Leistung fürs Geldok (Shared, Prozess-Limits)deutlich mehr
Aufwand für dichminimaletwas Einrichtung + Updates im Blick behalten

Nur ein Blog / eine Firmenseite und du willst dich nicht kümmern → spring zu Hetzner Webhosting. Willst du Kontrolle, mehr Leistung, mehrere Sites oder einfach lernen → weiter hier.

02 Voraussetzung: Server-Basis

Konto, API-Token, hcloud CLI (Command-Line Interface) und SSH-Key – einmalig, in einer eigenen Anleitung.

Einmal einrichten

Server-Basis durcharbeiten (nur hcloud + ssh nötig). Domain: bei Hetzner registrieren (.de ~5–8 €/Jahr, .com ~10–15) oder eine vorhandene nutzen – in Schritt 7/8 zeigen wir sie auf den Server.

Firewall für WordPress

Firewall-Prinzip: Server-Basis. Anders als bei den Wegwerf-Servern: 80 & 443 offen für alle (die Webseite), 22 und 8443 (CloudPanel) nur von deiner IP (Internet Protocol).

Laptop · PowerShell
$ip = (Invoke-RestMethod 'https://ipv4.icanhazip.com').Trim()
hcloud firewall create --name wp-fw
hcloud firewall add-rule wp-fw --direction in --protocol tcp --port 80   --source-ips 0.0.0.0/0,::/0
hcloud firewall add-rule wp-fw --direction in --protocol tcp --port 443  --source-ips 0.0.0.0/0,::/0
hcloud firewall add-rule wp-fw --direction in --protocol tcp --port 22   --source-ips "$ip/32"
hcloud firewall add-rule wp-fw --direction in --protocol tcp --port 8443 --source-ips "$ip/32"
Was die Schalter bedeuten

Sechs Zeilen, vier Regeln – der ganze Unterschied steckt in --source-ips:

Schaltersteht beibewirkt
hcloud firewall create --name … zuerst Eine Hetzner-Firewall ist ein eigenständiges Objekt, kein Bestandteil des Servers: erst anlegen, dann Regeln hineinschreiben, dann an einen oder mehrere Server hängen. Sie wirkt im Netz vor dem Server – anders als ufw oder nftables, die auf dem Server selbst laufen. Deshalb kostet sie nichts an Rechenleistung und bleibt auch dann wirksam, wenn auf dem Server etwas schiefgeht. Frisch angelegt enthält sie keine Regeln und laesst damit nichts herein.
hcloud firewall add-rule <name> … je Regel Ein Aufruf je erlaubtem Port. Es gibt keine Reihenfolge und keine Priorität wie bei klassischen Firewalls: die Regeln sind eine reine Erlaubnisliste, alles Nicht-Genannte ist gesperrt. Ein Aufruf zweimal ausgeführt legt die Regel zweimal an – störend, aber harmlos.
Invoke-RestMethod … icanhazip.com
.Trim()
Zeile 1 Holt die eigene öffentliche IPv4-Adresse. Invoke-RestMethod statt Invoke-WebRequest, weil es direkt den Inhalt liefert statt ein Antwortobjekt. Das .Trim() ist keine Kosmetik: die Antwort endet mit einem Zeilenumbruch, und "1.2.3.4 /32" wäre für Hetzner eine ungültige Angabe.
--direction in alle vier Regeln Hetzner-Firewalls filtern nur eingehend; ausgehend bleibt grundsätzlich offen. Eine Richtung out gäbe es zwar, wird hier aber nicht gebraucht – der Server soll Updates ziehen dürfen.
--source-ips 0.0.0.0/0,::/0 Port 80, 443 Offen für alle. Beide Notationen müssen dastehen: 0.0.0.0/0 ist „jede IPv4-Adresse“, ::/0 dasselbe für IPv6. Wer nur die erste angibt, sperrt alle IPv6-Besucher aus – und merkt es lange nicht, weil der eigene Anschluss meist über IPv4 geht.
--source-ips "$ip/32" Port 22, 8443 /32 ist genau eine Adresse – die eigene. SSH und das CloudPanel-Backend sind damit für den Rest des Netzes unsichtbar, nicht nur passwortgeschützt. Die Anführungszeichen braucht PowerShell, um Variable und /32 zu einem Argument zu verbinden.
--port 8443 CloudPanel Das Verwaltungs-Backend. Es gehört aus demselben Grund wie SSH hinter die eigene IP: wer es erreicht, sieht die Anmeldemaske und kann sie beliebig oft ausprobieren.
Wenn die eigene IP wechselt

DSL-Anschluesse bekommen bei der nächtlichen Zwangstrennung eine neue Adresse, und aus einem fremden Netz stimmt sie ohnehin nicht mehr. Dann sperrt die Regel dich aus. Der Weg zurück führt nicht über SSH, sondern über die Hetzner-Konsole im Browser (oder hcloud firewall delete-rule vom selben Rechner aus, solange der Token noch gilt).

03 cloud-init-Datei

Nur System-Update und die nötigen Pakete – CloudPanel selbst installierst du in Schritt 6 per SSH, damit du den Installer-Hash prüfen kannst.

Datei · cloud-init.yaml
#cloud-config
package_update: true
package_upgrade: true
packages:
  - curl
  - wget
  - sudo

04 Server erstellen

CPX22 (2 vCPU / 4 GB) ist die praktische Untergrenze für CloudPanel + MySQL 8 + WordPress + Redis. CPX32 (4 / 8) für WooCommerce oder mehrere Sites.

Laptop · PowerShell
hcloud server create `
  --name wp-host `
  --type cpx22 `
  --image ubuntu-24.04 `
  --ssh-key laptop `
  --firewall wp-fw `
  --user-data-from-file cloud-init.yaml

hcloud server ip wp-host        # IP notieren -> oben ins Feld "Server-IP"

CloudPanel unterstützt ubuntu-24.04 / 22.04 und debian-12 / 11. IPv4 (Internet Protocol Version 4) ist dabei (~0,50 €/Monat).

05 CloudPanel installieren

CloudPanel bringt seinen eigenen nginx + Let's Encrypt mit und belegt Port 80/443 – ideal, wenn auf dem Server nur WordPress läuft. Sollen weitere Dienste (Vaultwarden, Nextcloud…) daneben, kann es nur einen Port-443-Besitzer geben: dann Traefik als Edge und WordPress als Compose-Stack, siehe Mehrere Dienste auf einem Server (WordPress+DB dort ausführlich).

Per SSH, mit Hash-Prüfung. Der Installer läuft ~5–10 Minuten und startet neu.

Server · bash (ssh root@<IP>)
apt update && apt -y upgrade

curl -sS https://installer.cloudpanel.io/ce/v2/install.sh -o install.sh
# aktuellen sha256-Hash von cloudpanel.io/docs (Hetzner-Installer) einsetzen:
echo "<HASH>  install.sh" | sha256sum -c

CLOUD=hetzner DB_ENGINE=MYSQL_8.4 bash install.sh
Danach

CloudPanel öffnen: https://<IP>:8443 (Browser-Warnung zum selbst-signierten Zertifikat kurz akzeptieren – wird in Schritt 10 ersetzt). Ersteinrichtung: Admin-Benutzer + starkes Passwort + 2FA aktivieren.

06 WordPress-Site in CloudPanel anlegen

Alles per Weboberfläche – CloudPanel installiert WordPress komplett.

  • CloudPanel → + Add SiteCreate a WordPress Site.
  • Domain: seb4u.com, Site User + Passwort, PHP 8.3, WordPress-Admin-Benutzer/Passwort/E-Mail.
  • CloudPanel legt Datenbank an, lädt WordPress, richtet nginx + PHP-Pool ein.
  • In den Site-Einstellungen: Redis aktivieren (für Object-Cache), Vary Cache / FastCGI-Cache nach Bedarf.
Noch nicht erreichbar

Die Site läuft, aber die Domain zeigt noch nicht auf den Server – das kommt jetzt. Vorschau vorher: hosts-Datei lokal auf <IP> seb4u.com zeigen lassen.

07 DNS setzen

Die Domain muss auf die Server-IP zeigen. Zwei A-Records:

TypNameWert
A@<IP>
Awww<IP>

Bei welchem Anbieter deine Domain liegt, dort in die DNS-Verwaltung. Bei Hetzner: DNS Console (gratis). Wenn du Cloudflare nutzt (Schritt 9), legst du die Records dort an und überspringst diesen Schritt hier.

Ausbreitung: meist Minuten, maximal ein paar Stunden. Prüfen: nslookup seb4u.com.

08 Cloudflare davor (empfohlen)

Kostenlos: CDN, Caching, DDoS-Schutz, echte IP des Servers versteckt, WAF-Grundregeln.

Domain schon bei Cloudflare?

Liegt seb4u.com bereits als Full-Zone bei Cloudflare (DNS + Registrar – siehe Anleitung Domain zu Cloudflare umziehen), dann entfallen die ersten drei Punkte (Konto, Domain hinzufügen, Nameserver). Du legst nur die A-Records in der bestehenden Zone an und stellst SSL (Secure Sockets Layer)/TLS (Transport Layer Security).

  • Nur falls noch nicht dort: Konto auf dash.cloudflare.comAdd a domainseb4u.comFree. Die zwei Cloudflare-Nameserver beim Domain-Anbieter eintragen. Warten bis Zone Active.
  • DNS → Records: seb4u.com und www als A-Record auf <IP>, Proxy (orange Wolke) an.
  • Cloudflare → SSL/TLS → Modus Full (strict).
Firewall-Feinschliff

Damit Besucher nur über Cloudflare kommen, in wp-fw die Ports 80/443 auf die Cloudflare-IP-Bereiche beschraenken (statt 0.0.0.0/0). Optional, aber sauber.

09 HTTPS

Gültiges Zertifikat für die Domain – und fürs CloudPanel selbst.

  • Für die WordPress-Site: CloudPanel → Site → SSL/TLSNew Let’s Encrypt Certificate (seb4u.com + www.seb4u.com). Klappt, sobald DNS auf den Server zeigt. Mit Cloudflare-Proxy: entweder Proxy kurz auf „grau“, Zertifikat holen, wieder „orange“ – oder ein Cloudflare Origin Certificate verwenden.
  • Fürs Panel (:8443): CloudPanel → Admin Area → Security → SSL/TLS, eigenes Zertifikat oder LE für eine panel.seb4u.com-Subdomain.
  • In CloudPanel je Site „Force HTTPS“ aktivieren.

10 WordPress einrichten & absichern

https://seb4u.com/wp-admin öffnen, mit den in Schritt 7 gesetzten Zugangsdaten anmelden.

  • PermalinksBeitragsname (Einstellungen → Permalinks).
  • Admin absichern: 2FA-Plugin (z. B. WP 2FA), starkes Passwort, Benutzername nicht admin. Login-Limit / Cloudflare-Rate-Limit für /wp-login.php.
  • Auto-Updates: für Minor-Core + Sicherheits-Plugins aktivieren. Major-Updates manuell nach Backup.
  • Caching: Plugin (WP Super Cache, W3 Total Cache oder LiteSpeed Cache) + Redis Object Cache-Plugin (nutzt das in Schritt 7 aktivierte Redis).
  • Aufräumen: ungenutzte Themes/Plugins löschen, XML-RPC per Plugin/Cloudflare sperren, Datei-Editor im Adminbereich abschalten (define('DISALLOW_FILE_EDIT', true); in wp-config.php).
Nicht vergessen (DE, öffentliche Seite)

Impressum und Datenschutzerklärung sind bei einer öffentlichen deutschen Website Pflicht (DDG + DSGVO) – sonst Abmahn-Risiko. Dazu: AVV (Auftragsverarbeitungsvertrag) mit Hetzner in der Console akzeptieren, DMARC (Domain-based Message Authentication, Reporting and Conformance)-Record setzen, Backup außer Haus. Vollständig: Grundausstattung-Checkliste.

11 Mailversand – Port 25 ist gesperrt

Wichtig bei Hetzner Cloud

Ausgehende Verbindungen auf Port 25 und 465 sind gesperrt (Spam-Schutz). WordPress kann also keine Mails direkt verschicken – Passwort-Reset, Kommentar-Benachrichtigungen, WooCommerce-Bestellbestätigungen kommen sonst nicht an. Lösung: ein SMTP-Relay über Port 587.

  • Kostenlosen/günstigen Versanddienst wählen: Brevo (300 Mails/Tag gratis), Mailgun, Amazon SES (Simple Email Service), Postmark. Dort die Domain verifizieren (SPF- + DKIM-Records ins DNS).
  • In WordPress ein Plugin: FluentSMTP (gratis) oder WP (WordPress) Mail SMTP (Simple Mail Transfer Protocol). Host = der SMTP-Server des Dienstes, Port 587, TLS, Benutzer/Passwort aus dem Dienst.
  • Testmail aus dem Plugin senden – muss ankommen und SPF=pass, DKIM=pass zeigen.

12 Backups

Drei Ebenen – je mehr, desto ruhiger schlaefst du.

  • CloudPanel-Backups: Admin Area → Backups – täglich, per rclone zu einer Hetzner Storage Box (~3,20 €/Monat für 1 TB) oder S3-kompatiblem Speicher. Sichert Dateien und Datenbanken.
  • Hetzner-Server-Backups: beim Server aktivieren (+20 % vom Serverpreis, pauschal) – automatische tägliche Voll-Snapshots, 7 Tage Aufbewahrung, werden beim Löschen des Servers mitgelöscht. Oder manuelle Snapshots (0,0143 €/GB/Monat, Stand Aug 2026, Verwaltung: Console → Images) vor größeren Änderungen – die bleiben, bis du sie löschst.
  • WordPress-Plugin (z. B. UpdraftPlus) zusätzlich in einen dritten Speicher – unabhängig vom Server, gut für „schnell mal eine Seite zurücksetzen“.
Testen

Ein Backup ist erst eins, wenn du es einmal zurückgespielt hast – am besten auf einer Wegwerf-Site oder einem Test-Server.

+ Kosten & Betrieb

Preise sind Richtwerte. Hetzner hat 2026 zweimal erhöht (zuletzt 15. Juni: CX/CAX +30–40 %, CPX/CCX über 100 %). Aktuelle Server-Preise, alle Nebenposten, ein Rechner und Beispielrechnungen stehen zentral in Kosten & Budget.

Posten~€/Tagca. €/Monat
Server CPX22 (2 vCPU / 4 GB) – CX23/CAX11 ~5,5–6 falls frei~0,64~19,5
Primary-IP (IPv4)~0,02~0,50
Server CPX32 (4 / 8) – statt CPX22, für WooCommerce / mehrere Sites~1,17~35,5
Hetzner-Server-Backups (+20 %)~0,03~1
Hetzner Storage Box 1 TB (für CloudPanel-Backups)~0,11~3,20
Domain (.de / .com)~0,02 / ~0,03~0,50 / ~1
Cloudflare Free / CloudPanel / SMTP-Free-Tier00
Realistische Summe~0,25–0,45~7 – 13
Anders als die Container-Anleitungen: kein Auto-Teardown

Eine WordPress-Site soll online bleiben – sie nachts zu löschen ergibt keinen Sinn. „Kosten im Griff“ heißt hier: richtig dimensionieren (klein anfangen, hcloud server change-type wenn nötig), Backups statt teurer Redundanz, und Cloudflare-Cache, damit ein kleiner Server viel Traffic verträgt.

Nur wenn es eine Test-/Staging-Site ist, die du bloss ab und zu brauchst: dann passt das cloud.ps1 aus den anderen Anleitungen (Snapshot + löschen + nachts Auto-Down) auch hier.

+ Alternative: Hetzner Webhosting (der fertige Plan)

Voll gemanagt: Hetzner betreibt Server, OS, PHP, MySQL, Backups, SSL. Panel konsoleH mit Ein-Klick-WordPress-Installer. Du kümmerst dich nur um WordPress selbst.

Tarif€/MonSpeicherMySQLPHP-Prozessefür
S1,9010 GB (Gigabyte)12knapp für WP
M4,9050 GB55Blog / Firmenseite
L9,90100 GB2010+ Redis, SSH – WooCommerce / plugin-lastig
XL19,90300 GB5020+ Telefon-Support
  • Dabei: unbegrenzt Postfaecher, tägliche Backups, Let’s-Encrypt-SSL, Varnish-Cache. Ab L auch Redis & SSH.
  • Nicht dabei: die Domain (separat bestellen).
  • Ablauf: Tarif buchen → in konsoleH Domain hinzufügen → App-Installer → WordPress → fertig. Mailversand geht über Hetzner (kein Port-25-Problem).
  • Grenzen: kein root, feste PHP-Config, Shared-CPU, Staging nur manuell.

Faustregel: Ein Blog / eine Firmenseite ohne Sonderwünsche → Webhosting M oder L. Mehrere Sites, viel Traffic, volle Kontrolle, Lernen → die CloudPanel-Anleitung oben.

+ Andere Anbieter

Der CloudPanel-Weg funktioniert auf jeder Ubuntu-/Debian-VM. Richtwerte für 2–4 vCPU / 4–8 GB:

AnbieterSitzca. €/MonBemerkung
HetznerDE (Deutschland) / FI (Finnland)4,50–7Diese Anleitung. 20 TB Traffic inkl.
netcupDE / AT~5–8Günstig, EU (Europäische Union), wenig bekannt.
ContaboDE~7–11Viel RAM (Random Access Memory)/Speicher fürs Geld, überbucht.
IONOS / StratoDE~4–12Auch fertige „Managed WordPress“-Tarife.
Managed WordPress (Raidboxes, Kinsta, WP Engine)DE / global~15–35Null Server-Arbeit, Staging, Experten-Support – deutlich teurer.
⌂ Cockpit