Mit Hilfe dieser Schritt für Schritt Anleitung kann unter Verwendung von Docker-Compose eine WordPress Instanz in unter 10 Minuten auf dem Raspberry Pi hochgezogen werden.
Vorbereitung / Anforderungen:
Zu allererst brauchen wir einen Domain Namen. Wenn du WordPress auf deinem Raspberry Pi von zu Hause aus hosten möchtest, wirst du sicherlich keine statische IP Adresse besitzen und musst demnach deinen Domainen Anbieter auch immer über deine sich ändernde dynamische IP Adresse berichten. Zum Glück bietet no-IP sowohl freie Domains als auch einen DDNS Service an, der sich regelmässig über ändernde IP Adressen informiert. Mein Router hatte sogar no-IP als DDNS Dienstanbieter zur Auswahl vorkonfiguriert.
Nicht zu vergessen sollten die Ports 80 und 443 am Router an deinen Raspberry Pi weitergeleitet werden um auch ankommende Anfrage bearbeiten zu können. Weiterführend könnte auch eine eigene Domain gekauft werden und diese dann bei Cloudflare ‘s Nameservern hinterlegt werden. Mittels eines CNAME links kann nun die neu erworbene Domain direkt auf die dynamische IP Adresse der kostenlosen Domain von no-IP gemappt werden, sodass die alte Konfiguration des DDNS Services beibehalten werden kann. Cloudflare ist ein Content Delivery Network und bietet einige Vorteile an wie z.B. eigene TLS Zertifikate oder das caching von Webseiten.
Ich nehme aber an, dass all dies schon vorhanden und vorbereitet wurde, sowie ein Raspberrry Pi mit einem installierten Betriebssystem (meines ist Raspbian) vorliegt um tatsächlich zu starten.
Und los geht es
Wir befinden uns auf unserem Raspberry Pi (z.B. via SSH) und müssen zu erst Docker installieren:
curl -sSL https://get.docker.com | sh
Nun wollen wir Docker-Compose installieren. Es wird uns helfen, mehrere Container gleichzeitig zu starten und zu konfigurieren.
sudo apt-get install docker-compose
Nun können wir das Repo klonen.
git clone https://gitlab.com/nm_hung93/dockerized-wordpress-on-raspberry-pi.git
Für dieses Setup nutze ich folgende Komponenten:
- hunnguye/caddy-alpine-armv7:1.0.3 : unser Webserver bereit für die ARM Architektur
- hunnguye/php7.4-rc-alpine3.1-fpm-mysqli-armv7:7.4 : unsere dedizierte PHP Engine, erstellt aus dem offiziellem Image und durch weitere Module erweitert um die Anforderungen von WordPress zu befriedigen
- yobasystems/alpine-mariadb: eine out of the box Datenbank
Wir könnten nun bei Bedarf die Einhängepunkte (mount points) in der docker-compose.yml konfigurieren. Diese sind beim klonen des Repos schon vorkonfiguriert.
Bei der initialen Instanziierung der MariaDB ist es direkt möglich eine Datenbank zu erstellen mit Hilfe von injizierten Umgebungsvariablen welche wir unter /data/env_variables/env_file spezifizieren.
Wir sollten uns immer noch im root Ordner befinden und können nun WordPress herunterladen:
curl -sL http://wordpress.org/latest.tar.gz | tar --strip 1 -xz -C data/wp/www
Nun navigieren wir zu unserem WordPress Installations Ordner, kopieren die wp-config-sample.php und bearbeiten sie. Die Navigation sollte wie folgt aussehen:
cd data/wp/www/ cp wp-config-sample.php wp-config.php nano wp-config.php
Nun ändern wir diese Einträge zu den Ausprägungen wie wir sie in den injizierten Variablen definiert haben:
- ‘database_name_here’ zu blog
- ‘username_here’ zu UserX
- ‘password_here’ zu 123456
- ‘localhost’ zu mariadb
Die Datei mit CTRL+X speichern und mit Y akzeptieren.
Nun haben wir alle wichtigen Einstellungen vorgenommen und navigieren wieder in unseren root Ordner um docker-compose mit folgendem Befehl zu starten.
docker-compose -f docker-compose.yml up -d
- -f spezifiziert die Datei
- -d startet docker-compose im detached mode, was bedeutet, dass es im Hintergrund läuft
- -d startet docker-compose im detached mode, was bedeutet, dass es im Hintergrund läuft
Die Konsole müsste etwa so hier aussehen:
Nun noch die IP Adresse des Pi’s herausfinden zum Beispiel wie folgt:
ip addr show
Und dann ausschau halten nach eth0 oder wlan0, je nachdem wie ihr den Raspberry Pi mit dem Router verbunden habt. Die IP-Adresse meines Pis ist die 192.168.2.2. Nun können wir auf eine andere Machine in unserem Netzwerk gehen und diese IP Adresse in den Browser eingeben. Bei Erfolg müsste dies dann wie folgt ausschauen:
Tja und das war es! Wir haben WordPress auf unserem Raspberry Pi zum laufen und innerhalb unseres LAN’s erreichbar gemacht
Die nächsten Schritte wären dann:
- das Caddyfile unter data/wp konfigurieren, indem “tls off” auskommentiert und “:80” mit “unsererWebseite.com” ersetzt wird. Durch das Auskommentieren von tls off und Angabe einer richtigen Domain weiß Caddy selbstständig, dass es ein TLS Zertifikat von Let’s Encrypt anfragen soll
- die /data/env_variables/mysql_credentials (und damit verbunden die wp-config.php) konfigurieren um ein sichereres System zu gewährleisten
- die Mount Points in einem anderem Pfad einhängen
Falls dieser Beitrag hilfreich gewesen ist oder ihr weitere Fragen habt hinterlasst gerne einen Kommentar 🙂