使用 Go 实现的 Trojan 代理,兼容原版 Trojan 协议与配置格式,并在此基础上扩展了多路复用、WebSocket、路由、API、AEAD 和传输层插件等能力。
预编译二进制可执行文件可在 Release 页面下载。
完整配置和使用文档请见 Trojan-Go 文档。
Trojan-Go 当前支持:
- 原版 Trojan 协议兼容
- TLS 隧道传输
- UDP 代理
- HTTP / SOCKS 自动识别
- 多路复用(Mux)
- WebSocket over TLS
- 路由分流
- Shadowsocks AEAD 二次加密
- 可插拔传输层插件
- gRPC API
- MySQL 用户认证与流量持久化
- YAML / JSON 配置
- TProxy / NAT / forward / custom 等运行模式
服务端:
sudo ./trojan-go -server -remote 127.0.0.1:80 -local 0.0.0.0:443 -key ./your_key.key -cert ./your_cert.crt -password your_password客户端:
./trojan-go -client -remote example.com:443 -local 127.0.0.1:1080 -password your_password./trojan-go -config config.json./trojan-go -url 'trojan-go://password@cloudflare.com/?type=ws&path=%2Fpath&host=your-site.com'docker run \
--name trojan-go \
-d \
-v /etc/trojan-go/:/etc/trojan-go \
--network host \
thomasgame/trojan-go或显式传入配置路径:
docker run \
--name trojan-go \
-d \
-v /path/to/host/config:/path/in/container \
--network host \
thomasgame/trojan-go \
/path/in/container/config.json请确保 Go 版本 >= 1.26
仓库根是工作区根,真正的 Go 模块位于 src/。
使用 make:
git clone https://github.com/thomasgame/trojan-go.git
cd trojan-go
make
make test或直接在模块根构建:
cd src
go build -tags "full"交叉编译示例:
cd src
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -tags "full"
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -tags "full"
CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -tags "full"仅启用部分功能时,也可以使用 build tags:
cd src
go build -tags "client"
go build -tags "server mysql"
go build -tags "api client server forward nat other"当前仓库已经切换为 src/ 作为 Go 模块根。可以粗略理解为:
repo/
README.md
Makefile
Dockerfile
go.work
docs/
example/
src/
go.mod
cmd/
build/
internal/
pkg/
common/
constant/
config/
mobilebind/
其中:
src/cmd进程入口src/build编译期装配层src/internal/app启动流程、运行模式、CLI 特性、注册入口src/internal/core协议抽象、代理编排、配置、认证、转发原语src/internal/controlgRPC 与 CLI 控制面src/internal/infra日志、统计、geodata 等基础设施实现src/internal/transport入站、出站和传输层协议实现src/pkg对外稳定导出的公共能力
如果你是第一次阅读这个仓库,建议按下面顺序进入:
src/cmd/trojan-go/main.gosrc/internal/app/bootstrapsrc/buildsrc/internal/app/wiringsrc/internal/app/modesrc/internal/core/proxysrc/internal/core/tunnelsrc/internal/transport
更详细的结构说明见:
docs/project-structure.mddocs/content/developer/overview.mddocs/content/developer/build.md
服务端配置示例:
{
"run_type": "server",
"local_addr": "0.0.0.0",
"local_port": 443,
"remote_addr": "127.0.0.1",
"remote_port": 80,
"password": ["your_awesome_password"],
"ssl": {
"cert": "your_cert.crt",
"key": "your_key.key",
"sni": "www.your-awesome-domain-name.com"
}
}客户端配置示例:
{
"run_type": "client",
"local_addr": "127.0.0.1",
"local_port": 1080,
"remote_addr": "www.your-awesome-domain-name.com",
"remote_port": 443,
"password": ["your_awesome_password"]
}等价的 YAML 示例:
run-type: client
local-addr: 127.0.0.1
local-port: 1080
remote-addr: www.your-awesome-domain-name.com
remote-port: 443
password:
- your_awesome_passwordTrojan-Go 服务端兼容所有原 Trojan 客户端,如 Igniter、ShadowRocket 等。
以下客户端对 Trojan-Go 扩展特性支持更完整: