run a vpn service with global exit nodes with fly.io and tailscale
README.md

Tailscale on Fly.io #

Warning

Deprecated in favor of Tailscale Mullvad add-on.

GitHub Action Status (Pass -> new version updated / Fail -> no update)

GitHub Action Status (Pass -> deployed to Fly.io / Fail -> deployment failed)

Forked from https://github.com/patte/fly-tailscale-exit.

Setup #

You'll need to modify Dockerfile, fly.toml and start.sh before deploy to Fly.io.

Dockerfile #

Optional: Double check the version specified matches the latest version available at https://pkgs.tailscale.com/stable/.

GitHub Action will auto update Tailscale version on Sundays.

fly.toml #

Change app = "com-stepbrobd-vpn" to your preferred app name.

setup.sh #

Change --hostname=com-stepbrobd-vpn-${FLY_REGION} to your preferred hostname.

Deployment #

Make sure you have a Tailscale account, a Fly.io account, and a computer with flyctl installed.

  1. Go to https://login.tailscale.com/admin/settings/keys to generate a new auth key.

  2. Run fly launch to initialize the app (do NOT deploy at this step).

  3. Run fly secrets set TAILSCALE_AUTH_KEY=YOUR-KEY, replace YOUR_KEY with the key generated in step 1.

  4. Run fly deploy.

  5. Scale the app if you want, see documentation https://fly.io/docs/reference/regions/#fly-io-regions.

Redeployment #

redeploy.py will delete exit node machines on your Tailnet matching criteria and redeploy based on your local flyctl configuration.