explaingit

go-gost/gost

6,791GoAudience · ops devopsComplexity · 3/5Setup · moderate

TLDR

A Go-based network tunneling tool that works as a forward proxy, port forwarder, or reverse proxy, supporting chained servers and many protocols to route traffic through firewalls or expose private services to the internet.

Mindmap

mindmap
  root((GOST Tunnel))
    Modes
      Forward proxy
      Port forwarding
      Reverse proxy
    Features
      Server chaining
      TCP and UDP
      DNS proxying
      Load balancing
    Config
      Runtime web API
      Plugin system
      Prometheus metrics
    Install
      Binary download
      Docker
      Build from source
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Expose a home server or local development service to the public internet without opening router ports

USE CASE 2

Chain multiple proxy servers together so traffic hops through several machines before reaching its destination

USE CASE 3

Set up transparent proxying that redirects network traffic without the connecting app knowing

USE CASE 4

Monitor proxy traffic and performance using built-in Prometheus metrics

Tech stack

GoDockerPrometheus

Getting it running

Difficulty · moderate Time to first run · 30min
No license information found in the explanation.

In plain English

GOST, which stands for GO Simple Tunnel, is a network tunneling tool written in the Go programming language. A tunnel in this context is software that takes network traffic from one place and routes it through one or more intermediate servers, often to bypass network restrictions or to expose a private service to the public internet. The README is written in Chinese, but the feature list and project structure are clear enough to describe. The tool supports three main modes of operation. In forward proxy mode, it acts as a proxy server that other programs can route traffic through, and multiple proxy servers can be chained together in sequence. In port forwarding mode, it maps a port on one machine to a port on another, also with optional chaining through multiple hops. In reverse proxy mode, it creates a tunnel that lets a server running on a private network (like a home computer behind a router) be reachable from the public internet without opening router ports manually. Beyond these three core patterns, GOST supports a long list of additional capabilities: handling both TCP and UDP traffic, transparent proxying (routing traffic without the connecting program knowing), DNS resolution and DNS proxying, virtual network interfaces (TUN and TAP devices for VPN-style setups), load balancing across multiple upstream servers, rate limiting, routing rules that decide which traffic to bypass or forward, and an admission control system for filtering connections. Configuration can be changed at runtime through a web API, so you do not need to restart the process to update settings. A plugin system allows extending the tool's behavior. Prometheus monitoring metrics are supported for tracking performance. A desktop GUI application and a web-based UI are available as separate companion projects. Installation options include downloading a prebuilt binary, running an install script, building from source with the Go toolchain, or running via Docker. Documentation and tutorials are on the project website at gost.run.

Copy-paste prompts

Prompt 1
Using gost, show me how to expose a local web server on port 3000 to the internet through a remote VPS.
Prompt 2
How do I chain two GOST proxy servers together so my traffic passes through both before reaching the destination?
Prompt 3
Walk me through setting up GOST as a SOCKS5 proxy server with username and password authentication on Linux.
Prompt 4
How do I use GOST's web API to update routing rules at runtime without restarting the process?
Prompt 5
Show me a Docker Compose setup that runs GOST as a reverse proxy in front of a local service.
Open on GitHub → Explain another repo

← go-gost on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.