Despliegue de MediaWiki con Docker

Revisión del 23:34 14 nov 2026 de Admin (Hablar | contribs.) (Página creada con «'''MediaWiki''' es el software wiki libre en el que se basa Wikipedia. En esta práctica se ha desplegado con '''Docker''' y se publica en Internet a través de un '''proxy inverso nginx''' con HTTPS. thumb|300px|Esquema del despliegue == Arquitectura == {| class="wikitable" ! Componente !! Tecnología !! Función |- | some-mediawiki || mediawiki:1.43 || Aplicación web (Apache + PHP) |- | some-mariadb || mariadb:latest || Base de datos…»)
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)

MediaWiki es el software wiki libre en el que se basa Wikipedia. En esta práctica se ha desplegado con Docker y se publica en Internet a través de un proxy inverso nginx con HTTPS.

Esquema del despliegue

Arquitectura

editar
Componente Tecnología Función
some-mediawiki mediawiki:1.43 Aplicación web (Apache + PHP)
some-mariadb mariadb:latest Base de datos de la wiki
Proxy inverso nginx + Let's Encrypt Publica la wiki con HTTPS en wiki.lopezhueso.org

Los dos contenedores están en la red de Docker practica, así que MediaWiki se conecta a la base de datos usando el nombre del contenedor (some-mariadb), sin exponer el puerto de MariaDB.

Despliegue de los contenedores

editar

Base de datos

editar
docker run -d --name some-mariadb --network practica \
  -v /my/own/datadir:/var/lib/mysql:Z \
  --env MARIADB_USER=mediawiki \
  --env MARIADB_PASSWORD='********' \
  --env MARIADB_DATABASE=media_wiki \
  --env MARIADB_ROOT_PASSWORD='********' \
  mariadb:latest

MediaWiki

editar
docker run -d --name some-mediawiki --network practica \
  -v images:/var/www/html/images \
  -v /srv/wiki/LocalSettings.php:/var/www/html/LocalSettings.php:ro \
  -p 8080:80 \
  mediawiki:1.43

El fichero LocalSettings.php lo genera el instalador web y se monta como fichero de solo lectura. El directorio de imágenes se guarda en el volumen images para que no se pierda al recrear el contenedor.

Proxy inverso con HTTPS

editar

En el VPS, nginx recibe las peticiones a wiki.lopezhueso.org y las reenvía al contenedor. El certificado se ha obtenido con Certbot:

sudo certbot --nginx -d wiki.lopezhueso.org

Certbot añade la configuración de SSL en el puerto 443 y redirige todo el tráfico HTTP a HTTPS con un 301.

Seguridad de las subidas

editar

Siguiendo la guía oficial de MediaWiki, el directorio /images/ está protegido en nginx:

  • Cabecera X-Content-Type-Options: nosniff, para que el navegador no adivine el tipo de los ficheros.
  • Cabecera Content-Security-Policy con sandbox, para impedir que se ejecuten scripts.
  • Las peticiones a scripts (.php, .phtml, .sh...) dentro de /images/ devuelven 403 Forbidden.
  • Los ficheros .html se sirven como texto plano.

Enlaces externos

editar