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.

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
editarBase de datos
editardocker 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
editardocker 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
editarEn 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
editarSiguiendo 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-Policycon sandbox, para impedir que se ejecuten scripts. - Las peticiones a scripts (
.php,.phtml,.sh...) dentro de/images/devuelven 403 Forbidden. - Los ficheros
.htmlse sirven como texto plano.