I am writing to announce mediawiki-containers [1], a simple installer for
MediaWiki with VisualEditor, Parsoid, RESTBase and other services, using
Linux containers.
The main goal of this project is to make it really easy to set up and
maintain a fully featured MediaWiki system on a wide range of platforms.
The project is in an early stage, but already supports full installation on
Ubuntu, Debian and other systemd-based distributions, as well as starting
containers on OS X via the Docker toolbox [6].
These are the basic steps involved in setting up your own MediaWiki
instance with VisualEditor:
1) Get a Linux VM in labs or from a hosting provider, and select Debian
(Jessie or newer) or Ubuntu 15.04+ as the distribution. Commercial VMs with
reasonable specifications cost about $5 per month [2].
2) Log into your VM, and run this command [7]:
curl
https://raw.githubusercontent.com/wikimedia/mediawiki-containers/master/med…
| sudo bash
3) Answer the questions in the installer.
Here is a screencast of an installer run, illustrating steps 2) and 3):
https://people.wikimedia.org/~gwicke/mediawiki-containers-install.ogv
Under the hood, mediawiki-containers uses several Docker containers:
- wikimedia/mediawiki [3] with MediaWiki 1.27-wmf9 and VisualEditor.
- wikimedia/mediawiki-node-services [4] with Parsoid and RESTBase running
in a single process to minimize memory use.
- MariaDB as the database backend [5].
Data and configurations are stored on the host system in
/srv/mediawiki-containers/data, which means that upgrading is as simple as
fetching the latest container images by re-running the installer.
Optionally, the installer can set up automated nightly updates, which helps
to keep your wiki installation up to date.
The project is brand new, so there is a fair chance that you will encounter
bugs. Please report issues at
https://phabricator.wikimedia.org/maniphest/task/create/?projects=mediawiki…
.
Here are some ideas we have for the next steps:
- Forward `/api/rest_v1/` to RESTBase & 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.
Let us know what you think & what you would like to see next at
https://phabricator.wikimedia.org/T92826.
Happy holidays,
Gabriel Wicke and the Services team
[1]:
https://github.com/wikimedia/mediawiki-containers
[2]:
http://serverbear.com/compare?Sort=BearScore&Order=desc&Server+Type…
[3]:
https://github.com/wikimedia/mediawiki-docker and
https://hub.docker.com/r/wikimedia/mediawiki
[4]:
https://github.com/wikimedia/mediawiki-node-services and
https://hub.docker.com/r/wikimedia/mediawiki-node-services/
[5]:
https://hub.docker.com/_/mariadb/
[6]:
https://docs.docker.com/mac/step_one/
[7]: We agree that `curl | bash` has its risks, but it is hard to beat for
simplicity. The Chef project has a good discussion of pros, cons &
alternatives at
https://www.chef.io/blog/2015/07/16/5-ways-to-deal-with-the-install-sh-curl…
.