Host Your Own Drupal
with Open Source
Jon Pugh
Consultant & Contributor
12 years 6 months on Drupal.org
4 years an Aegir Maintainer
Jon Pugh
Consultant & Contributor
THINKDROP
Since Dec 2009
Past
Present
Future
PROMISE
You can host your own websites with 100% free software.
REALITY
Setup and Maintenance is hard and time consuming.
Goal
To make hosting your own Drupal sites simple and easy.
Goal
To make hosting your own Drupal sites simple and easy
FOR EVERYONE
Drupal made building a website something anyone can do.
We want to make hosting Drupal websites something anyone can do.
The Past
“Co-location”
“Dedicated Servers”
“Virtual Private Servers”
“Shared Hosting”
Servers on Demand
2006
2008
2008
2015
2012
2011
Drupal Hosting
1000s of blog posts & how to articles.
$ apt-get install apache2 php5 mysql-server
$ sudo service apache2 restart
mod_rewrite
www-data
chmod
chown
!?!
System Requirements
WEB SERVER
Apache
NGINX
IIS
… anything that can run PHP
DATABASE SERVER
MySQL MariaDB Percona
PostgreSQL
SQLite
System Requirements
WEB SERVER
Apache
NGINX
IIS
… anything that can run PHP
DATABASE SERVER
MySQL MariaDB Percona
PostgreSQL
SQLite
DON’T CARE
System Requirements
WEB SERVER
Apache
NGINX
IIS
… anything that can run PHP
DATABASE SERVER
MySQL MariaDB Percona
PostgreSQL
SQLite
JUST WANT DRUPAL
The Checklist
For Every Drupal Site
Upload Drupal Source code
Install LAMP Server Packages
Create Database
Create Database User
Create VirtualHost Config
Create settings.php file
Create a files folder
Set secure permissions
Setup SSL Certificates
...
The Checklist
For Every Drupal Site
Upload Drupal Source code
Install LAMP Server Packages
Create Database
Create Database User
Create VirtualHost Config
Create settings.php file
Create a files folder
Set secure permissions
Setup SSL Certificates
...
Crontab!
Backups!
DNS!
The Checklist
For Every Drupal Site
Upload Drupal Source code
Install LAMP Server Packages
Create Database
Create Database User
Create VirtualHost Config
Create settings.php file
Create a files folder
Set secure permissions
Setup SSL Certificates
...
DON’T CARE
The Checklist
For Every Drupal Site
Upload Drupal Source code
Install LAMP Server Packages
Create Database
Create Database User
Create VirtualHost Config
Create settings.php file
Create a files folder
Set secure permissions
Setup SSL Certificates
...
JUST WANT DRUPAL
EASY!
EASY?
DON’T CARE
JUST WANT
DRUPAL
Just Drupal
SUPER
EASY!!!
Not Open Source
The Present
Aegir!
10 YEARS
Drupal + Drush = Aegir
node/add/site
Aegir
Fully
Automates
Your
LAMP
Stack
Aegir
Takes your Site Nodes and does everything needed to install a �Drupal site:
Aegir
Takes your Site Nodes and does everything needed to install a �Drupal site:
Aegir
Takes your Site Nodes and does everything needed to install a �Drupal site:
HTTPS
Monitoring
Monitoring
Graphite+StatsD+Grafana=
Alerts
Grafana+WorldPing
Open Source Graphing Platform plus SaaS tool for monitoring from around the globe.
Alerts for downtime.
Alerts
Grafana+WorldPing
Continuous Integration
DevShop
Pull Request environments & Behat Testing OUT OF THE BOX.
node/add/server
Server Setup
used to be on you.
CLOUD
ANSIBLE
ANSIBLE
ANSIBLE REMOTE INVENTORY
ANSIBLE
BENEFITS
ANSIBLE
BENEFITS
ANSIBLE
DRAWBACKS
ANSIBLE
THE FUTURE
Ansible-Aegir-Agent:
Process runs on remote servers allowing them to configure themselves without giving out remote access, including code deploy.
DOCKER
Docker Compose
Generate a definition of your Docker container groups in YAML.
Aegir generates docker-compose.yml and runs `docker-compose up`
“Hosting Docker” module:
“Hosting Docker” module:
DOCKER
Generated Example:
DOCKER
BENEFITS
DOCKER
BENEFITS
DOCKER
DRAWBACKS
The Future
More Docker!
Docker-compose based multi-tenant
multi-app
hosting.
NGINX-PROXY+ LETSENCRYPT
Host multiple web server containers on a single host.
NGINX-PROXY+ LETSENCRYPT
Set the URLs for each container in environment variables.
NGINX-PROXY+ LETSENCRYPT
LetsEncrypt “companion container” uses URLs in environment variables to register SSL Certificates automatically.
Docker Host
Multiple Web Servers per Host
jwilder/nginx 0.0.0.0:80
APP_1
nginx web server
APP_2
nginx web server
DATABASE
mariadb
DRUSH
SSH Server allowing Drush Access
App
APP_1
“*:80”
DATABASE
mariadb
DRUSH
SSH Server allowing Drush Access
SOLR
APP_1
“*:80”
DATABASE
mariadb
DRUSH
SSH Server allowing Drush Access
docker-compose.yml
docker-compose.yml
docker-compose.yml
MORE COLLABORATION!
The Point
We deserve easy to use open source hosting tools.
The Point
We can't do it alone.
If Drupal can democratize Site Building, Aegir & DevShop can do the same for Hosting...
...as long as we follow Drupal’s lead:
Modularity, Ease of Use, & Community.
Join Us!
#aegir on IRC @aegirproject �docs.aegirproject.org