My VPN setup Create dedicated user with random generated password Install basic packages Support CentOS and Ubuntu Install Docker and Docker Compose Configure SSH with non default port and fail2ban Clone and deploy amazing project (OpenVPN + PiHole) Configuration vpn.yaml vpn.ini Vars ./setup/roles/base/vars/main.yaml ./setup/roles/container/vars/main.yaml ./setup/roles/ssh/vars/main.yaml ./setup/roles/vpn/vars/main.yaml Usage Bateries included ansible-playbook vpn.yaml VPN configuration ansible-playbook vpn.yaml --extra-vars "vpn_name=foo vpn_password=bar" Keep SSH with default config (insecure) ansible-playbook vpn.yaml --skip-tags ssh Only VPN (make sure you already have all dependencies) ansible-playbook vpn.yaml --tags vpn Vagrant vagrant up