Español
Empezar

← Todas las plantillas · Notas y wikis

Despliega MediaWiki en un clic

El software de wiki de Wikipedia: páginas que cualquiera puede leer, editadas con el editor visual o con el de código

Una alternativa autoalojada a Confluence y Fandom.

¿Qué es MediaWiki?

MediaWiki es el software de wiki libre y de código abierto que la Fundación Wikimedia creó para Wikipedia, y que usan miles de wikis más, desde wikis de juegos y de fans hasta bases de conocimiento de empresas. Las páginas se enlazan entre sí por sus títulos, cada edición se guarda en el historial de la página y se puede comparar o revertir, y cada página tiene su página de discusión. Las plantillas, las categorías y las páginas especiales ayudan a organizar una wiki grande, y su API permite que bots y scripts lean y editen.

Quienes editan escriben en wikitexto, el lenguaje de marcado de MediaWiki, o en VisualEditor, que edita la página tal como se ve. Esta plantilla activa las extensiones que vienen con MediaWiki, entre ellas VisualEditor, WikiEditor, ParserFunctions, Cite, Scribunto para módulos en Lua, SyntaxHighlight y DiscussionTools, y las apariencias Vector, MonoBook, Timeless y MinervaNeue para teléfonos.

Esta plantilla ejecuta la imagen oficial de MediaWiki, versión 1.46, con Apache y PHP, y su base de datos en SQLite, que MediaWiki admite para wikis pequeñas y medianas. La wiki se instala antes de responder a nadie, con el nombre, el nombre de usuario y la contraseña que indicas; cualquiera puede leerla, solo editan los usuarios con la sesión iniciada, y las cuentas las crea el administrador.

Hosting de MediaWiki en Pethost

  1. Inicias sesión en Pethost con una passkey, GitHub o Google. ¿Aún no tienes máquina? Eliges un plan, y el enlace espera hasta que esté lista.
  2. Nuevo proyecto se abre en MediaWiki. Rellenas lo que pide y haces clic en Crear proyecto: Nombre del sitio, Nombre de usuario, Contraseña de administrador.
  3. En un par de minutos MediaWiki está en marcha en su propia dirección con HTTPS. Sus secretos se generan al azar, y sus datos entran en el backup de cada noche.
  4. Es un proyecto como cualquier otro: tú o tu agente lo pueden cambiar, volver a una versión anterior o restaurar.

Preguntas sobre MediaWiki

¿MediaWiki es gratis?

Sí. MediaWiki es de código abierto bajo la GNU General Public License, versión 2 o posterior, y es gratis para cualquier wiki, pública o privada. Wikipedia funciona con el mismo software.

¿MediaWiki tiene editor visual?

Sí. VisualEditor viene con MediaWiki y esta plantilla lo activa: “Editar” abre una página tal como se ve, y “Editar código” abre su wikitexto. Los dos guardan en el mismo historial de la página.

¿Cómo hago privada mi wiki de MediaWiki?

Agrega $wgGroupPermissions['*']['read'] = false; a LocalSettings.php, en el volumen data, y reinicia el proyecto: desde entonces solo leen los usuarios con la sesión iniciada. La página Special:UserLogin sigue abierta, así que los editores pueden seguir iniciando sesión.

¿Cómo agrego usuarios a mi wiki?

Inicia sesión como administrador y abre Special:CreateAccount: indica un nombre de usuario y una contraseña, o una dirección de correo, a la que se envía una contraseña temporal. Después, Special:UserRights da a un usuario los permisos de un grupo, como el de administrador.

¿Puedo instalar extensiones de MediaWiki?

Sí. Las extensiones que vienen con MediaWiki ya están activadas. Otra se copia en la carpeta extensions del contenedor y se carga con wfLoadExtension en LocalSettings.php; un cambio de imagen reemplaza esa carpeta, así que guarda las extensiones que agregues en un volumen aparte.

¿Cuánta memoria y disco necesita MediaWiki?

MediaWiki es ligero: unos 200 MB de memoria, y su base de datos SQLite crece con el historial de cada página; los archivos subidos ocupan lo que ocupan. En Pethost le basta el plan Starter, y queda sitio para otras apps a su lado.

El archivo Docker Compose de MediaWiki

La plantilla es este compose.yaml y las variables que se escriben en el .env del proyecto al crearlo. Pethost ejecuta el archivo tal como está escrito.

Contenedores: mediawiki (mediawiki:1.46).

Volúmenes, en el backup de cada noche: data, images.

services:
  mediawiki:
    image: mediawiki:1.46
    restart: unless-stopped
    environment:
      WIKI_URL: ${URL}
      WIKI_NAME: ${WIKI_NAME}
      ADMIN_USERNAME: ${ADMIN_USERNAME}
      ADMIN_PASSWORD: ${ADMIN_PASSWORD}
    # A new MediaWiki offers its installer, which makes the administrator, to whoever opens it
    # first. So the wiki is installed here before Apache answers anyone: its SQLite database and
    # LocalSettings.php in the data volume, the administrator from the fields. LocalSettings.php is
    # written there only once the install has succeeded; a start that finds none puts what an
    # earlier, failed install left aside in data/failed-<time> and installs again. Every start
    # then runs MediaWiki's update, which a newer image of the line may need.
    command:
      - sh
      - -c
      - |
        set -e
        cd /var/www/html
        if [ ! -f /var/www/data/LocalSettings.php ]; then
          if ls /var/www/data/*.sqlite >/dev/null 2>&1; then
            aside=/var/www/data/failed-$$(date +%s)
            mkdir "$$aside"
            mv /var/www/data/*.sqlite* "$$aside"/
          fi
          rm -rf /var/www/data/install
          mkdir -p /var/www/data/install
          php maintenance/run.php install --dbtype=sqlite --dbpath=/var/www/data --dbname=wiki \
            --server="$$WIKI_URL" --scriptpath= --lang=en --pass="$$ADMIN_PASSWORD" \
            --with-extensions --confpath=/var/www/data/install "$$WIKI_NAME" "$$ADMIN_USERNAME"
          cat /var/www/data/install/LocalSettings.php - > /var/www/data/LocalSettings.php <<'PHP'

        # The wiki's name and address are the project's .env's, read at every start.
        $$wgSitename = getenv('WIKI_NAME') ?: $$wgSitename;
        $$wgMetaNamespace = false;
        $$wgServer = getenv('WIKI_URL') ?: $$wgServer;
        # MediaWiki is at the address's root, and its pages at /wiki/Page_name: Apache sends every
        # address that is no file to index.php.
        $$wgScriptPath = '';
        $$wgResourceBasePath = $$wgScriptPath;
        $$wgArticlePath = '/wiki/$$1';
        # Anyone reads; only signed-in users edit, and only an administrator makes accounts, at
        # Special:CreateAccount.
        $$wgGroupPermissions['*']['createaccount'] = false;
        $$wgGroupPermissions['*']['edit'] = false;
        # MediaWiki's flower beside the wiki's name, until a logo of the wiki's own is set here.
        $$wgLogos = ['icon' => "$$wgResourceBasePath/resources/assets/mediawiki_compact.svg", '1x' => "$$wgResourceBasePath/resources/assets/mediawiki.png"];
        # Uploaded files are kept in the images volume.
        $$wgEnableUploads = true;
        # The visitor's address is in X-Forwarded-For, from the machine's proxy.
        $$wgUsePrivateIPs = true;
        $$wgCdnServersNoPurge = ['10.192.0.0/10'];
        PHP
          rm -rf /var/www/data/install
        fi
        # The image's html folder is sticky and www-data's, where Linux lets www-data follow only a
        # link of its own.
        ln -sf /var/www/data/LocalSettings.php LocalSettings.php
        chown -h www-data:www-data LocalSettings.php
        php maintenance/run.php update --quick
        printf 'upload_max_filesize = 100M\npost_max_size = 100M\n' > /usr/local/etc/php/conf.d/uploads.ini
        # The web installer is never needed here, and it would greet a stranger: the wiki is
        # installed above, and updated at every start.
        echo 'RedirectMatch 404 ^/mw-config' > /etc/apache2/conf-enabled/no-installer.conf
        chown -R www-data:www-data /var/www/data /var/www/html/images
        exec apache2-foreground
    volumes:
      - data:/var/www/data
      - images:/var/www/html/images
    healthcheck:
      test: ["CMD", "curl", "-fsS", "-o", "/dev/null", "http://127.0.0.1/api.php"]
      interval: 10s
      timeout: 5s
      retries: 30
      start_period: 120s
volumes:
  data:
  images:

Más en Notas y wikis