Dokuwiki mit docker hardened php/nginx

Problem mit Nichterreichbarkeit Extensions Server

In einem Docker Hardened Image (z. B. mit docker-compose und einem offiziellen oder selbst gehärteten DokuWiki-Image) sind die Schritte etwas anders, da du die Konfiguration meist über Umgebungsvariablen, Docker-Volumes oder eigene Dockerfiles anpasst. Hier ist eine Schritt-für-Schritt-Anleitung, um das Problem mit dem Plugin-Repository zu lösen:


1. PHP-Einstellungen im Docker-Container anpassen

a) allow_url_fopen und curl aktivieren

Erstelle oder bearbeite eine benutzerdefinierte php.ini und binde sie als Volume in den Container ein.

Beispiel: Erstelle eine Datei php-override.ini mit folgendem Inhalt:

allow_url_fopen = On
extension=curl

Falls du auch open_basedir anpassen musst:

open_basedir = "/var/www/html:/tmp"

b) Volume im docker-compose.yml einbinden

Füge in deiner docker-compose.yml unter dem DokuWiki-Service folgende Zeilen hinzu:

services:
  dokuwiki:
    image: dokuwiki:latest
    volumes:
- ./php-override.ini:/usr/local/etc/php/conf.d/override.ini
      # ... deine anderen Volumes

2. Docker-Container neu starten

Nach dem Anpassen der Konfiguration:

docker-compose down && docker-compose up -d

3. Testskript ausführen

Erstelle eine Datei test.php in deinem DokuWiki-Webroot (z. B. ./data/pages/test.txt oder direkt im Container) mit folgendem Inhalt:

<?php
$url = "https://www.dokuwiki.org";
$content = @file_get_contents($url);
if ($content === false) {
    echo "Fehler: Kann $url nicht öffnen. Prüfe allow_url_fopen und cURL.";
} else {
    echo "Erfolg: Verbindung zu $url möglich.";
}
?>

Ruf die Datei im Browser auf, z. B. unter http://dein-dokuwiki/test.php.


4. Logs prüfen

Falls es nicht funktioniert, prüfe die Logs des Containers:

docker-compose logs dokuwiki

Achte auf Fehlermeldungen zu allow_url_fopen, cURL oder open_basedir.


5. Falls SELinux aktiv ist

Falls du auf einem Host mit SELinux läufst, kann es den Zugriff blockieren. Teste mit:

sudo setenforce 0

Falls das Problem dann verschwindet, musst du SELinux-Policies anpassen oder den Container mit --privileged starten (nicht empfohlen für Produktion).


6. Manuelle Plugin-Installation als Fallback

Falls alles andere nicht hilft, kannst du Plugins manuell herunterladen und über das DokuWiki-Admin-Interface installieren.


Frage: Hast du eine docker-compose.yml oder ein Dockerfile, das du anpassen kannst? Wenn du mir deine aktuelle Konfiguration zeigst, kann ich dir genau sagen, was du ändern musst!