Disclaimer
In diesem Post zeige ich dir, wie du einen Docker WordPress-Container mit einem SSL-Zertifikat versiehst.
Falls du keim Docker verwenden möchtest, folge dem Tutorial von Mikael/CrazyFinnishHacker.
Inhalt
Was brauche ich alles?
Um diesem Tutorial zu folgen brauchst du die folgenden Dinge:
- Einen Server
- Eine Domain
- Einen Account bei Cloudflare
Jeder mietbare Server sollte dabei den Grundanforderungen von Docker entsprechen, also mach dir keine Gedanken falls du nur den kleinsten Server gemietet hast. Das gilt allerdings nur solange, wie du nur deinen Blog betreiben willst. Solltest du noch mehr mit deinem Server vorhaben kann es sich lohnen, auch einen größeren Server zu mieten.
Einen Server direkt im Heimnetz kann ich nicht direkt empfehlen. Um diesen von außen zu erreichen musst du die entsprechenden Ports (in unserem Fall 80 [HTTP] und 443 [HTTPS]) freigeben und erlaubst so allen Randoms aus dem Internet direkt auf dein Heimnetz zuzugreifen.
Der Server
Als erstes richten wir auf deinem Server Docker ein. Docker hilft dir dabei, gegen kleine Performance-Einbußen, Services einfacher zu verwalten und zu konfigurieren. Dabei musst du kaum Rücksicht auf andere, schon laufende Prozesse, geben.
Verbinde dich via SSH mit deinem Server. Suche jetzt auf der Docker-Homepage nach deinem Betriebssystem und folge den Installationsschritten.
Die Domain
Achte beim mieten deiner Domain darauf, dass der Provider dich deine DNS-Einstellungen selber anpassen lässt. Sollte das nicht gehen, kannst du deine Domain immer zu einem anderen Provider umziehen. Suche dazu bei deinem aktuellen Provieder nach deinem Domain AuthCode und diese bei deinem neuen Provider an. Anschließend wird die Domain zu deinem neuen Provider umgezogen.
Und Cloudflare
Dieser Teil wird jetzt etwas komplizierter:
Melde dich als erstes in deinem Cloudflare Dashboard an und füge eine neue Domain hinzu. Gib hier deine aktuelle Domain an.
Wähle darunten den empfohlenen/recommended Modus aus. Dieser scannt deine Domain nach bereits bestehenden DNS-Records und übernimmt diese dann. Das dauert meist zwei Stunden bis zu einem Tag.
Jetzt klickst du auf deine Domain und wählst anschließend DNS/Records in der SideNav an. Dort prüfen wir, das es je einen A-Record für deine Domain, * und www gibt. In meinem Fall gibt es je eine Zeile für toobyte.de, * und www.
Sollten diese Einträge bei dir nicht existieren kannst du sie anlegen. Trage dafür den jeweiligen Namen in den Dialog ein, wähle A-Record aus und aktiviere den Switch unter “Proxy status”.
Jetzt wechseln wir auf die Seite [SSL/TLS]/Overview und konfigurieren unsere SSL/TLS connection. Dort wählst du unter Custom SSL/TLs einfach “Full (Strict)” aus.
Unter [SSL/TLS]/Origin Server erstellen wir uns jetzt ein neues Zertifikat. Dazu nutzt du am besten die vorausgewählten Einstellungen. Klickst du jetzt auf erstellen bekommst du einen Public-Key und einen Private-Key. Diese beiden Keys zusammen ergeben unser Zertifikat. Schließe diesen Tab nicht!
Erstelle auf deinem Server einen neuen Ordner in dem du alle Dateien für diese Tutorial speicherst.
cd ~
sudo mkdir dockerPress && cd dockerPress
sudo nano certs/<domain>.pem
sudo nano certs/<domain>.key
Kopiere jetzt den Inhalt des Public-Key in die .pem-Datei und den Private-Key in die .key-Datei.
Die Namen der beiden Dateien sollten dieses Format haben, nur eben mit deiner Domain:
- toobyte.de.pem
- toobyte.de.key
Jetzt erstellst du die Docker-Compose-Datei mit
sudo nano compose.yml
und fügst anschließend diesen Text ein
services:
db:
image: mysql:5.7
container_name: mysql
ports:
- 3306:3306
environment:
MYSQL_USER: notanotherwordpressuser
MYSQL_DATABASE: notanotherwordpressuser
MYSQL_PASSWORD: [redacted]
MYSQL_ROOT_PASSWORD: [redacted]
volumes:
- db_data:/var/lib/mysql
wordpress:
image: wordpress:latest
container_name: wordpress
depends_on:
- db
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: [redacted]
WORDPRESS_DB_NAME: [redacted]
WORDPRESS_DB_PASSWORD: [redacted]
volumes:
- ./wp-config.php:/var/www/html/wp-config.php
proxy:
image: nginx:latest
container_name: nginx_proxy
depends_on:
- wordpress
ports:
- 80:80
- 443:443
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
- ./certs:/etc/nginx/certs
volumes:
db_data:
Kopiere anschließend die Konfigurationsdatein für den Proxy (nginx.conf) und WordPress (wp-config.php) aus diesem GitHub-Repo auf deinen Server in das aktuelle Verzeichnis.
Achte darauf, dass du “toobyte.de.<pem,key>” mit deiner Domain ersetzt.
Du hast es geschafft!
Alles was du jetzt noch tun musst ist mit dem Befehl
docker compose up -d
alle Services zu starten
Jetzt kannst du deine Domain aufrufen und solltest dir dort deinen Admin-Account für WordPress erstellen können.