Kategorien
Blog Software

Setting up a WordPress staging system with docker

I wanted a WordPress staging system to play around with new plugins, new WordPress versions, and PHP versions.

The primary goals of my mini-project were:

  • Have a staging system for WordPress available for testing new WordPress versions and Plugins
  • Enhance the Performance of the actual WordPress Blog

How can we do it?

Here is a network diagram of the current system setup.

OK, the ideas were quite clear. Now we need a migration plan. And this looks like that:

  1. Install Raspian on the RPi5 SSD, with the Raspberry Pi imager
  2. Install docker and Portainer on the RPi5, based on the Heise description
  3. Install the following docker containers via „docker compose“
    1. Nginx Reverse Proxy
    2. Maria DB for WordPress Staging 
    3. WordPress Staging
    4. Maria DB for WordPress Production
    5. WordPress Production
    6. (Setting up Home Assistant also as a docker container is not a good idea as we lose the functionality of Add-Ons)
  4. With the current live system I’m doing a regular backup via Updraft, so let’s import these backups into the two WordPress instances
  5. At the DNS provider define the new subdomains and route them also to the Dynamic DNS provider
  6. Configure the NPM (Nginx Proxy Manager) with these domains and define the forwarding to the different instances
    1. Setup SSL via Let’s encrypt 
    2. Add also the local Home Assistant server/Port as the target
  7. Reconfigure the port forwarding of the router to the NPM
  8. Shutdown the old RPi4

So, let’s dive a little bit deeper into the different steps.

Configure the new RPi5 hardware and software

OK, let’s get the first new hardware, which means the new high-performance RPi5.

It took some time to be available on the market and the announced performance numbers looked promising.

As the power supply is quite strong I attached directly a SSD drive to the USB3 port.

So no need anymore for a USB hub!

Installing the latest Rasbian operating system on the SSD was pretty easy using the Raspian Imager.

I also configured the SSH access for it, of course.

So, how are we going further?

Install docker on the RPi5

As I wanted to run a WordPress life system and a WordPress staging system in my local network, I thought it would be a good idea to go with:

  • Docker to run multiple images/containers
  • Nginx Reverse Proxy to manage/route the traffic to/from these containers to the outside world

Install the docker containers

  • Setup a docker network manually
docker network create dockerwp 
  • Create a directory for wp_prod, wp_staging, nginx
  • Define a file for common parameters used as anonymized volumes in the docker containers
  • Create docker-compose.yml for the Nginx Proxy
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: nginx-proxy
    restart: unless-stopped
    ports:
      # These ports are in format <host-port>:<container-port>
      - '80:80' # Public HTTP Port
      - '443:443' # Public HTTPS Port
      - '81:81' # Admin Web Port
      # Add any other Stream port you want to expose
      # - '21:21' # FTP

    # Uncomment the next line if you uncomment anything in the section
    # environment:
      # Uncomment this if you want to change the location of
      # the SQLite DB file within the container
      # DB_SQLITE_FILE: "/data/database.sqlite"

      # Uncomment this if IPv6 is not enabled on your host
      # DISABLE_IPV6: 'true'

    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

networks:
  dockerwp:
    external: true
  • Create docker-compose.yml for the MariaDB and the WordPress container (one for the staging and one for the production system)
services:
  mysqldb0:
    image: mariadb:11.3.2
    container_name: prod_db
    environment:
      MARIADB_ROOT_PASSWORD: "secret"
      MARIADB_DATABASE: "wordpress"
      MARIADB_USER: "wordpress"
      MARIADB_PASSWORD: "secret"
    volumes:
      - 'mysqldb0:/var/lib/mysql'
    restart: always
    networks:
      -  mysqldb0


  wordpress0:
    image: wordpress:6.5.3
    container_name: prod_wp
    environment:
      WORDPRESS_DB_HOST: "mysqldb0"
      WORDPRESS_DB_USER: "wordpress"
      WORDPRESS_DB_PASSWORD: "secret"
      WORDPRESS_DB_NAME: "wordpress"
      WORDPRESS_CONFIG_EXTRA: |
        define('AUTOMATIC_UPDATER_DISABLED', true);

   volumes:
      - 'wordpress0:/var/www/html/wp-content'
      - '../uploads.ini:/usr/local/etc/php/conf.d/uploads.ini'
    restart: always
    ports:
      - "8001:80"
    depends_on:
      - mysqldb0
    networks:
      - mysqldb0
      - dockerwp

volumes:
  mysqldb0:
  wordpress0:

networks:
  mysqldb0:
    internal: true
  dockerwp:
    external: true

Setup the WordPress content

As I backed up the WordPress blog site with updraft, we are restoring the backup to the new WordPress staging and WordPress production system, respectively.

Configure the Sub-Domains

Go to your DNS provider and configure the new Sub-domains with a CNAME entry.

If you have a dynamic IP address, route the Sub-Domain entries to the same Dynamic DNS entry of your DynDNS Provider.

Configure the NPM

Define the target of the routing for all the Sub-Domains, e.g. the Ports of your WordPress containers.

Let the Sub-Domain for the Home Assistant point to the separate HA RPi3.

Add the SSL certificates from Let’s Encrypt.

Additional configuration for the Home Assistant

We must add the following configuration steps to make the Home Assistant run with an external Sub Domain, based on ademalidurmus.

1.) At the NPM, enter the following entry in the advanced config for the Home Assistant Host.

location / {
        proxy_pass              http://10.0.0.5:8123;
        proxy_set_header        Host            $host;
        proxy_redirect          http://         https://;
        proxy_set_header        Authorization   $http_authorization;
        proxy_pass_header       Authorization;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection “upgrade”;
 }

In the Home Assistant configuration.yml file add:

http:
  cors_allowed_origins:
    - https://public.domain.tld # my public domain
  use_x_forwarded_for: true
  trusted_proxies:
    - 10.0.0.3 # nginx proxy manager internal IP adress

At the „Home Assistant URL“ page enter:

Internet: [External Domain]
Local network: [Internal IP]:8123

Reconfigure the Port forwarding at your router

The Ports 80 for HTTP and 443 for HTTPS must now be reconfigured to forward the traffic from these two ports to the NPM.

Here is the network diagram of the new setup.

WordPress staging system with docker

Let’s now check our goals from the beginning. Did we reach them?

  • Have a staging system for WordPress available for testing new versions and Plugins: Available
  • Enhance Performance of the actual WordPress Blog: Super fast!
Kategorien
Blog

Pegelstände von Flüssen in Deutschland

Einen tollen Service zum Abrufen der Pegelstände von Flüssen in Deutschland gibt es über https://www.pegelonline.wsv.de/.

Hier ein Beispiel:

Oder mit mehreren Pegeln in einer Grafik:

Hier ein paar Videos, wie es am 01.06.2024 in Untertürkheim am Wehr aussah.

Kategorien
Fotos Reisen

Bordeaux

Ich war schon sehr lange nicht mehr in Frankreich, nun waren wir eine Woche in der Weinstadt Bordeaux an der Garonne.

Am ersten Tag hat uns noch etwas der Regen erwischt, aber wir haben immer einen guten, trockenen Unterstand gefunden.

An der Garonne lagen zwei große Kreuzfahrtschiffe. Zuerst dachte ich, es sind Häuser, so hoch waren die. Krass!

Zum Abendessen gab es leckeres Tartar in unserem Hôtel des 4 Sœurs! Es liegt direkt neben der Oper und dem Grand Hotel.

Bordeaux Oper

Zu Fuß durch Bordeaux

Wir machten einen langen Spaziergang von ca. 20km.

Es ging über die Pont du Pierre nach Stalingrad über die sehr breite und braune Garonne.

Die Tidenbewegung kann man sogar hier, ca. 100km vom Meer entfernt, an der starken Strömung erkennen.

Durch den Parc aux Angeliques sind wir nach Norden gelaufen und dann wieder über die bewegliche Brücke Pont Jacques Chaban-Delmas zurück auf die andere Seite der Garonne. Der Mittelteil der Hubbrücke kann hochgehoben werden, damit die Kreuzfahrtschiffe an den Quais von Bordeaux anlegen können.

Der reine Prozess des Hoch- und Runterfahrens der Brücke dauert jeweils nur 12min, und dann muss das Kreuzfahrtschiff noch durchfahren.

In Summe muss man so 1,5-2h Wartezeit einkalkulieren, wenn man über die Brücke will und gerade ein Schiff durchfährt.

Das Weinmuseum Cité de Vin haben wir nur von außen besucht.

Dann sind wir weiter in das Marine Gebiet gegangen, an einem großen U-Boot Bunker vorbei, indem sich auch Bassins de lumierre befinden.

In dem Bunker fand die tolle Illumination mit Bildern von van Gogh, Vermeer und Mondrian statt.

Eine spezielle Atmosphäre!

In einem kleinen Lokal essen wir unsere ersten Austern. Lecker!

Am Börsenplatz betrachten wir den größten Spiegel Europas, eine Wasserfläche in der sich die Umgebung toll spiegelt.

Bordeaux

In einem kleinen Lokal mit Strohschirmen geniessen wir Tajine und Fisch.

Mit dem Boot durch Bordeaux

Mit dem Bat, einer kleinen Fähre, fahren wir bis Cité di Vin. Unsere Tickets werden kontrolliert, Gott sei Dank haben wir sie noch gekauft.

Sie sind aber nicht gültig. Es kann sein, daß uns die Dame auf dem Boot schon benutzte Tickets verkauft hat. Jedenfalls hatte sie ein Gespräch mit dem Kontrolleur. Aber für uns war alles gut 🙂

Wir gingen via der Notre Dame Kirche zum Marche Chartrons.

Und aßen unsere besten Austern und sehr leckeren Tintenfisch an der Markthalle.

Für den nächsten Tag reservieren wir uns zwei Fahrräder. „Er wird sich an uns erinnern“, sagt der Chef zu uns.

Abends gehen wir in das Viertel Saint-Michel und essen im Ginkgo Restaurant ein super Entrecote und super Cipionnes!

Mit dem Rad durch Bordeaux

Der Chef hat sich an uns erinnert und gibt uns zwei Räder. Nur 10€ kostet ein Rad, das ist wirklich günstig.

Es geht über die Pont d’Aquitaine, mit einer netten Steigung.

Insgesamt haben wir ca. 60km und 400hm zurückgelegt. Nicht schlecht mit diesen City Rädern.

Es ist eine abwechslungsreiche Tour, führt uns auch durch eine Villengegend von Bordeaux.

Am Marche Caputin stärken wir uns mit Wein, Schnecken und – natürlich – Austern. Etwas wackelig fahren wir weiter…

Abends ist unser Essen zwar gut, aber nicht besonders. In einer Pizzeria gibt es Lachs-Tartar und Risotto mit Pulpo.

Mit dem Auto an die Dünen

Das Auto hatten wir einen Tag zuvor günstig über Check24 gebucht. Zuerst starteten wir die Suche über lokale Anbieter. Die Preise starteten bei 400€, dann 200€. Schlussendlich zahlten wir 63€ bei Budget. Da kann man sich nicht beschweren.

Unser Frühstück nehmen wir in dem Marche Caputin, Austern (geht auch zum Frühstück!) und Croissant.

Einen Ausflug mit dem Auto machten wir an die phantastischen Dünen Dune de Pilat am Atlantik. Es sind die größten in Europa.

Anschließend wollten wir in Arcachon etwas essen gehen. Leider waren am Wochenende alle Parkplätze belegt und als wir dann etwas ausserhalb einen Parkplatz gefunden hatten, machte das Lokal gerade zu 😢

Dafür hatte sich das Meer zurückgezogen, und wir sahen ein paar Boote, die trockengefallen waren.

Das Finden einer Tankstelle und auch das Hinkommen an die Rückgabestelle des Autos war wegen Baustellen nicht ganz so einfach.

Auch das Parkhaus war ganz schön eng, sogar für einen Citroën C3.

Zum Abendessen waren wir bei Therese, und wurden mit leckerer Ente und Beef Tartar verwöhnt.

Mit dem Zug nach Saint Emilion

Die Tickets konnten wir problemlos über Trainline buchen. 11€/Person und Strecke für ca. 30min ist günstig.

Der Zug war natürlich pünktlich und fuhr mit bis zu 160km/h.

Nach dem Rundgang durch Saint Emilion setzten wir uns in eine Wein Bar, und kaum saßen wir, fing es heftig an zu regnen. Das ist Timing!

Ein Schweizer sagt „Alles nur Touriste Falle“ auf schweizerisch…Womit er nicht so unrecht hatte.

Übrigens spielen die Deutschen dort keine Rolle, es werden Ansagen in vielen Sprachen gemacht, nur nicht auf Deutsch.

Wir wandern bei leichtem Regen durch Chateaus zurück zum Bahnhof.

Auf dem Heimweg essen wir leckeren Camembert bei Mere Michel.

Am Sonntag ist es wirklich schwierig, in Bordeaux etwas zum Essen zu finden. Keine Ahnung, ob der Sonntag ein Familientag ist.

Wir waren in einer möchte-gern Schicki-Micki Kneipe und haben dort ein paar gute Vorspeisen gegessen.

Museums Tag und Shopping

Leider hatte unser gewünschtes Museum, das CAPC Museum für zeitgenössische Kunst von Bordeaux, geschlossen.

Aber das Musée des beaux-arts de Bordeaux war auch schön.

Dann ging es noch etwas zum Shopping, so weit die Füsse trugen.

Zusammen Fassung

Es hat uns sehr gut gefallen, das Essen, der Wein, die Stadt. Hat eine tolle Atmosphäre.

Ein paar Dinge sind uns besonders aufgefallen:

  • Es gibt immer kostenlos Wasser zum essen.
  • Die Fahrräder dürfen immer in der gegen Richtung fahren.
  • Trinkgeld wird nicht erwartet.
  • Die Leute sind freundlich, hilfsbereit, man wird nicht reingelegt.
  • Alle Verkehrs Teilnehmer (Fußgänger, Rad Fahrer, Roller Fahrer, Moped Fahrer, Auto Fahrer) werden respektiert.
  • Tram/Zug/Bat funktioniert hervorragend, ist pünktlich und günstig.
  • Es gibt tolle Fassaden, alles ist sauber, toll restauriert, und eine breite Garonne.
  • Es gibt unheimlich viele UberEats etc. Lieferdienste, die mit Fahrrädern und Mopeds unterwegs sind.

Und nun, wie immer, ein paar Bilder in einem Google Foto Album.

Google Album von Bordeaux
Kategorien
Fotos Reisen

Venedig

Ein paar herrliche Tage haben wir in Venedig verbracht. Untergebracht waren wir in Cannaregio, dort ging es abends immer hoch her in den Lokalen und Bars.

Anreise

Zur Vorbereitung hatten wir ein Ticket für den Flughafen Transfer und für die Vaporetti gekauft. Wir wollten es am Flughafen ausdrucken, aber das kann man gar nicht, man muß es nur in der App aktivieren, dann bekommt man einen QR Code angezeigt. Die Fahrkarten Kontrolleure konnten den Code gut lesen. Nur beim Einsteigen in manchen Terminals gab es manchmal gar keinen QR Code Leser oder der Code konnte nicht gelesen werden.

Es scheint, dass das System noch im Aufbau ist.

Nun gibt es seit heuer in Venedig die Regelung, dass man an manchen Tagen Eintritt in die Stadt zahlen muss. Dafür gibt es Ausnahmen und eine davon ist, wenn man direkt in Venedig übernachtet. Um das nachzuweisen muß man sich auf einer Web Seite mit der Hotel Adresse registrieren. Dabei wird ein one time Code (OTP) generiert, der einem zugeschickt wird. Dann hat man 120 Sekunden Zeit den Code auf der Webseite einzugeben. Es hat ein paar Versuche gedauert bis wir es geschafft hatten, da unser Email Provider nicht gerade der schnellste ist. Keiner hat jemals diese Ausnahme kontrolliert. Und es waren auch nicht weniger Touristen in Venedig, sondern eher mehr. Ich bin gespannt, ob dieses Prozedere erhalten bleibt.

Das Hotel zu finden war auch nicht ganz so einfach, es gibt nämlich keine richtigen Hausnummern in Venedig. Aber nach einer kurzen Rücksprache fanden wir es.

Am Nachmittag belohnten wir uns mit leckeren Cicchietti und abends mit einem guten Pasta Essen.

Kunst

An unserem ersten Tag gingen wir auf die Biennale, zuerst in den Giardino, anschließend noch in das Gebiet von Arsenale. Besonders die einzelnen Ausstellungen der Länder Pavillons im Giardino haben uns sehr gefallen. Über die Stadt verteilt findet man in vielen Ecken immer wieder einzelne Ausstellungen. Sehr zu empfehlen für Kunst-Liebhaber!

Am Abend haben wir leckere venezianische Leber mit Feigen gegessen.

Kultur

Der zweite Tag war für die Touristen Highlights reserviert. Zuerst nahmen wir an einer Führung durch den Dogenpalast inkl. Gefängnis teil, gleich anschließend an einer Führung durch die Basilika San Marco mit herrlichen Mosaiken. Nicht zu vergessen ist der Campanile, von dem man einen herrlichen Blick über die Stadt hat. Der Beton der Rekonstruktion fängt an zu bröckeln…

Venedig

Es ist absolut notwendig, vorher sehr frühzeitig online die Touren zu buchen, am besten mit Skip-the-line. Ja, das kostet etwas Geld, aber dafür spart man eine Menge Zeit. Die Abwicklung der Touren mit den Führern hat hervorragend funktioniert.

Wenn man mehrere Touren hintereinander bucht, sollte man genügend Zeit dazwischen lassen, da sich Verzögerungen ergeben könnten. Auch sind die Startpunkte der Touren nicht immer direkt am Objekt, das man sich ansehen will.

Bootstour

Am dritten Tag wollten wir unser Vaporetto Ticket ausnutzen und fuhren zuerst nach Murano zu den Glaskünstlern. Am besten fängt man gleich im Süden in Colonna an, dort gibt es richtige Glaskunst, zu einem entsprechenden Preis.

Anschliessend sind wir mit der Vaporetto Linie 1 durch den Canale Grande zum Lido gefahren. Auf der Tour kann man die tollen, alten Gebäude von Venedig bewundern.

Der Lido hat uns enttäuscht, wir fanden dort nicht mal leckere Cicchietti 🙁

Wieder zurück in Venedig fanden wir dafür einen echten Banksy!

Am Abend genossen wir in einem kleinen Lokal direkt an einem Kanal leckeren Risotto von Calamari Nero und ein Filetto ai ferri, zusammen mit ein paar Calice Wein und Limoncello. Lecker!

Zusammenfassung

Ein paar Gassen neben den „Fussgänger-Bahnen“ ist es angenehm und beruhigend.

Ich habe den Eindruck, dass die Stadt immer mehr renovierunsbedürftig wird.

Hier noch der obligatorische Link auf die Bilder im Google Photos Album.

Kategorien
Blog Bücher

Neue Version meines Kochbuchs

Ich habe noch ein paar neue Rezepte dazugepackt und das Cover verschönert und eine neue Version meines Kochbuchs erstellt.

Die neuen Rezepte sind ein Kürbis-Risotto, ein Kürbis-Kartoffel Gericht und Kartoffel-Nudeln.

Der Druck-Service ist immer noch via epubli.

Ihr könnt es dort unter dem angegebenen Link bestellen.

Neue Version meines Kochbuchs
Kochbuch