TunnelFleet asks you to run an installer as root on a VPS you own. The agent stays closed. The installer is transparent: documented steps, a checksummed sample, and a per-server enrollment token as the only secret.
Last updated: August 15, 2026
VPN client traffic stays on your VPS. It does not transit TunnelFleet. We are a control plane: a dashboard that queues work, plus an agent on your server that polls over HTTPS.
Anyone with Owner or Admin in your organization can cause that agent to change VPN software, users, firewall rules, and files on the box. Treat those roles like root.
Everyone runs the same installer. Per-server values are environment variables and Bearer-authenticated fetches — they never appear in the script URL:
TUNNELFLEET_TOKEN='…' TUNNELFLEET_URL='https://tunnelfleet.com' TUNNELFLEET_IP='…' bash <(curl -fsSL https://tunnelfleet.com/install.sh)
DigitalOcean droplets run that same file via cloud-init (curl, sha256sum -c, then bash). You do not SSH.
Do not post the token. It is sent only as Authorization: Bearer — not in the path — so it does not land in access logs the way /install/TOKEN would.
curl -fsSL https://tunnelfleet.com/install.sh -o install.shcurl -fsSL https://tunnelfleet.com/install.sh.sha256 | sha256sum -c -less install.shTUNNELFLEET_TOKEN, TUNNELFLEET_URL, and TUNNELFLEET_IP from the dashboard, then bash install.shCanonical file: https://tunnelfleet.com/install.sh
SHA-256: https://tunnelfleet.com/install.sh.sha256
8e4ac42c361b9f5e3abb7044c6a49e6e66feca8242513782c487286ca47d312e install.sh
/opt/tunnelfleet/.provisioned already exists. Checks that this host’s public IP matches the IP registered in TunnelFleet.ca-certificates, curl, Docker Engine + Compose (Docker’s HTTPS apt repo, GPG signed-by), WireGuard kernel module/tools. A failed apt-get install of those packages aborts the install.rp_filter=2.tunnelfleet./usr/local/bin/tunnelfleet-agent with a Bearer header, verifies SHA-256, installs systemd (ProtectHome=yes, PrivateTmp=yes). A mismatch or failed start aborts — the provisioned marker is not written./opt/tunnelfleet/.provisioned only after the agent is installed and verified.Product walkthrough: Installation.
/api/servers/status (progress) and /api/servers/installed, with the enrollment token./api/agent/commands about every five seconds over HTTPS and POSTs command results. Outbound only — we do not open an inbound port to the agent.Install-time fetches use HTTPS. Docker’s apt repo is pinned with their GPG key (signed-by). The agent is downloaded with a Bearer token and checked with SHA-256 before systemd starts it. The expected hash is embedded in install.sh and must match the hash the control plane returns at bootstrap.
Credentials for protocol images are a read-only Docker pull token scoped to TunnelFleet images. They are not injected into the checksummed installer; they arrive in the authenticated host payload.
The agent is not open source. Dashboard actions (and repairs) queue commands it applies as root:
Protocol install and firewall need root. We do not pretend this is a sandbox. If you need an air-gapped box with no vendor agent, run WireGuard yourself — see manual WireGuard vs TunnelFleet.
Details and retention: Privacy Policy.
Your VPS keeps running. You keep SSH and root. Installed protocols keep working until you change them. The agent will fail to poll; disable tunnelfleet-agent.service and manage the box by hand.
install.sh, check the SHA-256, read it, then run it with env vars — never pipe unseenhttps://tunnelfleet.com and Docker’s HTTPS endpointsNo. The installer is the same public file for every customer, checksummed on this page. The agent remains closed. Permissions and phone-home behavior are documented above.
No. Client traffic stays on your VPS. TunnelFleet only receives control-plane data: server metadata, command results, and logs you pull from the dashboard.
Yes. You retain root on every server. The agent is additional automation, not a replacement for your access.
Docker NAT and VPN MASQUERADE must forward packets from the tunnel interface to the WAN. UFW INPUT remains default-deny. Only SSH and the VPN ports you enabled are allowed inbound.
Servers keep running on your VPS. You can manage them over SSH. TunnelFleet stops being able to queue new commands once the agent can no longer authenticate.
7-day free trial. Your VPS, your root, unlimited VPN users.