Wikimini/Technical documentation

This page contains technical documentation about Wikimini.

Wikimini is currently hosted by a virtual server called wmch-demo owned by Wikimedia CH.

For general information see Wikimini.

Overview

edit

Wikimini is a wiki farm (a single MediaWiki installation serving multiple instances).

The most active Wikimini's wikis are:

Server

edit

Since 2021, Wikimini is hosted for free on Wikimedia CH infrastructure on a single virtual server called wmch-demo.

Legacy Production Server New Testing Server
IP 192.168.128.40 192.168.128.50
RAM 8GB 2GB

Additional documentation can be found here, at the moment available to all WMCH members, but probably this page should be migrated to Meta-wiki:

https://members.wikimedia.ch/wiki/Infrastructure

In short, access to that server is granted via personal users, with sudo.

Well-known SSH users:

The above users can also activate new users.

Note that SSH access is only possible via WMCH OpenVPN configuration. Again, the details at the moment are here, available to all WMCH members, but probably this page should be migrated to Meta-wiki:

https://members.wikimedia.ch/wiki/Infrastructure/VPN

The server is managed by the Wikimini community system administrators, and (on demand by the community) by Wikimedia CH system administrators.

Please communicate server chagnes to:

Putting in copy at least these Phabricator users:

  • ilario
  • valeriobozz-wmch

Filesystem

edit

This is the main Wikimini directory structure on the filesystem:

/var/www/wikimini.org
├── images
├── maintenance-page
├── scripts
├── tmp
├── www
├── www.testing

Notes:

  • the www directory is production (default for all visits)
  • the www.testing directory can be used for testing purposes by changing the WIKIMINI_TESTING environment variable in Apache HTTPd
  • only the www directory is exposed to the webserver
  • only these directories are writable by the webserver:
    • cache
    • images
    • tmp

Position of the public (versioned) configuration:

/var/www/wikimini.org/www/w/LocalSettings.php

Note that the public (versioned) configuration is a symbolic link to this position:

/etc/wmch-infrastructure/servers/demo/projects/wikimini/LocalSettings.php

Position of the private configuration:

/etc/wmch-infrastructure/servers/demo/projects/wikimini/LocalSettings-secret.php

After phabricator:T318342, the file will be published on Wikimedia GitLab.

Webserver

edit

The Apache HTTPd webserver is in use, since it has a very simple configuration syntax and it's well-known.

Here the standard configuration files:

$ ls -1 /etc/apache2/sites-available/org-wikimini-*
/etc/apache2/sites-available/org-wikimini-00000-ssl.conf
/etc/apache2/sites-available/org-wikimini-00000-txt.conf
/etc/apache2/sites-available/org-wikimini-ar000-ssl.conf
/etc/apache2/sites-available/org-wikimini-ar000-txt.conf
/etc/apache2/sites-available/org-wikimini-en000-ssl.conf
/etc/apache2/sites-available/org-wikimini-en000-txt.conf
/etc/apache2/sites-available/org-wikimini-es000-ssl.conf
/etc/apache2/sites-available/org-wikimini-es000-txt.conf
/etc/apache2/sites-available/org-wikimini-fr000-ssl.conf
/etc/apache2/sites-available/org-wikimini-fr000-txt.conf
/etc/apache2/sites-available/org-wikimini-it000-ssl.conf
/etc/apache2/sites-available/org-wikimini-it000-txt.conf
/etc/apache2/sites-available/org-wikimini-lab00-ssl.conf
/etc/apache2/sites-available/org-wikimini-lab00-txt.conf
/etc/apache2/sites-available/org-wikimini-stock-ssl.conf
/etc/apache2/sites-available/org-wikimini-stock-txt.conf
/etc/apache2/sites-available/org-wikimini-sv000-ssl.conf
/etc/apache2/sites-available/org-wikimini-sv000-txt.conf
/etc/apache2/sites-available/org-wikimini-test-fr000-ssl.conf
/etc/apache2/sites-available/org-wikimini-www00-txt.conf

To enable a configuration file, you can use the Debian-style:

a2ensite org-wikimini-lab00-txt
apache2ctl graceful

To disable a configuration file, also you can use the Debian-style:

a2dissite org-wikimini-lab00-txt
apache2ctl graceful

Resources

edit

CPU virtual cores:

6

RAM:

8G

Swap:

4G

Disk partitions:

/: 65G

Adding a new language

edit

To add a new language you need to be a GNU/Linux user with sudo privileges in the #Server.

Important: before following this guide, contact phabricator:tag/wmch-infrastructure. This is a pseudo-guide, never tested.

Note: in this example replace $(LANG) with your new language, like en.

Contact the DNS administrators of the domain wikimini.org (probably you should #File a Task) to deploy a new DNS record. We suggest to simply point a CNAME record, with this value:

demo.wikimedia.ch.

The full BIND9 syntax should be this:

$(LANG)   IN  CNAME "demo.wikimedia.ch."

Note: the trailing dot it's important.

Now create a new MariaDB database:

mysql <<< "CREATE DATABASE wikimini_$(LANG)wiki"

Grant necessary MariaDB privileges to that database:

mysql <<< "GRANT SELECT,UPDATE,INSERT,DELETE TO wikimini_$(LANG)wiki.* TO wikimini_$(LANG)wiki@localhost"

Evaluate if doing the same also for a related testing database:

mysql <<< "CREATE DATABASE wikimini_beta_$(LANG)wiki"
mysql <<< "GRANT SELECT,UPDATE,INSERT,DELETE TO wikimini_$(LANG)wiki.* TO wikimini_beta_$(LANG)wiki@localhost

Now register your new language into the LocalSettings.php (see #Filesystem section).

Precisely, check this constant:

define( 'WIKIMINI_PROJECTS_KNOWN', [ ... ] );

Now enter in the webserver configuration:

cd /etc/apache2/sites-available

Copy a couple of already-existing files for your new language.

For example creating these new files:

org-wikimini-$(LANG)000-ssl.conf
org-wikimini-$(LANG)000-txt.conf

Then enable these configuration files. Start enabling the plaintext version (txt - so without SSL):

a2ensite org-wikimini-$(LANG)000-txt
apache2ctl graceful

Now that you have a working website (at least in plaintext) deploy the Let's Encrypt certificate:

certbot

Then, enable the SSL version:

a2ensite org-wikimini-$(LANG)000-ssl
apache2ctl graceful

Done. Have fun!

Maintenance Page

edit

To activate a nice maintenance page, run these:

touch /etc/web-maintenance
apache2ctl graceful

To de-activate the maintenance page, run these:

rm /etc/web-maintenance
apache2ctl graceful

The maintenance enabler works thanks to these configuration files:

/etc/apache2/my-includes/wikimini/include/org-wikimini-maintenance-activation.conf

/etc/apache2/my-includes/wikimini/include/org-wikimini-maintenance.conf

Mailboxes

edit

The documentation about Wikimini mailboxes is available here:

https://members.wikimedia.ch/wiki/Infrastructure/Emails#Mailboxes_in_wikimini.org

Page maintained by: User:ValerioBoz-WMCH
Page editable by: any WMCH member.
Page visible to: any WMCH member.

File a Task

edit

For whatever problem please feel free to create a Task in Wikimedia Phabricator. Relevant Tags:

Quick creation link:

If you are in doubt whenever to create a Task or not... just create a Task! Thank you :)