The QualityBox is a complete solution for hosting a MediaWiki installation similar to what is used to run Wikipedia. There are other options for installing MediaWiki on your own server, like
sudo apt-get install mediawiki. But that is just a starting point whereas QualityBox is the full endpoint. By leveraging the Ansible orchestration tool, QualityBox allows you to provision virtual machines locally (using Vagrant + VirtualBox) or in the cloud (e.g. Digital Ocean droplets). Isn’t QualityBox duplicating the MediaWiki-Vagrant system? No. MediaWiki-Vagrant will allow you to quickly build a development instance while the Quality Box is optimized for production hosting of MediaWiki. For MediaWiki consultants, this turbo-charges your DevOps and Delivery. For organizations wishing to deploy MediaWiki, QualityBox eliminates the many hurdles along the way. QualityBox opens up the pathway to better support, training, integration or extension by the same people and organizations that develop QualityBox.
The source code can be found on GitHub at https://github.com/freephile/qb
Some initial collaborators include:
- Jean Christophe Fillion-Robert jcfr
- Cindy Cicalese
- Yaron Koren yaronkoren
- Steve Pieper pieper
- Greg Rundlett freephile
- Lex Sulzer lexsulzer
Why does QualityBox exist? Because MediaWiki is an awesome piece of software that powers one of the greatest achievements of the Internet: Wikipedia. The MediaWiki software is freely licensed under the GPL, so naturally thousands of organizations use it locally for intranets, documentation websites, fan sites etc. It’s heavily used by the software development industry itself. But like any modern internet application, the software has grown in complexity over time; thus making it very difficult to deploy for even experienced software developers or system administrators. Not only is it hard to deploy (nb. the one-click installers fall short), there are also many many aspects that need to be added to a MediaWiki installation to make it “fully furnished”; to a point where you can just “move right in” and begin using it.
You need to add at least a “starter pack” set of templates. You need a long list of extensions; and while roughly a dozen excellent ones are distributed with MediaWiki in the default tarball, there are approximately 50 must-have extensions integrated into the QualityBox. No software is great without great documentation, so we include all the essential Help (aka documentation). Plus, QualityBox includes lots of other features like security, monitoring, scalability and enterprise support to make it complete. We’re even planning on optional add-on packs for specific usage scenarios like setting up a contact directory. And it needs to be beautiful, flexible and graphically rich - so we have the best themes that make QualityBox both mobile-first and more intuitive; and pre-load it with a scalable vector graphic icon set and integrate it with MediaWiki Commons.
WordPress is another fantastic free software platform. It powers about 1/3 of the entire web. And it has many big name hosting providers. So where are the big hosting providers for MediaWiki?
eQuality Technology launched QualityBox to address these needs. And it’s free as in freedom. (Freedom comes with a price: If you modify and re-distribute the code, you must share back your code – according to the terms of the QualityBox license.) QualityBox makes it easy for top-notch free software consultants to offer MediaWiki hosting to their clients. QualityBox makes it easy for organizations, who respect freedom and value collaboration, to deploy QualityBox in their own infrastructure or clouds. It’s our goal that QualityBox will make MediaWiki as prevalent as WordPress is for blogs and Drupal is for websites. Or to put it another way: there is no way that an organization should even consider Microsoft SharePoint for more than 60 seconds when QualityBox is so much more.
My goal is to create an automated and repeatable way to specify and deploy a “base” box which can be deployed on a number of cloud providers: namely VirtualBox for local development; Digital Ocean for ease of use and cost; AWS for larger enterprise customers who prefer to use Amazon. Future providers might include VMware. Already we have both a VirtualBox local target and a DigitalOcean cloud target; and can deploy virtually anywhere we have SSH access to.
The base box should have
- Ubuntu Linux 16.04 (gui/no-gui)
- MariaDB (alternative to MySQL)
- PHP (and extensions)
Depending on the provider, there may be extra configurations or requirements
- Guest additions if provider is VirtualBox (not needed for AWS)
The process should look like
cd ~/vagrant vagrant box add quality-box /~/Downloads/quality-Wiki.box vagrant init quality-box vagrant up
(See the certbot project for what looks like an advanced usage of Vagrant)
The QualityBox is based on a bare-bones Ubuntu distribution, and we modify that. We will probably begin packaging our base box to speed deploy times but that’s not on the critical path for us because we create once, while managing nodes is much more important in the long run. See Creating a base box
Pricing / Costs
If using Docker, pricing depends on whether it’s cloud or premise, and ranges from $15/mo for a single node to $300/mo per node for 24x7 support. Keep in mind that several “nodes” may be needed to complete a service which is scalable, modular and spans production and pre-production. Developer nodes are free.
Referata.com is a great place to host a wiki for minimal cost. And they deserve all the respect in the world. However, they currently do not support HTTPS 3. And, it has a limited set of extensions 4. There are 4 plans 5 that range in price from (free), $20, $50 and $80/mo. The free tier is especially not remarkable. The only plans that offer a domain name are $50 and $80 with no mention of the RAM and CPU dedicated (hint: it is slow). Speaking with Yaron, the QualityBox should be priced at $300/mo Hopefully Referata will soon be offering QualityBox hosting.
We’ll (probably?) have both static hosts (our own that we want to refer to explicitly) and dynamic hosts (clients’ servers which we can refer to by naming convention or id) to operate on. This is sometimes referred to as a ‘hybrid cloud’. With Ansible, you can specify an inventory directory where multiple sources are found. Executable files are treated as dynamic sources. 6
The digital_ocean.py script that comes with Ansible is a useful tool to interact with the DigitalOcean API to retrieve data about your droplets.
You can list your DigitalOcean droplets with the following:
~/bin/ansible/contrib/inventory/digital_ocean.py --list --api-token INSERT_TOKEN_HERE
~/bin/ansible/contrib/inventory/digital_ocean.py --help to see the command options.
Note that you can also export your DO_API_TOKEN, or put it in a vars file. There is even an
--env -e option to display the environment/DO_API_TOKEN if you’ve exported it.
Because we can use the script to tell us about the inventory in an ansible compatible way, the best bet for creating and managing droplets would be
- have one playbook create a bunch of droplets
- run digital_ocean.py to generate a hosts file
- run another playbook in tandem with that hosts file to turn all those droplets into QualityBoxes
The Apache2 module will enable/disable Apache modules
The Domain Module will create the DNS records for you at DO
How do I create certificates?? There is a Letsencrypt module in the “Web Infrastructure Modules” that can be used. Just need to think creatively how to use it? (chicken/egg problem)
- this won’t work because you can’t get a cert for a domain that isn’t yours
greg@eqt:~/certificates$ ~/bin/letsencrypt/letsencrypt-auto –domain wiki.example.org –apache certonly –dry-run
Do we want to enable an interwiki table to facilitate transclusion between wikis?
Need to update group_vars/all/default_extensions (or add qb_extensions)
grep -Po '(?<=name: ")[^"]*' ./mediawiki-tools-ansible-wikifarm/group_vars/all/default_extensions |sort
- Semantic Extra Special Properties
- Semantic Maps
- Semantic MediaWiki
- Semantic Result Formats
For each complex extension like Visual Editor, install dependencies
 Email Marketing
 Using Inventory Directories and Multiple Inventory Sources