RedVPNSafe Internet

RedVPN for
Linux

A small command-line client. It runs without root and gives every program on the machine a local proxy on 127.0.0.1:1080.

Install

curl -fsSL https://vpn.red/dist/cli/install.sh | sh

x86_64 and aarch64, one static binary each, nothing else installed. As root it goes to /usr/local/bin; as a user to ~/.local/bin. Remove it with rm $(command -v redvpn).

Use

redvpn up                 # connect; prints the proxy address when ready
curl --socks5-hostname 127.0.0.1:1080 https://ip-geo.redvpn.workers.dev/   # prints: ok
redvpn status             # or: redvpn status --json
redvpn down

Point a browser, a terminal (ALL_PROXY=socks5h://127.0.0.1:1080) or any application that speaks SOCKS5 at the proxy. Use the hostname variant (socks5h, --socks5-hostname) so names are resolved on the far side.

Your plan

A new machine starts on the free plan, like a new phone. To use the plan you bought on vpn.red or in the app, sign in with the same e-mail address:

redvpn login              # e-mail, then the 6-digit code we send you
redvpn account            # plan, remaining free data, account code

Already have a device id from another install? redvpn login --cid <id> adopts it. The id and the session live in ~/.config/redvpn, readable by you only; redvpn logout drops the session.

Manual setup

If the servers that hand out the connection settings cannot be reached from your network, sign in at vpn.red/me, click Download VPN profile (it saves redvpn-profile.json) and load it:

redvpn import redvpn-profile.json

The file is checked the same way a downloaded configuration is (it is signed; an edited or foreign file is refused), then stored in ~/.config/redvpn. A profile older than the one already stored is refused unless you add --force. redvpn up still looks for newer settings whenever it can reach them.

Run it as a service

A user unit keeps the proxy up across logins without root:

mkdir -p ~/.config/systemd/user
curl -fsSL https://vpn.red/dist/cli/redvpn.service -o ~/.config/systemd/user/redvpn.service
systemctl --user enable --now redvpn
loginctl enable-linger $USER      # keep it running when you log out

The unit runs redvpn up --foreground. Global options: --state-dir, --log-level.

Whole machine (experimental)

sudo redvpn up --tun --resolvconf routes all traffic from the machine through RedVPN instead of only what you point at the proxy. It needs root, iproute2 and a hev-socks5-tunnel binary on PATH (the same bridge the phones use; build it from its source). The proxy mode above is the supported one; treat this as a preview and read redvpn --help.

Verify the download

The installer checks the binary against /dist/cli/SHA256SUMS before it installs anything. To do it by hand:

curl -fsSLO https://vpn.red/dist/cli/redvpn-linux-x86_64     # or redvpn-linux-aarch64
curl -fsSLO https://vpn.red/dist/cli/SHA256SUMS
sha256sum -c --ignore-missing SHA256SUMS
install -m 755 redvpn-linux-x86_64 ~/.local/bin/redvpn

Version 0.3.0:

88efd4779adb05b08a0dc7d7c3464eb8f91a8252d376510dc99362a34eb2f9c2  redvpn-linux-aarch64
801ab45e20f6802db88b2b42b627df7cb6008e1afedb8b03d7be18cce8d5d486  redvpn-linux-x86_64

Older releases stay at /dist/cli/<version>/.

Exit codes

0ok (status: connected)
1error (status: not connected)
2usage
3not entitled: free data used up, get Premium or sign in
4could not reach any server from this network
5already running
6missing privilege or tool (--tun)