Ich habe bereits schon hier eine Anleitung geschrieben, wie ihr WordPress normal „von Hand“ installieren könnt. Nun zeige ich euch, wie ihr dies in wenigen Minuten mit Docker realisiert. Traefik dient uns hier als Reverse Proxy und stellt später den Dienst verschlüsselt per TLS bereit.
Datum | Änderungen |
---|---|
01.04.2020 | Anleitung erstellt. |
13.04.2020 | Server reagiert jetzt auch auf “www.” |
27.04.2020 | Traefik “secHeader” hinzugefügt. |
11.08.2022 | Link auf neue Traefik Anleitung, Docker Compose angepasst, verwendet nun MariaDB in neuer Version statt MySQL, Kapitel 5 hinzugefügt |
29.05.2023 | Anpassung an neue Traefik Anleitung |
Als Grundlage meiner Anleitung dient die offizielle WordPress Anleitung für Docker.
0. Grundvoraussetzung
- Docker & Docker Compose v2 (Debian / Ubuntu)
- TRAEFIK V2 + 3 – REVERSE-PROXY MIT CROWDSEC IM STACK EINRICHTEN
1. Ordner anlegen
Zuerst legen wir uns passende Ordner-Strukturen an.
mkdir -p /opt/containers/wordpress/{database,app}
2. Docker Compose anlegen
Nun legen wir die eigentliche Docker Datei an. Hierfür habe ich mir die offizielle WordPress Compose genommen und diese abgeändert für Traefik.
nano /opt/containers/wordpress/docker-compose.yml
Inhalt
version: '3.1' services: wordpress: image: wordpress restart: unless-stopped container_name: wordpress environment: WORDPRESS_DB_HOST: wordpress-db WORDPRESS_DB_USER: exampleuser ## Hier Benutzer eingeben ## WORDPRESS_DB_PASSWORD: examplepass ## Hier Passwort eingeben ## WORDPRESS_DB_NAME: wordpress volumes: - ./app:/var/www/html labels: - "traefik.enable=true" - "traefik.http.routers.wordpress.entrypoints=websecure" - "traefik.http.routers.wordpress.rule=Host(`wordpress.euredomain.de`)" - "traefik.http.routers.wordpress.middlewares=default@file" - "traefik.http.routers.wordpress.tls=true" - "traefik.http.routers.wordpress.tls.certresolver=http_resolver" - "traefik.http.routers.wordpress.service=wordpress" - "traefik.http.services.wordpress.loadbalancer.server.port=80" - "traefik.docker.network=proxy" networks: - proxy - default wordpress-db: image: mariadb:10.6-focal container_name: wordpress-db restart: unless-stopped environment: MYSQL_DATABASE: wordpress MYSQL_USER: exampleuser ## Hier selben Benutzer eingeben ## MYSQL_PASSWORD: examplepass ## Hier selbes Passwort eingeben ## MYSQL_RANDOM_ROOT_PASSWORD: '1' volumes: - ./database:/var/lib/mysql networks: - default networks: proxy: external: true
Notwendige Anpassungen:
- MySQL Passwort ändern
- MySQL User ändern
- eure Domain bei Traefik anpassen („wordpress.euredomain.de“)
Wenn ihr WordPress auf eurer “Hauptdomain” haben wollt, so gebt ihr folgendes ein:
"traefik.http.routers.wordpress.rule=Host(`www.euredomain.de`,`euredomain.de`)"
3. WordPress starten
WordPress startet ihr wie gewohnt mit folgendem Befehl:
docker compose -f /opt/containers/wordpress/docker-compose.yml up -d
4. WordPress einrichten
Wenn ihr nun auf “wordpress.euredomain.de” geht, dann solltet ihr direkt zur Konfiguration kommen. Hier könnt ihr dann eure Sprache wählen sowie einen Administrator Benutzer erstellen.
5. Absichern mit CrowdSec
Nachdem ihr WordPress installiert habt, könnt ihr dies mit CrowdSec noch zusätzlich absichern. Wie ihr das innerhalb weniger Minuten macht, könnt ihr hier lesen.
6. Quellen
https://hub.docker.com/_/wordpress
Ich habe mich an die Anleitung gehalten. Es startet auch alles ohne eine Fehlermeldung.
Wenn ich dann meine Adresse eingebe http://www.meinedomain.de (ist angepasst)
Dann bekomme ich folgende Fehlermeldung
Error establishing a database connection
In den Logs tauchen auch keine Fehler auf.
Das komische ist, dass bei einer Installation es plötzlich funktioniert hat. Bei einer zweiten noch nicht.
ich habe mal das Dockercompose file umgeschrieben und die neuste Version von MariaDB zu verwenden.
Ebenso nutze ich das WordPress docker Image mit php 8.2, da php 8.2 um weiten schneller ist als 8.0
Zudem hat man jetzt die Möglichkeit, die PHP Einstellungen anzupassen.
Hier die beiden files:
https://gist.github.com/gOOvER/497e4445f5267fcbf3ec2cd46f1b138d
ihr müsst einfach eine Datei names wordpress.ini im gleichen verzeichnis erstellen, wo auch die docker-compose.yml drin ist
Christian vielleicht magst das übernehmen
Ich würde gerne den Zugang zu der wp-login.php-Seite auf bestimmte IPs beschränken, bekomme aber immer die interne IP angezeigt. Wie komme ich aus der WP-Instanz heraus an die IP-Adresse der Clients? Die Einschränkung findet bei mir in der .htaccess statt.
Hallo erstmal vielen Dank für die Anleitung.
Hat jemand von euch das diesen Stack schon mal um eine Redis für Content Caching erweitert?
Wenn ja wäre ich um jegliche Hilfestellung dankbar.
Hallo Christian,
Deine Anleitungen sind super, danke dafür. Traefik, Crowdsec und Nextcloud laufen ohne Probleme. Schwierigkeiten habe ich mit WordPress. Das will sich nicht mit der Datenbank verbinden. In Traefik werden keine Fehler angezeigt, die docker compose habe ich schon vielfach durchgeguckt, finde aber auch da keinen Fehler (URL, DB Name und User etc.). Hast Du/ habt Ihr ne Idee, woran es liegen könnte? Vielen Dank schonmal.
Hallo,
vielen Dank für die Tollen Anleitungen. Bisher hat alles einwandfrei geklappt!
bei WordPress bin ich allerdings auf ein Problem gestoßen.
Traefik gibt mit den Fehler, das die middleware default@file nicht geht weil es diese Datei nicht gibt. Bisher habe ich noch keine Lösung gefunden.
Kennst du eine Lösung oder kennt jmd aus der Community eine?
Besten Dank im Voraus
Hallöchen, vielen Dank für deine tolle Anleitung!
Ich hätte ein Frage bzgl. einer Weiterleitungsregel in Traefik.
Ich habe in der docker-compose.yml wie beschrieben sowas: “traefik.http.routers.wordpress.rule=Host(
www.euredomain.de
,euredomain.de
)”.Zusätzlich zur Erreichbarkeit auf http://www.euredomain.de und euredomain.de, füge ich weitere Domains der Liste hinzu z.B. “traefik.http.routers.wordpress.rule=Host(
www.euredomain.de
,euredomain.de
,www.nocheinedomain.de
,nocheinedomain.de
)”.Die Frage: ich möchte, dass immer auf eine bestimmte Domain aus der Liste weitergeleitet wird. Also bspw. rufe ich http://www.nocheinedomain.de im Browser auf und möchte (immer) weitergeleitet werden auf euredomain.de. Ich habe bereits mehrfach etwas von regex-middlewares gelesen, bin aber leider nicht weitergekommen. Hast du hier Erfahrungen oder Ideen zur Lösung?
Ich würd mich sehr freuen! Danke!
Hallo, was muss ich tun damit ich die Anleitung mit Ubuntu 22.04.1 LTS verwenden kann?
Der Zugriff auf die Seite wird verweigert.
Fehlermeldung:
Die unsicheren Passwörten von hier wurden nicht geändert, ich teste nur.
Diese Anleitung habe ich für Traefik genommen: https://goneuland.de/traefik-v2-reverse-proxy-fuer-docker-unter-debian-10-einrichten/
Meine Basissystem ist Ubuntu 22.04.1 LTS.
https://goneuland.de/docker-docker-compose-v2-auf-ubuntu-22-04-lts-installieren/
Liegt es evtl. an meinem Docker Compose V2?
Warum gibt mir Portainer “wordpress mariadb:10.6.4-focal” aus, wofür steht focal?
Traefik, Portainer und Bitwarden konnte von mir erfolgreich installiert werden.
Danke
Thile