Repolode
trailofbits

trailofbits/algo

Ansible scripts that deploy a personal WireGuard and IPsec VPN server to your own cloud account in minutes.

Open-source alternative to:NordVPNExpressVPNSurfshark

Stars
30,434
Forks
2,369
Open issues
84
Last commit
7 days ago

What is it?

Algo VPN is a set of Ansible scripts that set up a personal VPN server on a cloud provider you already use, such as DigitalOcean, Amazon EC2, Vultr, Azure, Google Compute Engine, or Hetzner Cloud. It creates the virtual machine, configures the server, and generates client configuration files, so you run your own endpoint instead of trusting a commercial VPN provider.

The project supports WireGuard for iOS, macOS, Android, Windows, and Linux, and IPsec with IKEv2 for Apple devices and Linux clients. It generates .conf files and QR codes for WireGuard, Apple profiles for built-in IPsec on iOS and macOS, and includes helper commands to add or remove users later. Optional features include a local DNS resolver that blocks ads and SSH users limited to tunneling.

Algo uses Ubuntu 22.04 LTS with automatic security updates and a deliberately narrow set of cipher suites, and it limits logging by default. It does not claim to provide anonymity or censorship avoidance.

Key features

  • 01Deploys WireGuard and IPsec (IKEv2) VPN servers to common cloud providers and existing Ubuntu servers
  • 02Generates WireGuard .conf files and QR codes for iOS, macOS, Android, and Windows
  • 03Creates Apple profiles to configure built-in IPsec on iOS and macOS without extra client software
  • 04Includes scripts to add, remove, and update users after deployment
  • 05Optional local DNS resolver for blocking ads and SSH users limited to tunneling
  • 06Minimal logging with automatic rotation and configurable privacy settings

Use cases

  • Running a personal VPN on your own cloud server instead of a commercial VPN service
  • Securing traffic on public Wi-Fi from a laptop or phone
  • Giving a small group of family members or colleagues separate VPN credentials per device
  • Routing traffic through a cloud region of your choice

Quick start

  1. 1

    Get a copy of Algo with git clone

    git clone https://github.com/trailofbits/algo.git
  2. 2

    Edit config.cfg to list the users you want to create

  3. 3

    Start the deployment from the Algo directory on macOS/Linux

    ./algo

Things to know

  • Requires your own account with a supported cloud provider or an Ubuntu server, which costs money.
  • Licensed under AGPL-3.0, a copyleft license that applies to modified network-served versions.
  • Windows use requires WSL because Ansible needs a Unix-like environment.

Topics

FAQ

What is algo?
Ansible scripts that deploy a personal WireGuard and IPsec VPN server to your own cloud account in minutes. Algo VPN is a set of Ansible scripts that set up a personal VPN server on a cloud provider you already use, such as DigitalOcean, Amazon EC2, Vultr, Azure, Google Compute Engine, or Hetzner Cloud. It creates the virtual machine, configures the server, and generates client configuration files, so you run your own endpoint instead of trusting a commercial VPN provider.
Is algo free to use? What license does it have?
algo is open source under the AGPL-3.0 license. Check the license terms before using it in commercial products.
Is algo still maintained?
Actively maintained. The last commit to algo was on Oct 14, 2026.
What can I use algo for?
Running a personal VPN on your own cloud server instead of a commercial VPN service Securing traffic on public Wi-Fi from a laptop or phone Giving a small group of family members or colleagues separate VPN credentials per device Routing traffic through a cloud region of your choice
How do I install algo?
Get a copy of Algo with git clone: git clone https://github.com/trailofbits/algo.git Edit config.cfg to list the users you want to create Start the deployment from the Algo directory on macOS/Linux: ./algo
Where can I get algo?
The source code and installation instructions are on GitHub: https://github.com/trailofbits/algo

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects