Zum Inhalt springen

Mediawiki installieren

Aus RolfWiki
Version vom 19. Februar 2026, 08:10 Uhr von Rolf (Diskussion | Beiträge) (Add Categorie)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

= 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">

  1. 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

  1. 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">

  1. lokal: z.B. ~/Downloads/LocalSettings.php

docker cp ~/Downloads/LocalSettings.php mediawiki:/var/www/html/LocalSettings.php

  1. prüfen

docker exec -it mediawiki ls -l /var/www/html/LocalSettings.php

  1. 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

  1. 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">

  1. Containerstatus

docker compose ps

  1. Logs

docker compose logs -f mediawiki

  1. Mounts

docker inspect mediawiki | jq '.Mounts'

  1. PHP Limits

docker exec -it mediawiki php -i | grep -E "upload_max_filesize|post_max_size"

  1. 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