GoTunnel¶
Secure TCP tunnels that expose a local service to the internet in seconds.
This repository hosts the prebuilt GoTunnel client binaries for the public beta. Use the official download page for the recommended installer for your platform, or grab a release artifact directly from GitHub.
Beta: these are beta builds. Update anytime with
gotunnel update.
Download¶
Get the latest GoTunnel build from the official download page:
Direct release artifacts are also available below:
| Platform | Architecture | Download |
|---|---|---|
| macOS | Apple Silicon (M1+) | gotunnel-darwin-arm64 |
| macOS | Intel | gotunnel-darwin-amd64 |
| Linux | x86-64 | gotunnel-linux-amd64 |
| Linux | ARM64 | gotunnel-linux-arm64 |
| Windows | x86-64 | gotunnel-windows-amd64.exe |
Or see all builds on the releases page.
Install¶
macOS (Apple Silicon)¶
curl -L -o gotunnel https://github.com/bakare-dev/gotunnel-io/releases/latest/download/gotunnel-darwin-arm64
chmod +x gotunnel
sudo mv gotunnel /usr/local/bin/gotunnel
xattr -dr com.apple.quarantine /usr/local/bin/gotunnel # if Gatekeeper blocks it
(For Intel Macs, swap gotunnel-darwin-arm64 for gotunnel-darwin-amd64.)
Linux (x86-64)¶
curl -L -o gotunnel https://github.com/bakare-dev/gotunnel-io/releases/latest/download/gotunnel-linux-amd64
chmod +x gotunnel
sudo mv gotunnel /usr/local/bin/gotunnel
(For ARM64, use gotunnel-linux-arm64.)
Windows¶
Download gotunnel-windows-amd64.exe, then in PowerShell install it to a per-user folder and add that folder to your PATH:
$dir = "$env:LOCALAPPDATA\Programs\gotunnel"
New-Item -ItemType Directory -Force -Path $dir | Out-Null
Move-Item -Force "$HOME\Downloads\gotunnel-windows-amd64.exe" "$dir\gotunnel.exe"
$old = [Environment]::GetEnvironmentVariable("Path","User")
if ($old -notlike "*$dir*") { [Environment]::SetEnvironmentVariable("Path", "$old;$dir", "User") }
$env:Path += ";$dir"
gotunnel version
The $env:Path += ";$dir" line makes gotunnel work in the current window; the SetEnvironmentVariable line makes it stick for new terminals. If gotunnel still isn't found, open a new PowerShell window.
Quick start¶
Expose a local service (e.g. running on port 3000) through the managed server:
gotunnel --server gotunnel.bakaredev.site --local localhost:3000
The first time you run it on a device, GoTunnel asks for your Gmail address and emails you a one-time code to join the beta (one device per address). After that, the device stays signed in and connects straight away.
You'll get a public https://<random>.gotunnel.bakaredev.site URL forwarding to your local port. Press q or Ctrl-C to stop.
Update¶
Upgrade to the latest release in place:
gotunnel update
Commands¶
gotunnel --server <host> --local localhost:<port> Start a tunnel (client)
gotunnel update Update to the latest release
gotunnel version Show the installed version
gotunnel help Show all options
Documentation¶
GoTunnel isn't fully open source, but the docs below explain how it works so you can understand what you're running before you trust it with your traffic.
| Document | What it covers |
|---|---|
| Self-Hosting | Run your own GoTunnel server on a VPS instead of the managed host |
| Architecture | How the client, server, tunnels, and security model fit together |
| Protocol | The binary wire protocol: frames, message types, and the session state machine |
| Changelog | What changed in each release |
Feedback and issues¶
Found a bug or have a request? Open an issue. If GoTunnel is useful to you, consider starring the repo to follow releases.