Fork me on GitHub

Phabricator Provisioning with Vagrant and Ansible

on DevOps,

Installing Phabricator as a self-hosted service is quite simple, but there are many small steps involved that makes it tricky the first time.

When I try new software, I like to spend some effort to get the installation steps right. I find that doing so helps me understand the software better.

Setting up Phabricator on Vagrant first allows me to configure repeatable, manageable deploys, later on.

Getting a working Vagrant setup for Phabricator really makes developing easier. The commands vagrant destroy, vagrant up and vagrant provision helps to debug the Ansible configuration.

Since I’ll be running Phabricator on Ubuntu anyway, that’s the base box specified in the VagrantFile.

Browse the repository here:

To get started, simply clone the repository and run vagrant up. The default install is at, and Vagrant automatically updates your hosts file locally to support the domain name.


These are the major tasks that have to be handled by a provisioning script trying to install Phabricator on Ubuntu:

  1. Nginx
  2. MySQL
  3. PHP 7.1
  4. Phabricator
  5. Phabricator Phd Daemon setup
  6. Phabricator Git VCS setup
  7. Phabricator SSHD setup
  8. Phabricator Alternate File Domain setup
  9. Phabricator weekly upgrade script
  10. Python Pygments setup
  11. ImageMagick setup

The playbook tasks are specifically for installing Phabricator on Ubuntu 16.04 Xenial LTS.

Next Steps

Right now, the next thing I’m working on is to get the Ansible script to deploy Phabricator on a Digital Ocean VPS.

Since Phabricator configuration can be quite complex, it is not really suitable as an Ansible Galaxy role unless you also write it in your specific configuration.

There are just so many ways to configure Phabricator that configuring your own repo will probably lead to better outcomes.