Sign inSign up

ad80a1/ptg-server

By ad80a1

Updated 3 months ago

Port Tunnel 隧道穿透-服务端

Image
Networking
1

477

ad80a1/ptg-server repository overview

穿云隧道 (Port Tunnel Go) - Docker 镜像

轻量级 TCP/UDP 端口隧道,Go 语言编写,零依赖,单文件部署。参照了 NPS、FRP 等穿透工具的功能和 UI的优点,结合自身需求用 AI 辅助重写了全部代码,属于全新系统。

镜像

镜像说明大小
ad80a1/ptg-server服务端(含 Web 管理面板)~32MB
ad80a1/ptg-client客户端~11MB

快速开始

方案一:Host 网络模式(推荐)

适用场景: 个人/小团队、穿透端口较多、追求最佳性能

# 拉取镜像
docker pull ad80a1/ptg-server:latest
docker pull ad80a1/ptg-client:latest

# 启动服务端
docker run -d --name ptgs --restart unless-stopped --network host \
  -v /opt/port-tunnel-go:/opt/port-tunnel-go \
  ad80a1/ptg-server:latest

# 启动客户端
docker run -d --name ptgc --restart unless-stopped --network host \
  ad80a1/ptg-client:latest \
  --host 服务端IP --port 9999 --local 8080 --mode tcp \
  --remark "my-service" --token ***
  • ✅ 性能最好,无 NAT 开销
  • ✅ 配置简单,穿透端口自动可达
  • ⚠️ 容器与宿主机共享网络栈,存在端口冲突风险
方案二:端口映射模式

适用场景: 生产环境、多服务共存、需要安全隔离

# 启动服务端(映射管理端口)
docker run -d --name ptgs --restart unless-stopped \
  -p 8888:8888 \
  -p 9999:9999 \
  -v /opt/port-tunnel-go:/opt/port-tunnel-go \
  ad80a1/ptg-server:latest

# ⚠️ 穿透端口需额外映射,例如映射 3000 端口:
docker run -d --name ptgs --restart unless-stopped \
  -p 8888:8888 \
  -p 9999:9999 \
  -p 3000:3000 \
  -v /opt/port-tunnel-go:/opt/port-tunnel-go \
  ad80a1/ptg-server:latest
  • ✅ 安全隔离,容器网络独立
  • ✅ 无端口冲突,可自定义映射端口
  • ⚠️ 穿透端口必须在 docker run 中显式映射
方案选择建议
场景推荐方案
个人 / 小团队Host 模式 — 简单高效
生产环境 / 多服务共存端口映射 — 安全隔离
穿透大量端口Host 模式 — 避免逐个映射
Docker Swarm / K8s端口映射 — 符合编排规范
⚠️ 升级注意

新版本镜像会自动更新程序文件(server-bin、static),但 config.json 不会被覆盖(保留用户配置)。如果你之前部署过旧版本且 config.json 中有硬编码的公网 IP,升级后请到系统设置确认 IP 是否正确,或手动删除 /opt/port-tunnel-go/config.json 让容器重新初始化。

二级转发

二级转发允许将流量从服务端再转发到另一个目标地址,实现多级代理链路。典型场景:

  • 跨网络穿透:A 网络 → 服务端 → B 网络
  • 多级代理:客户端不直连目标,而是通过服务端中转
  • 流量中继:将公网端口流量转发到内网另一台机器
原理
用户 → 服务端公网端口 → 客户端 → --target 目标地址

客户端收到服务端转发的流量后,不会发到本地 --local 地址,而是转发到 --target 指定的目标。

使用方法

只需在客户端启动参数中添加 --target 即可:

# 将服务端 8080 端口的流量,转发到 192.168.1.100:80
docker run -d --name ptgc --restart unless-stopped --network host \
  ad80a1/ptg-client:latest \
  --host 服务端IP --port 9999 --local 8080 --mode tcp \
  --target 192.168.1.100:80 \
  --remark "relay-to-100" --token ***
完整示例:跨服务器转发

场景: 将阿里云服务端的 8080 端口,转发到百度云内网的 3306(MySQL)。

第一步:启动服务端(阿里云)

docker run -d --name ptgs --restart unless-stopped --network host \
  -v /opt/port-tunnel-go:/opt/port-tunnel-go \
  ad80a1/ptg-server:latest

第二步:启动客户端(百度云或公司内网,能访问 MySQL 的机器)

docker run -d --name ptgc --restart unless-stopped --network host \
  ad80a1/ptg-client:latest \
  --host 阿里云IP --port 9999 --local 8080 --mode tcp \
  --target 127.0.0.1:3306 \
  --remark "mysql-relay" --token ***

第三步:连接

# 从任何机器连接阿里云 8080,实际到达百度云 MySQL
mysql -h 阿里云IP -P 8080 -u root -p
docker-compose 二级转发示例
version: "3.8"
services:
  ptg-client:
    image: ad80a1/ptg-client:latest
    container_name: ptgc
    network_mode: host
    command: >
      --host 服务端IP
      --port 9999
      --local 8080
      --mode tcp
      --target 192.168.1.100:80
      --remark "relay"
      --token ***
    restart: unless-stopped
⚠️ 二级转发注意事项
  • --local--target 二选一:指定了 --target 后,--local 不生效
  • 目标地址必须是客户端机器能访问到的地址
  • 端口映射模式下,服务端也需要映射对应的穿透端口
  • 建议配合 --token 使用,避免未授权访问

客户端参数

参数默认值说明
--local(必填)本地转发地址,如 8080127.0.0.1:8080
--host0.0.0.0服务端地址
--port9999服务端管理端口
--modetcp隧道模式:tcpudp
--minutes180隧道有效期(分钟)
--bind(自动)指定服务端映射端口
--remark(可选)隧道备注名称
--token(可选)访问令牌
--target(可选)二级转发目标地址(与 --local 互斥)
--tag(可选)隧道标签

数据持久化

服务端数据文件存储在 /opt/port-tunnel-go/,务必挂载此目录:

-v /opt/port-tunnel-go:/opt/port-tunnel-go

docker-compose

Host 模式
version: "3.8"
services:
  ptg-server:
    image: ad80a1/ptg-server:latest
    container_name: ptgs
    network_mode: host
    volumes:
      - ./data:/opt/port-tunnel-go
    restart: unless-stopped
端口映射模式
version: "3.8"
services:
  ptg-server:
    image: ad80a1/ptg-server:latest
    container_name: ptgs
    ports:
      - "8888:8888"
      - "9999:9999"
    volumes:
      - ./data:/opt/port-tunnel-go
    restart: unless-stopped

功能特性

  • TCP/UDP 隧道
  • Web 管理面板(仪表盘、隧道管理、日志、实时监控)
  • 端口池自动分配/回收
  • 过期自动释放
  • 二级转发(NPS 模式)
  • 流量统计 + 24小时趋势图
  • 客户端监控(在线列表、系统信息、网速、流量)
  • Token 认证 + IP 黑白名单
  • 客户端自动重连
  • 隧道持久化(重启恢复)

源码

https://gitee.com/cncsrf/port-tunnel-go

License

MIT

Tag summary

Content type

Image

Digest

sha256:8ef8267ef

Size

11.6 MB

Last updated

3 months ago

docker pull ad80a1/ptg-server