WordPress in Docker inkl. HTTPS Let's Encrypt-Setup

 

Die zurzeit wohl am weitesten verbreitete Blogging-Software WordPress kann unter anderem einfach und kostengünstig in Docker-Containern betrieben werden. Als Server bietet sich dafür ein virtueller Server oder Cloud-Server eines bekannten Hosting-Providers an, siehe auch: Providerwechsel HostEurope vs Hetzner, vServer vs Cloud-Server. Wer den Betrieb eines eigenen Webservers nicht scheut, kann mit dem hier vorgestellten Setup darauf eine oder mehrere WordPress-Seiten inklusive kostenlosem https-Zertifikat betreiben. Die Kosten eines virtuellen Servers starten ab 4 € pro Monat, was für den Betrieb einer einzelnen Website bereits relativ günstig ist.

Profil:

Software WordPress
Hersteller https://wordpress.org
aktuelle Version 6.4.3
(gefunden: 31.01.2024)

Docker Basics

Docker ermöglicht es, Services oder Applikationen per Befehl in einem sogenannten Container zu starten.
Ein Container ist eine vom Betriebssystem (OS) unabhängige isolierte Umgebung:
Beim ersten Start eines Containers, lädt Docker selbstständig alle notwendigen Quellen
aus dem Internet.
Docker kann unter Windows, macOS oder einer Linux-Distribution installiert werden,
siehe auch: Docker

Damit WordPress sicher vom Internet erreicht werden kann, setze ich Traefik als Let's Encrypt Reverse-Proxy ein. Der Reverse-Proxy stellt eine verschlüsselte HTTPS-Verbindung zur Verfügung und ermöglicht es mehrere Websites auf einem Server zu betreiben.

Alternativ zu einem Reverse-Proxy kann auch ein Cloudflare-Tunnel für das Veröffentlichen von Webservices aus dem eigenen Netzwerk verwendet werden:

Schritt für Schritt WordPress in Docker inklusive Zugriff vom Internet

Hardwareanforderung:
  1. Für die Docker-Installation kann eine nahezu beliebige Hardware verwendet werden. Zum Beispiel ein virtueller Server eines Providers, oder für zu Hause: ein Mini-PC, Notebook, MAC, ein NAS: QNAP, Synology oder eine andere Hardware mit x68-64 Architektur auf der sich Windows oder Linux installieren lässt.

Schematische Darstellung: Zugriff vom Internet
Voraussetzungen für den Internetzugriff:
  1. Eigene registrierte Domain, siehe Domain und dessen Verwaltung.
  2. Cloudflare oder Reverse Proxy:
    1. Cloudflare-Tunnel Service
    2. oder alternativ:
    3. Port-Forwarding und Reverse Proxy mit Let's Encrypt-Zertifikat
    siehe auch: Cloudflare oder Reverse Proxy
Das eigentliche Docker Setup für WordPress:
  1. docker-compose.yml anlegen und anpassen
  2. Container starten und 
  3. Einrichten

WordPress Docker Compose

Um WordPress mittels docker compose zu starten, kann das offizielle Docker WordPress-Image und als Datenbank MySQL verwendet werden. Beide Images können mit einer simplen docker-compose.yml Datei heruntergeladen, erstellt und gestartet werden. Die Datei kann mit einem beliebigen Texteditor wie folgt befüllt und dann angepasst werden:

Dateiname: docker-compose.yml, Inhalt:

[+]
services:
  wordpress:
    image: wordpress
    restart: always
    expose:
      - 80
   #Für einen direkten Test-Zugriff, in den folgenden 2 Zeilen "#" entfernen. Aufruf: http://localhost:83 oder http://ServerIP:83
    #ports:   
      #- "83:80" 
    environment:
      WORDPRESS_DB_HOST: wordpress_db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb

   #Labels für ReverseProxy, siehe: https://www.libe.net/traefik
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.wordpress.rule=Host(`wp.domain.tld`)"      
      - "traefik.http.routers.wordpress.entrypoints=web"
      - "traefik.http.routers.wordpress.entrypoints=websecure"
      - "traefik.http.routers.wordpress.tls.certresolver=myresolver"
      - "traefik.http.services.wordpress.loadbalancer.server.port=80"

    volumes:
      - wordpress:/var/www/html

  wordpress_db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - wordpress-db:/var/lib/mysql

volumes:
  wordpress:
  wordpress-db:

#Ohne dem Einsatz eines Reverse Proxy (https://www.libe.net/traefik) fehlt voraussichtlich das Netzwerk webproxy 
#und die folgenden Zeilen können entfernt oder auskommentiert werden. Alternativ kann das Netzwerk mit "docker network create webproxy" erstellt werden
networks:
  default:
    name: webproxy
    external: true

Für einen direkten Zugriff über die IP-Adresse oder localhost - auch ohne Reverse Proxy, DNS oder öffentlicher IP - kann die auskommentierte Port-Einstellung für Testzwecke aktiviert werden, indem „#“ vor „ports“ und „-"83:80"“ entfernt wird.

Damit der Internetzugriff über den Traefik Reverse Proxy funktioniert, muss in den Labels die Domäne mit den zuvor erstellten DNS-Einträgen ersetzt werden (im Beispiel: wp.domain.tld). Das Beispiel verwendet Docker Volumes und keine Bind-Mounts für das permanente Speichern der Daten. Siehe: Docker Daten speichern: Docker Volumes vs. Host-Ordner

Container starten

Der Start erfolgt aus dem Ordner der docker-compose.yml-Datei mit dem Befehl„"docker-compose up“:

docker-compose up -d

Inbetriebnahme / erster Aufruf der Weboberfläche

Beim Aufruf der angegebenen Domain (https://wp.domain.tld) meldet sich das WordPress-Setup. Für einen Testbetrieb auf dem eigenen Rechner und dem Aktivieren von Port 83 kann der Aufruf zudem direkt ohne Internet über die URLs http://localhost:83 oder http://ServerIP:83 erfolgen.

https://wp.domain.tld/wp-admin/ :

Docker-Logs anzeigen

Sollte an dem Setup etwas nicht funktionieren, lohnt sich ev. ein Blick in die Logdateien des Web-Containers:

docker logs wordpress_wordpress_1 -f

Docker Admin-Oberfläche

Für ein einfaches Verwalten der Docker Container über eine Weboberfläche, siehe auch: Docker Admin-Oberfläche: Portainer Community Edition

positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE für deine Bewertung!

Aktualisiert: 31.01.2024 von Bernhard | Translation English |🔔 | Kommentare:0

Home Assistant: Docker Inbetriebnahme + SSL Internetzugriff | Container | Bitwarden in Docker betreiben - Setup Schritt für Schritt
Webhosting | Kein wp-admin? Warum diese Site kein WordPress verwendet.

Top-Artikel in diesem Bereich


Bitwarden in Docker betreiben - Setup Schritt für Schritt

Bitwarden ist ein webbasierter Passwort-Manager, ähnlich LastPass, aber Open Source und der Möglichkeit diesen selbst zu betreiben (hosten). Wie sich Bitwarden im Vergleich zu anderen Passwort-Managern einordnet, habe ich auf folgender Seite überlegt: Passwort-Manager sicher? KeePass vs. LastPass vs. Bitwarden. Bitwarden besteht aus mehreren Services, welche über verschiedene Container bereitgestellt werden können. Das relativ aufwändige Setup wurde mit "Bitwarden Unified" speziell für ein Selbs...


ioBroker installieren - Docker

Mit ioBroker können verschiedene Automatisierungslösungen oder Geräte in einem System zusammengefasst werden. Um bestimmte Gateways oder Geräte ansprechen zu können, werden in ioBroker verschiedene Adapter verwendet.


Inbetriebnahme Zigbee2MQTT in Docker - Schritt für Schritt

Zigbee2MQTT ist eine Open-Source Zigbee-Bridge welche sich, dank dem Netzwerkprotokoll MQTT, leicht in bestehende Smarthome-Lösungen integrieren lässt. Als Beispiel kann Zigbee2MQTT kombiniert mit MQTT - Broker  Mosquitto und Home-Assistant Daten der Zigbee-Geräte erfassen, anzeigen, aufzeichnen und diese steuern. Das hier beschriebene Setup verwendet Docker als Basis. Herstellerseite: https://www.zigbee2mqtt.io

Fragen / Kommentare


Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu Mehr Details