Du möchtest WordPress unter deiner Domain betreiben (oder erst einmal nur unter der IP deines Servers), mit HTTPS, hinter einem sauberen Reverse Proxy und in Docker, damit es nichts anderem in die Quere kommt. Das Rezept WordPress installieren von Server Manager erledigt all das in etwa 2–3 Minuten. Du beantwortest eine Frage (welche Domain), danach bestätigst du jeden Befehl, während der Chat ihn ausführt.
Was du am Ende hast
- Eine WordPress-6-Website in einem Docker-Container, die über ein privates Netzwerk mit einem MariaDB-11-Container spricht.
- Caddy (läuft bereits auf dem Host) als Reverse Proxy für deine Domain → den Container, mit automatisch ausgestelltem Let's Encrypt-HTTPS.
- Die Secrets der Website (Datenbankpasswort, die 8 WordPress-Salts) werden automatisch erzeugt und in
/opt/wordpress/.envgespeichert, mit Modus600und root als Eigentümer. Nichts davon liegt anderswo im Klartext. - Eine Workload-Karte auf deiner Startseite mit dem WordPress-Logo. Klicke auf
manage →, um die Tabs dieses Rezepts zu öffnen: WP-Admin · Plugins · Themes · Wartung · Status · Logs · Steuerung · Backup.
Voraussetzung — eine Domain (optional, aber empfohlen)
WordPress funktioniert zum Testen auch direkt unter einer reinen IP-Adresse. Für eine echte Website solltest du aber eine Domain mit HTTPS verwenden. Falls noch nicht geschehen, führe zuerst Domain verbinden aus — zeige mysite.com auf die IP dieses Servers und bestätige, dass DNS propagiert wurde. Der Installationsassistent funktioniert mit beidem, aber erst DNS, dann Installation ist der reibungslosere Weg: Caddy kann sofort ein TLS-Zertifikat ausstellen, wenn die Domain bereits hierher zeigt.
Wenn du im Moment nur eine IP hast, ist das in Ordnung — du kannst später eine Domain hinzufügen, ohne neu zu installieren: obere Leiste → → Domain hierher zeigen lassen. (Oder nutze die Schaltfläche Domain verbinden, die unten in der Aktionsleiste erscheint, wenn du auf eine Karte klickst, die noch keine Domain hat — derselbe Assistent, nur bereits auf diese Workload vorausgewählt.)
Der Ablauf
Drücke irgendwo im Chat /, um die Palette zu öffnen, ODER klicke unter dem Chat auf Alle Aktionen durchsuchen, ODER klicke oben in der Leiste auf Aktionen und wähle WordPress.
WordPress erscheint oben in der Palette als kuratierte Hier starten-Kachel und weiter unten außerdem in der Kategorie Web-Apps. Beide Einträge starten denselben Installationsablauf.
Hinweis für Server ohne Caddy. Wenn auf deinem Server statt Caddy bereits nginx, Apache oder Traefik läuft, ist das WordPress-Rezept „gesperrt“ — die Kachel zeigt ein Badge 💬 per Chat. Anklicken funktioniert trotzdem; Faro richtet WordPress dann nativ für deine Engine ein, statt Caddy hinzuzufügen. Siehe Warum Caddy? und Zu Caddy migrieren für den Hintergrund.
Nachdem du die Kachel angeklickt hast, übernimmt der Chat. Faros erste Nachricht ist ein kurzer Check („gibt es hier schon wordpress?“, „sind Ports 80/443 frei?“ usw.) plus eine kurze Frage:
Gib die Domain ein (z. B. mysite.com) — oder skip, wenn du zuerst unter der reinen IP testen möchtest. Dann senden.
Faro hält bei jedem Befehl an, der den Zustand des Servers verändert, und wartet auf deine Zustimmung. Der erste Satz ist normalerweise:
- (nur wenn es fehlt)
apt install docker.io docker-compose-plugin— Docker installieren. mkdir -p /opt/wordpress— Installationsverzeichnis.openssl rand -base64 32(DB-Passwort) undopenssl rand -base64 48× 8 (die WordPress-Salts)./opt/wordpress/docker-compose.ymlschreiben (fixiert aufwordpress:6+mariadb:11, benannte Volumes, internes Netzwerk, Port veröffentlicht auf127.0.0.1:<random>— niemals0.0.0.0)./opt/wordpress/.envmit allen Secrets schreiben,chmod 600.docker compose up -d— Container starten.- Caddyfile-Block für deine Domain →
https://mysite.com { reverse_proxy 127.0.0.1:<port> }→caddy reload.
Der genaue Text jedes Befehls ist sichtbar, bevor du ihn bestätigst. Du kannst Genehmigen, Überspringen (selten sinnvoll — meistens bricht dadurch die Installation) oder Abbrechen wählen (dann läuft nichts, und auf der Festplatte bleibt auch nichts zurück, was wir nicht aufräumen könnten).
Warum so viele Bestätigungen? Server Manager führt nichts Potenziell Destruktives aus, ohne dass du ausdrücklich zustimmst. Auch nicht bei einer Routineinstallation. Diese Reibung ist Absicht. Nach der ersten Installation weißt du, was dich erwartet; spätere Installationen fühlen sich schneller an, weil dir der Bestätigungsrhythmus vertraut ist.
Gesamtdauer der Installation inklusive Bestätigungen: meistens 2–3 Minuten. Der größte Teil davon ist der Docker-Download (beim ersten Installieren etwa 500 MB WordPress- + MariaDB-Images).
Wenn die Container laufen und Caddy neu geladen wurde, gibt Faro dir die URL:
Außerdem fragt Faro proaktiv nach: „Soll ich nächtliche Backups der Datenbank einrichten?“ Wähle Ja oder Nein — du kannst sie jederzeit später einrichten (siehe Backups).
Klicke auf die URL. Der eigene Installationsassistent von WordPress öffnet sich — die Einrichtung durch Server Manager ist abgeschlossen; ab hier arbeitest du direkt mit WordPress.
Lege den Seitentitel fest, wähle einen Admin-Benutzernamen (nicht „admin“ — nimm etwas, das weniger leicht zu erraten ist), setze ein starkes Admin-Passwort (oder lass WP eines erzeugen und speichere es in deinem Passwortmanager) und gib die Admin-E-Mail ein. Klicke auf WordPress installieren.
Die WordPress-Admin-Zugangsdaten sind NICHT dieselben wie dein Server Manager-Login. Sie liegen in der WordPress-Datenbank, getrennt von Server Manager. Wähle ein starkes Passwort und speichere es in einem Passwortmanager — ein vergessenes WP-Admin-Passwort lässt sich von Server Manager aus nicht ohne Datenbankeingriff wiederherstellen (der Chat kann das erledigen; siehe „Häufige Fragen“ unten).
Fertig. Melde dich bei /wp-admin/ an, schreibe deinen ersten Beitrag, installiere ein Theme, installiere Plugins — genau wie bei jeder anderen WordPress-Website.
Auf deiner Startseite erscheint jetzt eine Workload-Karte mit dem WordPress-Symbol und dem Titel deiner Website:
Klicke auf manage →, um das mit den Tabs dieses Rezepts zu öffnen:
- WP-Admin — ein Ein-Klick-Link zu
https://your-domain/wp-admin/. - Plugins — Liste der installierten Plugins mit Ein-Klick-Aktivieren / Deaktivieren / Aktualisieren / Löschen. (Neue Plugins fügst du weiterhin über WP-Admin hinzu — dort liegt der Plugin-Suchindex.)
- Themes — wie Plugins, nur für Themes.
- Wartung — drei Dinge in einem Tab: WordPress-Cache leeren (Neuaufbau beim nächsten Besuch erzwingen), Suchen & Ersetzen in der Datenbank (typischerweise zum Ändern der Website-URL — wp-cli-korrekt, damit serialisierte PHP-Daten nicht beschädigt werden; standardmäßig mit sicherer Dry-Run-Vorschau) und WordPress-Core aktualisieren (mit Backup-/Klon-Hinweis, bevor etwas geändert wird).
- Status / Logs / Steuerung / Backup — die universellen Tabs (jede Workload-Art hat diese).
Was genau installiert wurde
Zur Orientierung (du musst davon nichts anfassen — das Service-Panel kümmert sich um alles):
| Wo | Was |
|---|---|
/opt/wordpress/docker-compose.yml | Container-Definitionen (WordPress 6 + MariaDB 11) |
/opt/wordpress/.env | Secrets (DB-Passwort + 8 WP-Salts) — chmod 600, root als Eigentümer |
Benanntes Docker-Volume wp_data | WordPress wp-content (Uploads, Plugins, Themes) |
Benanntes Docker-Volume db_data | MariaDB-Datendateien |
Docker-Netzwerk wordpress_default | Internes Netzwerk, über das die beiden Container miteinander sprechen |
/etc/caddy/Caddyfile | Der Reverse-Proxy-Block für deine Domain (nur ein caddy reload von aktiv entfernt) |
| Caddy-Datenverzeichnis | Automatisch ausgestelltes Let's Encrypt-Zertifikat für deine Domain |
Der WordPress-Container veröffentlicht seinen Port auf 127.0.0.1:<random in 38000–39999> — nur für localhost. Caddy erreicht ihn über diesen lokalen Port; das öffentliche Internet sieht ausschließlich Caddy auf 80/443. Selbst wenn WordPress also eine Schwachstelle hätte, wäre der Container selbst nicht direkt erreichbar.
Häufige Fragen
Wo bekomme ich Plugins? Über die Suche in WordPress unter WP-Admin → Plugins → Add New, wie bei jeder normalen WP-Website. Nach der Installation zeigt der Tab Plugins im Service-Panel von Server Manager sie an, inklusive Ein-Klick-Aktivieren/Deaktivieren/Aktualisieren/Löschen.
**Kann ich wp-config.php bearbeiten?** Sie liegt im Container und wird bei docker compose up neu erzeugt. Eigene Änderungen gehören in /opt/wordpress/.env (die Secrets + Dinge, die WordPress über Umgebungsvariablen liest) oder in /opt/wordpress/docker-compose.yml (die Container-Definition selbst). Eine eigene Env-Variable hinzufügen: Frag Faro — „add WP_DEBUG=true to the wordpress container“ — und bestätige die Änderung.
Ich habe das Admin-Passwort verloren. Verwende WordPress’ Link „Passwort vergessen?“ nur, wenn du E-Mail von deiner Domain senden eingerichtet hast (sonst geht die E-Mail ins Leere). Frag stattdessen Faro: „reset the WordPress admin password.“ Faro führt ein sicheres Rotationsmuster direkt in der DB aus (das Klartextpasswort wird nie ausgegeben) und nennt dir danach einmalig das neue Passwort.
Ich habe auch den Admin-Benutzernamen vergessen. Frag Faro: „who's the WordPress admin?“ — Faro listet die Konten mit Admin-Rolle aus der Datenbank auf.
Kann ich mehrere WordPress-Websites auf demselben Server betreiben? Ja. Führe einfach das Rezept WordPress installieren erneut mit einer anderen Domain aus — Faro erkennt die vorhandene Installation unter /opt/wordpress/ (der Vorabcheck durchsucht docker ps nach wordpress) und schlägt ein kollisionsfreies Installationsverzeichnis vor (typischerweise /opt/wordpress-<short-name>/), damit die neuen Container, Volumes und der Caddy-Block nicht mit der ursprünglichen Installation kollidieren. Caddy verteilt anhand der Domain. Siehe Mehrere Websites auf demselben Server für die ausführliche Version.
WordPress ist langsam / der Arbeitsspeicher wird knapp. Jede Installation braucht im Leerlauf etwa 256–512 MB RAM (WordPress + MariaDB zusammen). Auf einem Server mit 1 GB kannst du eine Installation bequem betreiben; mit 2 GB zwei usw. Die Workload-Karte auf der Startseite zeigt den aktuellen RAM-Verbrauch — wenn er sich dem Gesamtspeicher des Servers nähert, ist es Zeit, den Server zu vergrößern oder schwere Websites auf größere Instanzen umzuziehen. Wenn speziell WP-Admin mitten in einer Aktion „Allowed memory size exhausted“ meldet, bitte Faro im Chat, PHPs memory_limit zu erhöhen — Faro bearbeitet die richtige Konfigurationsdatei im Container und startet neu.
Kann ich eine bestehende WordPress-Website hierher migrieren? Ja — dafür gibt es den Assistenten Bestehende Website hierher migrieren. Er kopiert die Dateien und die DB deiner Website von deinem alten Host und installiert sie hier über dasselbe Rezept.
Bekomme ich HTTPS ohne Domain? Nicht über Let's Encrypt (dort ist eine echte Domain erforderlich). Die Website wird unter http://<your-ip> per einfachem HTTP ausgeliefert, bis du eine Domain auf den Server zeigen lässt; danach wird HTTPS innerhalb von etwa 30 Sekunden automatisch ausgestellt.
Was hier NICHT abgedeckt ist
- WordPress-Multisite (Netzwerk) — das Rezept installiert eine Single-Site-WP. Multisite wird nach der Installation in WordPress selbst aktiviert, über Änderungen an
wp-config.php. Bitte Faro, es zu aktivieren; die Änderung liegt in der Env-Datei und in einem Flag in der WP-Datenbank. - Eigene WordPress-Themes/-Plugins, die mit deinem Code ausgeliefert werden — das Rezept installiert eine Standard-WP. Wenn du ein eigenes Theme + Plugins als Code hast, deploye sie über Bestehende Website hierher migrieren (aus deiner Entwicklungsumgebung) oder als Backup-Bundle über Aus einem Backup wiederherstellen.
- Härtung / WordPress-Sicherheitskonfiguration — das Rezept setzt vernünftige Defaults (zufällige Secrets, Port nicht öffentlich exponiert, Secrets in Env-Variablen). Dinge wie 2FA, Wordfence, Malware-Scans — installiere sie als Plugins in WordPress.
- E-Mails AUS WordPress senden — WP-Mail- oder Kontaktformular-Plugins brauchen einen SMTP/API-Endpunkt. Führe E-Mail von deiner Domain senden (Resend) aus und trage diese Zugangsdaten in ein WP-SMTP-Plugin ein.
Referenz
Standard-Installationspfade:
- Installationsverzeichnis:
/opt/wordpress/(oder/opt/wordpress-<suffix>/bei mehreren) - Compose-Datei:
/opt/wordpress/docker-compose.yml - Env / Secrets:
/opt/wordpress/.env - Caddy-Block:
/etc/caddy/Caddyfile— suche nach derreverse_proxy-Zeile deiner Domain
Container-Namen folgen dem Compose-Standardmuster <project>-<service>-<n> — bei modernem Compose v2 typischerweise wordpress-wordpress-1 (Web) und wordpress-db-1 (Datenbank); das ältere v1 verwendet _ als Trenner (wordpress_wordpress_1). Führe docker ps aus, um genau zu prüfen, was auf deinem Server läuft.
Interner Portbereich: 38000–39999 — das Rezept wählt zufällig einen freien Port aus und veröffentlicht ihn auf 127.0.0.1. Nur Caddy auf dem Host erreicht ihn; das öffentliche Internet nicht.
WordPress- + MariaDB-Versionen: auf die Major-Tags wordpress:6 und mariadb:11 festgelegt. Bugfix-Updates werden mit docker compose pull gezogen. Upgrades auf neue Major-Versionen (WP 6 → 7, MariaDB 11 → 12) sind eine separate Anfrage im Chat — manchmal brauchen sie DB-Migrationen.
Deinstallieren: Im manage →-Panel der Startseitenkarte gibt es unter Steuerung die Aktion Löschen. Sie stoppt die Container, löscht optional die benannten Volumes (dann verlierst du deine Daten) oder behält sie (damit du später neu installieren kannst) und entfernt den Caddy-Block. Außerdem gibt es unten in der Aktionsleiste einen Ein-Klick-Weg (Karte anklicken → Löschen).