Mediawiki installieren
= MediaWiki Installation & Einrichtung (bereinigtes Manual)
Kurzbeschreibung
Dies ist ein sauberes, schritt‑für‑Schritt‑Manual zur Installation und Einrichtung von **MediaWiki 1.43.5** in einer Docker‑Umgebung mit **MariaDB**, **Apache Tika** und **Caddy** als Reverse‑Proxy. Es enthält nur die funktionierenden, getesteten Schritte (Fehlschritte wurden weggelassen).
Voraussetzungen
- Server mit Docker & Docker Compose v2 installiert
- Benutzer mit SSH‑Zugriff (z. B. »rolf«)
- Domain und DNS (A‑Record) für `sub.meinedomain.de` verfügbar
- Caddy wird als Docker‑Container im externen Docker‑Netzwerk **caddy** betrieben
Zielarchitektur
- mediawiki (MediaWiki 1.43.5) – Webapp
- mediawiki_db (MariaDB 11) – Datenbank
- mediawiki_tika (apache/tika:3.2.3.0-full) – Text‑/OCR‑Extraktion
- caddy (separates Docker‑Stack) – Reverse Proxy + TLS
== Ordnerstruktur auf dem Host == <syntaxhighlight lang="bash"> ~/mediawiki/ ├── docker-compose.yml ├── data/ │ ├── mediawiki/ # Webroot (named volume oder bind, siehe Compose) │ └── mariadb/ ├── php/ │ └── uploads.ini # PHP-Konfig für Upload-Limits └── backups/ </syntaxhighlight>
== 1. Vorbereitung auf dem Host == <syntaxhighlight lang="bash">
- Basis-Ordner
mkdir -p ~/mediawiki/data/mediawiki mkdir -p ~/mediawiki/data/mariadb mkdir -p ~/mediawiki/php mkdir -p ~/mediawiki/backups chown -R $(id -u):$(id -g) ~/mediawiki </syntaxhighlight>
2. PHP‑Limits konfigurieren
Erstelle die Datei `~/mediawiki/php/uploads.ini` mit folgenden Inhalten (Beispiel 128M):
<syntaxhighlight lang="ini"> upload_max_filesize = 128M post_max_size = 128M memory_limit = 512M max_execution_time = 300 max_input_time = 300 </syntaxhighlight>
3. docker‑compose.yml (empfohlen, tested)
Lege `~/mediawiki/docker-compose.yml` an – 1:1 übernehmen (ersetze Secrets/Passwörter vor Einsatz):
<syntaxhighlight lang="yaml"> version: "3.9"
networks: caddy: external: true
services: db: image: mariadb:11 container_name: mediawiki_db environment: MYSQL_DATABASE: mediawiki MYSQL_USER: wikiuser MYSQL_PASSWORD: wikisecret MYSQL_ROOT_PASSWORD: rootsecret volumes: - ./data/mariadb:/var/lib/mysql restart: unless-stopped networks: - caddy
tika: image: apache/tika:3.2.3.0-full container_name: mediawiki_tika ports: - "9998:9998" restart: unless-stopped networks: - caddy
mediawiki: image: mediawiki:1.43.5 container_name: mediawiki restart: unless-stopped depends_on: - db - tika ports: - "8280:80" # Erstinstallation über Hostport, vermeidet Host-Apache-Konflikte environment: - MEDIAWIKI_DB_TYPE=mysql - MEDIAWIKI_DB_HOST=db - MEDIAWIKI_DB_NAME=mediawiki - MEDIAWIKI_DB_USER=wikiuser - MEDIAWIKI_DB_PASSWORD=wikisecret volumes: - mediawiki_web_data:/var/www/html - mediawiki_images:/var/www/html/images - ./php/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini:ro networks: - caddy
volumes: mediawiki_web_data: mediawiki_db_data: mediawiki_images: </syntaxhighlight>
4. Caddyfile (Reverse Proxy)
In deinem vorhandenen Caddy‑Stack (in demselben Netzwerk `caddy`) füge für die Subdomain ein Eintrag wie folgt hinzu:
<syntaxhighlight lang="text"> sub.meinedomain.de {
encode gzip zstd
reverse_proxy mediawiki:80
header {
Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
X-Content-Type-Options "nosniff"
}
} </syntaxhighlight>
Caddy holt automatisch TLS (Let’s Encrypt) für die Domain, solange Port 80/443 vom Host erreichbar sind und DNS auf deine IP zeigt.
== 5. Container starten == <syntaxhighlight lang="bash"> cd ~/mediawiki docker compose pull docker compose up -d
docker compose ps
- sollte mediawiki, mediawiki_db, mediawiki_tika anzeigen
</syntaxhighlight>
6. MediaWiki Web‑Installer
1. Öffne im Browser: `http://<SERVER-IP>:8280` 2. Führe den interaktiven Installer durch: Datenbank‑Parameter → `db`, `mediawiki`, `wikiuser`, `wikisecret`. 3. Admin‑Account anlegen. 4. Lade die erzeugte Datei **LocalSettings.php** herunter.
7. LocalSettings.php in den Container übernehmen
(Bei Named‑Volumes liegt der Webroot im Container. Kopiere die Datei ins Container‑Dateisystem.)
<syntaxhighlight lang="bash">
- lokal: z.B. ~/Downloads/LocalSettings.php
docker cp ~/Downloads/LocalSettings.php mediawiki:/var/www/html/LocalSettings.php
- prüfen
docker exec -it mediawiki ls -l /var/www/html/LocalSettings.php
- restart
docker restart mediawiki </syntaxhighlight>
8. Uploads & Tika vorbereiten
In `LocalSettings.php` (falls nicht automatisch gesetzt) prüfen/ergänzen:
<syntaxhighlight lang="php"> $wgEnableUploads = true; $wgFileExtensions = array_merge($wgFileExtensions, ['pdf','png','jpg','jpeg','gif','svg']); $wgMaxUploadSize = 134217728; // 128MB in Bytes
// Tika (falls die Extension/Integration später genutzt wird) $wgTikaServer = "http://mediawiki_tika:9998"; $wgTikaTimeout = 15; </syntaxhighlight>
> Prüfe, dass `images/` beschreibbar ist:
<syntaxhighlight lang="bash"> docker exec -it mediawiki sh -c "chown -R www-data:www-data /var/www/html/images && chmod -R 755 /var/www/html/images" </syntaxhighlight>
9. Tests
- Prüfe PHP upload limits:
<syntaxhighlight lang="bash"> docker exec -it mediawiki php -i | grep -E "upload_max_filesize|post_max_size" </syntaxhighlight>
- PDF hochladen: Spezial:Hochladen → Datei auswählen → Seite erstellen
- Prüfe, ob PDF im Wiki angezeigt wird und erreichbar ist.
10. Caddy TLS‑Check
Beobachte die Caddy‑Logs bis zur Bestätigung, dass ein Zertifikat bezogen wurde:
<syntaxhighlight lang="bash"> docker logs -f caddy
- suche nach: success: certificate obtained for sub.meinedomain.de
</syntaxhighlight>
11. Optional: Tika / Volltextsuche später aktivieren
Wir haben Tika bereits als Container. Für echte Volltext‑Suche brauchst du zusätzlich:
- Elasticsearch (für CirrusSearch)
- die Extension CirrusSearch und ggf. TikaAllTheFiles (oder TikaAllTheFiles‑ähnliche Integrationen)
Empfohlene Reihenfolge:
1. Zuerst stabiler Wiki‑Betrieb & Uploads 2. Dann Elasticsearch (als eigener Container) 3. CirrusSearch konfigurieren und Reindex durchführen
12. Backups (Kurz)
Empfohlener Minimalworkflow: tägliches DB‑Dump + tarball der Volumes. Ein mögliches Skript legt die Pakete under `~/mediawiki/backups` ab und wird per cron ausgeführt.
== 13. Wichtige Prüfbefehle (Debug) == <syntaxhighlight lang="bash">
- Containerstatus
docker compose ps
- Logs
docker compose logs -f mediawiki
- Mounts
docker inspect mediawiki | jq '.Mounts'
- PHP Limits
docker exec -it mediawiki php -i | grep -E "upload_max_filesize|post_max_size"
- Tika check
docker exec -it mediawiki sh -c "curl -sS http://mediawiki_tika:9998/tika | head -n 1" </syntaxhighlight>
14. Hinweise & Best Practices
- Nutze named volumes statt bind mounts für den Webroot, um UID/GID‑Probleme zu vermeiden.
- Hebe `uploads.ini` in `~/mediawiki/php` und mounte sie in `/usr/local/etc/php/conf.d/`.
- LocalSettings.php per `docker cp` in den Container legen, nicht per scp direkt in Host‑Webroot.
- Wenn der Host einen Apache/Nginx mit Port 80/443 betreibt, nutze einen anderen Hostport (z. B. 8280) für die Erstinstallation oder konfiguriere Port‑Forwarding/Rewrites im Router.
15. Weiterführende Schritte
- Migration von BookStack‑Inhalten (Export → pandoc → MediaWiki‑Import)
- Einrichtung von CirrusSearch + Elasticsearch für Volltextsuche
- Einrichtung eines regelmäßigen, getesteten Backup‑ & Restore‑Prozesses
---
Datum: 3.04.2026
Autor: rolf