Giter Site home page Giter Site logo

mediawiki-containers's Introduction

mediawiki-containers

Containerized MediaWiki install including VisualEditor, Parsoid, RESTBase, Mathoid & other services.

Requirements

  • KVM or similar VM with at least 512mb RAM. These can be had from a variety of vendors for around $5/month. This comparison from ServerBear lists some popular options. Any labs instance will work as well.
  • Distribution: One of
    • Debian 8.0 Jessie or newer, or
    • Ubuntu 15.04 or newer, or
    • arbitrary systemd-based distro with git and docker >= 1.6 installed.
  • Root shell.
  • Port 80 available (TODO: automatically switch to alternative ports).

Installation

On Debian and Ubuntu, the fastest installation method is this one-liner:

curl https://raw.githubusercontent.com/wikimedia/mediawiki-containers/master/mediawiki-containers | sudo bash

Alternatively, you can check out this repository, and run sudo ./mediawiki-containers install in the checkout.

The installer mode will prompt you for

  • the domain to use, and
  • whether to enable automatic nightly updates.

It will set up a systemd unit, so that your MediaWiki install automatically starts on boot. Here is a screencast of an installer run.

Issue tracking

We use Phabricator to track issues. See the list of current issues.

Architecture

Running sudo ./mediawiki-containers start in a checkout of this repository will start four containers:

After startup, a brand new MediaWiki install will be reachable at http://localhost/.

Architecture notes

All data is stored outside the containers in a host directory:

ls /srv/mediawiki-containers/data
mediawiki  mysql  node-services

This greatly simplifies backups and upgrades. Update scripts are run on each startup, which means that updating to a newer version of the entire setup is as easy as a restart:

sudo service mediawiki-containers restart

Building on this upgrade-by-default approach, the installer can optionally set up fully automatic nightly upgrades by setting up a one-line cron job.

Status & next steps

This is alpha quality software. The basic functionality of MediaWiki, services and VisualEditor is there, but some details about the configuration will likely change before this can be used in production.

Done:

  • Hook up VisualEditor out of the box.
  • Update to MediaWiki 1.26 1.27-wmf9.
  • Set up systemd / init scripts to start up the docker-compose setup on boot.
    • Possibly, also provide a systemd-only startup script that doesn't require docker-compose.
  • Forward /api/rest_v1/ to RESTBase.

Next steps / wishlist:

  • Configure RESTBase updates. Enable Wikitext / HTML switching in VE.
  • Improve security:
    • Run each container under a different, unprivileged user.
    • Secure the install / update process with signatures.
  • Add popular extensions, and streamline the support for custom extensions.
  • Add services like mathoid, graphoid.
  • Use the HHVM PHP runtime instead of Zend, possibly using ideas from https://github.com/kasperisager/php-dockerized.
  • Support developer use cases:
    • Optionally mount code volumes from the host system.
    • Improve configuration customization support.
  • Support for more distributions.

Tell us about your ideas at https://phabricator.wikimedia.org/T92826.

mediawiki-containers's People

Contributors

gwicke avatar pchelolo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.