- ntp (time sync)
- ufw (firewall, always active)
- Passenger (for Ruby on Rails apps, or Flask/Django apps)
- Nginx (web server) + Lets Encrypt SSL for all your apps
- Percona mySQL (database)
- Postfix (mail server w/ own TLS certificate) + OpenDKIM
- tarsnap (encrypted backups stored remotely)
- munin basic monitoring for nginx mysql passenger cpu ram
- your latest HTML+CSS apps from your own git repository
- your latest Middleman apps from your own git repository
- your latest Ruby on Rails apps from your own git repo
- keeps the latest 5 versions of all your deployed web apps
- creates nightly (tarsnap) backups of your apps +DBs +SSLs
- script to maintain & prune backups according to a schedule
- deploy-time restores from backups of the Rails apps +DBs
- install brew and rvm
- install ansible latest/2.7+ with brew
- load your SSH keys into the ssh-agent (with ssh-add)
- ready*
- NOTE: you need to store your certbot and tarsnap keys to the files/ path
- see the README in files/, and your SSH (public) keys must go to public-keys/
- then, you need to update your DNS records, see https://wiki.debian.org/opendkim
- NOTE: when updating production ENVs, use -e backup=no (do NOT restore DBs/files)
- while OSX is not actually required, it could make your experience more rewarding 🤓
ansible-playbook deploy.yml -i inventory.yml -e target=minus
ansible-playbook deploy.yml -i inventory.yml -e target=minus -e filter=tacsi
ansible-playbook deploy.yml -i inventory.yml -e target=minus -e filter=tacsi -e certforce=yes
ansible-playbook rails.yml -i inventory.yml -e target=minus
ansible-playbook rails.yml -i inventory.yml -e target=minus -e backup=no
ansible-playbook middleman.yml -i inventory.yml -e target=minus
ansible-playbook static.yml -i inventory.yml -e target=minus
ansible-playbook certs.yml -i inventory.yml -e target=minus
ansible-playbook deploy.yml -i inventory.yml -e target=minus -e usessl=no -e active=no
ansible-playbook domains.yml -i inventory.yml -e target=minus -e usessl=no