algo

Deploy from script or cloud-init

You can use install.sh to prepare the environment and deploy AlgoVPN on the local Ubuntu server in one shot using cloud-init, or run the script directly on the server after it’s been created. The script doesn’t configure any parameters in your cloud, so you’re on your own to configure related firewall rules, a floating IP address and other resources you may need. The output of the install script (including the p12 and CA passwords) can be found at /var/log/algo.log, and user config files will be installed into the /opt/algo/configs/localhost directory. If you need to update users later, cd /opt/algo, change the user list in config.cfg, install additional dependencies as in step 4 of the main README, and run ./algo update-users from that directory.

Cloud init deployment

You can copy-paste the snippet below to the user data (cloud-init or startup script) field when creating a new server.

For now this has only been successfully tested on DigitalOcean, Amazon EC2 and Lightsail, Google Cloud, Azure and Vultr, although Vultr doesn’t officially support cloud-init.

#!/bin/bash
curl -s https://raw.githubusercontent.com/trailofbits/algo/master/install.sh | sudo -E bash -x

The command will prepare the environment and install AlgoVPN with the default parameters below. If you want to modify the behavior you may define additional variables.

Variables

Examples

How to customise a cloud-init deployment by variables
#!/bin/bash
export ONDEMAND_CELLULAR=true
export SSH_TUNNELING=true
curl -s https://raw.githubusercontent.com/trailofbits/algo/master/install.sh | sudo -E bash -x
How to deploy locally without using cloud-init
export METHOD=local
export ONDEMAND_CELLULAR=true
export ENDPOINT=[your server's IP here]
curl -s https://raw.githubusercontent.com/trailofbits/algo/master/install.sh | sudo -E bash -x
How to deploy a server using arguments

The arguments order as per variables above

curl -s https://raw.githubusercontent.com/trailofbits/algo/master/install.sh | sudo -E bash -x -s local true false _null true true true true myvpnserver.com phone,laptop,desktop