Webtrees Docker mit PHP-Fix: Schnelles Update gegen die PHP2Shell-Lücke

Eigentlich erscheint auf cleveradmin.de wie gewohnt jeden Mittwoch pünktlich um 12:00 Uhr mein wöchentlicher Artikel. Doch besondere Umstände erfordern bekanntlich besondere Maßnahmen – und eine kritische Sicherheitslücke wartet nun mal nicht auf den nächsten regulären Redaktionsplan!

Wenn du deine genealogische Forschung mit Webtrees in Docker betreibst, hast du heute vermutlich auch kurz geschluckt: Die Nachricht über die kritische PHP-Schwachstelle (PHP2Shell bzw. CVE-2026-109618) schlug in der gesamten Selfhosting-Szene ein wie eine Bombe. Ein schnelles PHP Update für alle produktiven Webanwendungen war plötzlich oberste Pflicht – doch genau da gab es bei Webtrees eine kleine Hürde.

Der anfangs kursierende Workaround über temporäre Einstellungen in der php.ini wurde kurz nach Veröffentlichung von Sicherheitsforschern und Heise als unvollständig widerlegt. Es half also nichts: Es musste zwingend die frisch gepatchte PHP-Version (mindestens PHP 8.4.27) unter die Haube. Doch das beliebte und weit verbreitete Community-Image von Nathan Vaughn baut neue Docker-Container traditionell nur dann, wenn ein neues Release von Webtrees selbst erscheint. Da die Ahnenforschungs-Software selbst aber kerngesund war und kein neues Release brauchte, gab es schlicht kein offizielles Image mit dem Sicherheits-Patch.

Weil ich keine Lust hatte, meine eigenen Stammbäume tagelang im Wartungsmodus verstauben zu lassen oder ein unsicheres System im Netz stehen zu haben, habe ich die Sache selbst in die Hand genommen. Ich habe das originale Image mit der offiziell gepatchten PHP 8.4.27 Basis neu gebaut, auf Herz und Nieren getestet und für euch auf meiner Gitea-Instanz bereitgestellt. Hier erfährst du, wie du dein Setup mit wenigen Handgriffen aktualisierst.

🧩 Voraussetzungen

Bevor es losgeht, brauchst du natürlich eine funktionierende Docker-Umgebung.
Wenn du Docker noch nicht installiert hast, findest du hier eine Schritt-für-Schritt-Anleitung, wie du das auf Ubuntu mit einem Script erledigst:

Sobald Docker und Docker Compose bei dir laufen, können wir direkt loslegen.

📦 Das gepatchte Webtrees Docker Image

Das Container-Image basiert zu 100 % auf der bewährten Dockerfile-Logik von Nathan Vaughn, nutzt aber als Fundament das offizielle, fehlerbereinigte PHP-Base-Image mit PHP 8.4.27. Damit ist die Sicherheitslücke vollständig geschlossen, während der gewohnte Funktionsumfang von Webtrees 2.2.6 exakt erhalten bleibt.

Ich habe das Image über die Techniverse Git-Registry öffentlich freigegeben, damit ihr eure Instanzen ohne langes Warten absichern könnt:

  • Image: git.techniverse.net/scriptos/webtrees-docker:2.2.6-php8.4.27 (oder latest-php8.4.27)
  • Quellcode & Lizenz: Open Source auf Gitea unter MIT-Lizenz (Webtrees selbst steht unter GNU GPLv3).

🔄 Webtrees Docker Compose anpassen und updaten

Wenn du Webtrees bereits mit Docker Compose betreibst, ist der Wechsel ein Kinderspiel: Du musst lediglich in deiner bestehenden docker-compose.yaml die image:-Zeile austauschen.

Hier siehst du einen beispielhaften, sauberen Aufbau inklusive eigener IP-Adresse im Docker-Netzwerk und angebundener MariaDB-Datenbank:

services:
  webtrees:
    image: git.techniverse.net/scriptos/webtrees-docker:2.2.6-php8.4.27
    container_name: webtrees
    restart: unless-stopped
    ports:
      - "8080:80"
    environment:
      - WT_BASE_URL=https://stammbaum.deine-domain.de
      - DB_TYPE=mysql
      - DB_HOST=webtrees-db
      - DB_PORT=3306
      - DB_NAME=webtrees
      - DB_USER=webtrees
      - DB_PASSWORD=DEIN_SICHERES_PASSWORT
      - DB_PREFIX=wt_
    volumes:
      - ./data:/var/www/webtrees/data
    networks:
      webtrees_net:
        ipv4_address: 172.19.0.10
    depends_on:
      - webtrees-db

  webtrees-db:
    image: mariadb:11.4
    container_name: webtrees-db
    restart: unless-stopped
    environment:
      - MYSQL_ROOT_PASSWORD=DEIN_SICHERES_ROOT_PASSWORT
      - MYSQL_DATABASE=webtrees
      - MYSQL_USER=webtrees
      - MYSQL_PASSWORD=DEIN_SICHERES_PASSWORT
    volumes:
      - ./db_data:/var/lib/mysql
    networks:
      webtrees_net:
        ipv4_address: 172.19.0.11

networks:
  webtrees_net:
    name: webtrees.dockernetwork.local
    driver: bridge
    ipam:
      config:
        - subnet: 172.19.0.0/24
          gateway: 172.19.0.1
          ip_range: 172.19.0.128/25

Container aktualisieren und neu starten

Nachdem du die docker-compose.yaml gespeichert hast, ziehst du das neue Image herunter und startest den Container neu:

# Neues Image herunterladen
docker compose pull

# Container im Hintergrund neu starten
docker compose up -d

Docker erkennt automatisch, dass sich das Image geändert hat, stoppt den alten Container und startet den neuen Webtrees-Container mit den bestehenden Datenvolumes. Deine Ahnen-Daten, Stammbäume und Einstellungen bleiben dabei vollständig erhalten.

🔍 PHP-Version in Webtrees überprüfen

Vertrauen ist gut, Kontrolle im Homelab ist bekanntlich besser. Um sicherzugehen, dass Webtrees tatsächlich mit der gepatchten PHP-Version läuft, kannst du das ganz einfach im Browser überprüfen:

  1. Melde dich als Administrator in deiner Webtrees-Instanz an.
  2. Klicke oben rechts auf das Kontrollzentrum (Zahnrad-Symbol).
  3. Wähle unter Verwaltung den Punkt Server-Informationen.
  4. Prüfe dort den Eintrag bei PHP-Version. Hier sollte nun stolz 8.4.27 stehen.

✅ Fazit

Sicherheitslücken warten nicht auf reguläre Release-Zyklen. Wenn Upstream-Maintainer verständlicherweise Zeit brauchen oder Images nur bei Anwendungs-Updates bauen, ist der Selbstbau oft der schnellste und pragmatischste Weg zurück in den sicheren Hafen.

Mit dem bereitgestellten Container läuft deine Ahnengalerie wieder geschützt und auf dem aktuellen Stand von PHP 8.4. Sobald Nathan Vaughn oder das Webtrees-Projekt selbst offizielle Patches nachziehen, kannst du bei Bedarf jederzeit nahtlos wieder zurückwechseln.

👥 Techniverse Community

Lust auf Austausch rund um Docker, Selfhosting und andere smarte IT-Lösungen?
In der Techniverse Community triffst du Gleichgesinnte, kannst Fragen stellen oder einfach nerdigen Talk genießen. 🚀

👉 Jetzt der Gruppe auf Matrix beitreten
~ Direkte Raumadresse: #community:techniverse.net

👉 Für lockere Gespräche abseits der Kernthemen komm in den Talkraum
~ Direkte Raumadresse: #talk:techniverse.net

Wir freuen uns, wenn du dabei bist!

Vielen Dank fürs Teilen!