The complete Buddycloud stack in a VM
SaltStack Scheme Shell
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


This Vagrant-based virtual machine can be run locally as a complete buddycloud stack including the following components:

  • xmpp server (Prosody and Tigase are included)
  • buddycloud-server-java
  • buddycloud-http-api
  • buddycloud-media-server
  • buddycloud-pusher
  • buddycloud-angular-app

Project Goals

Ship identical bits to dev and production: When development, staging and production environments use identical orchestration files you reduce the "but it worked in dev" scenarios.

Quick: The buddycloud-vm project is designed to a new developer a complete Buddycloud stack in about 10 mintues. Running locally.

How it works

  1. Vagrant to build a VM
  2. Install a definied list of components.
  3. Configure each package.

The VM is designed to expose buddycloud-services out to your workstation:

 |                                                 |
 |   Local workstation                             | 
 |   -----------------                             | 
 |                                                 | 
 |   * port forwards 5222,5269,5432,8080           | 
 |   *        |
 |                                                 | 
             |          |             |
       (port 2222) (port 5222)  (port 8080)
             |          |             |
 |                                                 |
 |   buddycloud-VM                                 |
 |   -------------                                 |
 |   * hostname:          |
 |   * runs complete buddycloud stack              |
 |   * TLS functions disabled                      |
 |   * federation disabled                         |
 |                                                 |



git clone
cd buddycloud-vm
vagrant up

Have patience! The build process will take anywhere from 5 to 10 minutes. You can watch progress with sudo tail -F /var/log/salt/minion inside the VM.


Making Changes

Outside the VM Inside the VM
basic what to install saltstack/salt_local/salt /srv/salt_local/salt
basic configs saltstack/salt_local/pillar /srv/salt_local/pillar
somewhere for your own changes saltstack/my_saltstack_repo /srv/my_saltstack_repo
buddycloud stack as a fallback for all packages saltstack/buddycloud_saltstack_repo /srv/buddycloud_saltstack_repo

Activating the changes

salt "*" state.highstate -l all

about is a special sub-domain hosted for this project. It answers all DNS queries with which is great for testing code inside a VM.

for reference this is the current zone-file:           A
api                                 A
webclient                           A
friendfinder                        A
search                              A
topics                              A
pusher                              A
s2s                                 A
buddycloud                          A
media                               A
c2s                                 A
channels                            A
_xmpp-client._tcp                   SRV 5 0 5222
_xmpp-server._tcp                   SRV 5 0 5269
_xmpp-server._tcp                   SRV 5 0 5269
_xmpp-server._tcp                   SRV 5 0 5269
_xmpp-server._tcp                   SRV 5 0 5269
_xmpp-server._tcp                   SRV 5 0 5269
_xmpp-server._tcp                   SRV 5 0 5269
_xmpp-server._tcp                   SRV 5 0 5269
_bcloud-server._tcp                 TXT "v=1.0"
_buddycloud-api._tcp                TXT "v=1.0 protocol=https path=/api port=8080"

Shutting down the VM

  • Shut down Vagrant with: vagrant halt.
  • Running vagrant kill will remove all disks and configs.

Deploying to cloud-providers

Generally you will want to run your own copy of saltstack to orchestrate changes to your production environment. If you would rather copy VMs around, edit the Vagrantfile and install the provider plugin.

For example, Google Cloud (background reading) uses

vagrant plugin install vagrant-google
vagrant up --provider=google