The next generation of Webarchitects’ shared hosting servers

YAML dictionary for account configuration

Today we are very happy to be releasing version 0.9 of our shared web hosting framework, this is the first version to be based on Ansible and also the first version for which we have made all the provisioning code public, it represents the embodiment of over 20 years of experience of providing a web site hosting service.

Key improvements over our last generation of shared web hosting servers include:

  1. Switching from Apache mod_php to php-fpm, this has resulted in a far lower resource footprint for Apache when it is serving static resources and as a result significant speed improvements and also the ability to serve content using HTTP/2.
  2. Using YAML for account configuration, this is far more flexible and allows more fine-grained configurations options and allows us to do things we couldn’t do before like automating the adding of additional WordPress sites to existing accounts.

All new accounts are being setup using this code base and we have also started to roll it out for client servers however we don’t plan on upgrading all our existing shared servers until the Christmas / New Year period because the upgrade will involve some hours of downtime for each server and in addition we have a few key features we want to have in place before then, version 1.0 should include:

  1. Client accessible backups, each account on a shared hosting server will have a directory with a months worth of snapshots of files and database backups.
  2. A major rewrite of the provisioning process, at the moment user accounts are configured in parallel, all at the same time, this makes adding users and editing account configurations rather slow, we intend to reorganise the code so that single user accounts can be added and updated without touching other accounts.
  3. Support for the automatic install of additional content management systems, if you have any requests please get in touch, one we are keen to support is Flarum.

For those interested in the technical details you can browse the code for our development server in this repo, the key files being the one containing the user account variables, and the one containing the list of Ansible role repos where most of the code resides.

In total around 20,000 lines of code have been written in the year since work began on this project, updates and ideas have been posted to our members forum and on going development can be followed via the milestones and related issues and merge requests on our repos at git.coop, all the Ansible code is released under the terms of the GNU General Public License.