diff --git a/examples/meteorapp.test/BACKUP b/examples/meteorapp.test/BACKUP
new file mode 100755
index 0000000000000000000000000000000000000000..a9db4e09738b35fe261e4a715339c07adf8052e8
--- /dev/null
+++ b/examples/meteorapp.test/BACKUP
@@ -0,0 +1,5 @@
+#!/bin/bash -eux
+URL=${PWD##*/}
+db_container_name=`echo ${URL}_db_1 | sed "s/\.//"`; \
+
+docker exec $db_container_name mongodump
diff --git a/examples/meteorapp.test/RUN b/examples/meteorapp.test/RUN
new file mode 100755
index 0000000000000000000000000000000000000000..c9048d9e4d2e4f507620b64ade9e2f68a6ec76d8
--- /dev/null
+++ b/examples/meteorapp.test/RUN
@@ -0,0 +1,5 @@
+#!/bin/bash -eux
+/opt/bin/docker-compose kill || :
+/opt/bin/docker-compose rm -f || :
+/opt/bin/docker-compose up
+
diff --git a/examples/meteorapp.test/STOP b/examples/meteorapp.test/STOP
new file mode 100755
index 0000000000000000000000000000000000000000..ebf270342347ed0125f56251cbe5a0369f7d0d6d
--- /dev/null
+++ b/examples/meteorapp.test/STOP
@@ -0,0 +1,2 @@
+#!/bin/bash -eux
+/opt/bin/docker-compose stop
diff --git a/examples/meteorapp.test/docker-compose.yml b/examples/meteorapp.test/docker-compose.yml
new file mode 100644
index 0000000000000000000000000000000000000000..eb892beab62b216db024a4664815d5c834405e41
--- /dev/null
+++ b/examples/meteorapp.test/docker-compose.yml
@@ -0,0 +1,17 @@
+db:
+  image: mongo
+  volumes:
+    - data/runtime/db:/data/db
+    - data/dump:/dump
+  command: mongod --smallfiles
+web:
+  image: mateorapp
+  environment:
+    - MONGO_URL=mongodb://db:27017/meteor
+    - ROOT_URL=https://meteorapp.test
+  links:
+    - db:db
+  volumes:
+    - logs:/home/app/logs
+  ports:
+    - 80
diff --git a/scripts/install.sh b/scripts/install.sh
index dd8ecb62e28a336b53b980282bbb2535c44bbb09..d2159d23a696a588578860b44553160b951bfc43 100755
--- a/scripts/install.sh
+++ b/scripts/install.sh
@@ -46,4 +46,7 @@ TRUST_VALUE=':6:'
 echo $TRUSTVAR$TRUST_VALUE | gpg --import-ownertrust
 
 docker run --rm -v /opt/bin:/target jpetazzo/nsenter
+curl -L https://github.com/docker/compose/releases/download/1.2.0/docker-compose-`uname -s`-`uname -m` > /opt/bin/docker-compose
+chmod +x /opt/bin/docker-compose
+update_engine_client -update
 
diff --git a/unit-files/backup-u@.service b/unit-files/backup-u@.service
new file mode 100644
index 0000000000000000000000000000000000000000..e55ecef784b8ac87eb08c1d21006a589e31b1f9b
--- /dev/null
+++ b/unit-files/backup-u@.service
@@ -0,0 +1,23 @@
+[Unit]
+Description=Back up data from %i
+
+[Service]
+Type=oneshot
+TimeoutStartSec=0
+Nice=0
+WorkingDirectory=/data/domains/%i/
+EnvironmentFile=/etc/environment
+ExecStartPre=/bin/bash -euxc 'sleep `shuf -i 0-400 -n 1`'
+ExecStartPre=/bin/bash -euxc '/data/domains/%i/BACKUP'
+ExecStart=/bin/bash -euxc ' \
+  /bin/docker run \
+    --rm \
+    --name backup-%i \
+    -h backup.container \
+    -v /root:/root \
+    -v /data/domains/%i:/backup indiepaas/duplicity \
+      --full-if-older-than 1W \
+      --encrypt-key ${ENCRYPT_KEY} \
+        /backup \
+        sftp://${BACKUP_DESTINATION}/%i'
+
diff --git a/unit-files/backup-u@.timer b/unit-files/backup-u@.timer
new file mode 100644
index 0000000000000000000000000000000000000000..33a4c636de8f587c837df925bd527ab26af0fa88
--- /dev/null
+++ b/unit-files/backup-u@.timer
@@ -0,0 +1,10 @@
+[Unit]
+Description=Hourly backup of www and mysql content.
+
+# Dependency binding
+BindsTo=universal@%i.service
+
+[Timer]
+OnActiveSec=20
+OnUnitActiveSec=60min
+
diff --git a/unit-files/discovery-u@.service b/unit-files/discovery-u@.service
new file mode 100644
index 0000000000000000000000000000000000000000..b0460533247f880c8bf578d12da0ca1c9aafa541
--- /dev/null
+++ b/unit-files/discovery-u@.service
@@ -0,0 +1,20 @@
+[Unit]
+Description=%p for %i etcd registration
+
+# Requirements
+Requires=etcd.service
+
+# Dependency binding
+BindsTo=universal@%i.service
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+Environment=URL=%i
+ExecStart=/bin/bash -euxc ' \
+  sleep 3; \
+  container_name=`echo ${URL}_web_1 | sed "s/\.//"`; \
+  ip=`docker inspect --format \'{{.NetworkSettings.IPAddress}}\' $container_name`; \
+  etcdctl --peers 172.17.42.1:4001 set /services/web/%i \'{"ip":"\'$ip\'", "port":"80"}\';'
+ExecStop=-/usr/bin/etcdctl rm /services/web/%i
+
diff --git a/unit-files/universal@.service b/unit-files/universal@.service
new file mode 100644
index 0000000000000000000000000000000000000000..1ef0e9056b39cd92454b0fe3867264991c10a6b0
--- /dev/null
+++ b/unit-files/universal@.service
@@ -0,0 +1,19 @@
+[Unit]
+Description=%p-%i
+
+# Requirements
+Requires=docker.service
+Requires=discovery-u@%i.service
+Requires=backup-u@%i.timer
+
+# Dependency ordering
+After=docker.service
+Before=discovery-u@%i.service
+Before=backup-u@%i.timer
+
+[Service]
+WorkingDirectory=/data/domains/%i/
+ExecStartPre=/bin/cp /data/domains/%i/TLS/%i.pem /data/runtime/haproxy/approved-certs/%i.pem
+ExecStart=/bin/bash -euxc '/data/domains/%i/RUN'
+ExecStop=/data/domains/%i/STOP
+