avatar

范伟彬个人网

https://fanweibin.cn

  • 首页
  • 归档
  • 链接
  • 关于
  • AI 导航
  • 健康指南
主页 FastTunnel v2 内网穿透 Docker 部署完整指南(服务端 + 客户端)
文章

FastTunnel v2 内网穿透 Docker 部署完整指南(服务端 + 客户端)

发表于 最近 更新于 最近
作者 Administrator
25~33 分钟 阅读

标签:#内网穿透 #FastTunnel #Docker #运维 #Linux


前言

FastTunnel 是一款开源的内网穿透工具,支持 HTTP 站点穿透和 TCP 端口转发。本文记录将 FastTunnel 从传统二进制部署迁移至 Docker 容器化部署的完整过程,适用于需要将内网服务(如后台管理系统、文件管理器、CI/CD 工具等)暴露到公网的场景。

环境说明:

  • 服务端:阿里云 ECS

  • 客户端:内网 Ubuntu 24.04 服务器

  • Docker 版本:服务端 26.x,客户端 27.x


一、服务端部署(阿里云 ECS)

1.1 准备配置文件

mkdir -p /www/dk_project/dk_app/dk_fasttunnel_server/config

创建 appsettings.json(注意:JSON 不支持注释,务必使用标准格式):

cat > /www/dk_project/dk_app/dk_fasttunnel_server/config/appsettings.json << 'EOF'
{
  "Serilog": {
    "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ],
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Warning",
        "Yarp.ReverseProxy": "Warning",
        "Microsoft.Hosting.Lifetime": "Information"
      }
    },
    "WriteTo": []
  },
  "AllowedHosts": "*",
  "urls": "http://*:1270",
  "EnableFileLog": false,
  "FastTunnel": {
    "WebDomain": "你的根域名",
    "EnableForward": true,
    "Tokens": [ "你的Token" ],
    "Api": {
      "JWT": {
        "ClockSkew": 10,
        "ValidAudience": "https://suidao.io",
        "ValidIssuer": "FastTunnel",
        "IssuerSigningKey": "This is IssuerSigningKey",
        "Expires": 120
      },
      "Accounts": [
        {
          "Name": "admin",
          "Password": "admin123"
        }
      ]
    }
  }
}
EOF

关键配置说明:

配置项

说明

urls

服务端监听端口,客户端连接此端口

WebDomain

HTTP 穿透的根域名,如 example.com

EnableForward

开启 TCP 端口转发

Tokens

客户端认证 Token,需与客户端保持一致

Api.JWT

v2 版本必须配置,否则启动报 NullReferenceException

⚠️ 常见坑: v2 服务端必须配置 Api.JWT 节点,否则客户端连接时服务端会返回 500 错误。

1.2 创建 docker-compose.yml

cat > /www/dk_project/dk_app/dk_fasttunnel_server/docker-compose.yml << 'EOF'
services:
  fasttunnel-server:
    image: springhgui/fasttunnel-v2:latest
    container_name: fasttunnel-server
    network_mode: host
    volumes:
      - ./config/appsettings.json:/app/config/appsettings.json
    restart: unless-stopped
EOF

使用 network_mode: host 的原因:服务端需要监听多个端口(1270 通信端口 + 各转发端口),host 模式最简便。

1.3 启动服务端

cd /www/dk_project/dk_app/dk_fasttunnel_server

# Docker Compose V2(新版)
docker compose up -d

# Docker Compose V1(旧版,如提示 unknown flag: -d)
docker-compose up -d

# 查看日志
docker logs fasttunnel-server --tail 20

正常启动日志:

Now listening on: http://[::]:1270
Application started. Press Ctrl+C to shut down.

二、客户端部署(内网服务器)

2.1 拉取客户端镜像

⚠️ 注意区分镜像名称:

  • springhgui/fasttunnel-v2 → 服务端

  • springhgui/fasttunnel-client → 客户端(正确)

  • springhgui/fasttunnel-client-v2 → 也是客户端,但行为与服务端相同,不推荐

国内服务器拉取 Docker Hub 镜像可能超时,建议配置代理或使用镜像加速。

docker pull springhgui/fasttunnel-client:v2.1.2

2.2 准备配置文件

mkdir -p /www/dk_project/dk_app/dk_fasttunnel/config

创建客户端配置(JSON 中不能有注释):

cat > /www/dk_project/dk_app/dk_fasttunnel/config/appsettings.json << 'EOF'
{
  "Serilog": {
    "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ],
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Warning",
        "Microsoft.Hosting.Lifetime": "Information"
      }
    },
    "WriteTo": []
  },
  "FastTunnel": {
    "Server": {
      "ServerAddr": "
",
      "ServerPort": 1270
    },
    "Token": "你的Token",
    "Webs": [
      {
        "LocalIp": "127.0.0.1",
        "LocalPort": 8090,
        "SubDomain": "api-cloud-test"
      }
    ],
    "Forwards": [
      { "LocalIp": "127.0.0.1", "LocalPort": 5244, "RemotePort": 1271, "Protocol": "TCP" },
      { "LocalIp": "127.0.0.1", "LocalPort": 48080, "RemotePort": 1275, "Protocol": "TCP" },
      { "LocalIp": "127.0.0.1", "LocalPort": 3004,  "RemotePort": 1274, "Protocol": "TCP" }
    ]
  }
}
EOF

配置说明:

配置项

说明

Server.ServerAddr

服务端公网 IP 或域名

Server.ServerPort

服务端通信端口,默认 1270

Token

与服务端 Tokens 中的任意一个一致

Webs

HTTP 站点穿透,通过子域名访问

Forwards

TCP 端口转发,RemotePort 为公网访问端口

2.3 创建 docker-compose.yml

cat > /www/dk_project/dk_app/dk_fasttunnel/docker-compose.yml << 'EOF'
services:
  fasttunnel-client:
    image: springhgui/fasttunnel-client:v2.1.2
    container_name: fasttunnel-client
    network_mode: host
    volumes:
      - ./config/appsettings.json:/app/appsettings.json
    restart: unless-stopped
EOF

2.4 启动客户端

cd /www/dk_project/dk_app/dk_fasttunnel
docker compose up -d
docker logs fasttunnel-client --tail 20

连接成功日志:

===== FastTunnel Client Start =====
正在连接服务端 你的IP:1270
穿透协议 | 映射关系(公网=>内网)
  HTTP   | http://api-cloud-test.example.com:1270 => 127.0.0.1:8090
  TCP    | example.com:1271 => 127.0.0.1:5244

三、常见问题排查

问题一:客户端报 500 错误

ERR The server returned status code '500' when status code '101' was expected.

原因: 服务端 appsettings.json 缺少 Api.JWT 配置节点。

解决: 在服务端配置中添加完整的 Api.JWT 配置后重启服务端容器。


问题二:配置不生效,容器行为异常

原因: JSON 配置文件中包含注释(// 或 /* */),导致解析失败,配置项未被读取。

解决: 删除所有注释,保持标准 JSON 格式。


问题三:镜像拉取超时

国内服务器访问 Docker Hub 网络问题,解决方案:

# 方案一:配置代理
mkdir -p /etc/systemd/system/docker.service.d
cat > /etc/systemd/system/docker.service.d/proxy.conf << 'EOF'
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"
EOF
systemctl daemon-reload && systemctl restart docker

# 方案二:指定具体版本 tag 重试
docker pull springhgui/fasttunnel-client:v2.1.2

问题四:端口被旧进程占用

# 查找占用进程
ss -tlnp | grep 1270
# 杀掉旧进程
kill <PID>
# 重启容器
docker compose restart

四、目录结构总览

/www/dk_project/dk_app/
├── dk_fasttunnel_server/          # 服务端(部署在公网 ECS)
│   ├── docker-compose.yml
│   └── config/
│       └── appsettings.json
└── dk_fasttunnel/                 # 客户端(部署在内网服务器)
    ├── docker-compose.yml
    └── config/
        └── appsettings.json

五、维护命令

# 查看运行状态
docker ps | grep fasttunnel

# 实时查看日志
docker logs fasttunnel-client -f

# 重启客户端(修改配置后)
docker compose restart

# 更新镜像
docker compose pull && docker compose up -d

总结

FastTunnel v2 Docker 部署相比传统二进制部署有以下优势:

  • 容器自动重启,无需额外配置 systemd 服务

  • 环境隔离,升级回滚方便

  • 统一目录管理,配合宝塔 Docker 面板可视化管理

主要注意点:JSON 配置不能有注释、v2 服务端必须配置 JWT、客户端镜像名为 fasttunnel-client 而非 fasttunnel-client-v2。

许可协议: 
分享

相关文章

下一篇

上一篇

Windows 10 LTSC 上用 WSL + mihomo 实现 Claude Code Agent Teams 分屏模式完整指南

最近更新

  • FastTunnel v2 内网穿透 Docker 部署完整指南(服务端 + 客户端)
  • Windows 10 LTSC 上用 WSL + mihomo 实现 Claude Code Agent Teams 分屏模式完整指南
  • OpenClaw 完整安装与使用指南:零成本打造全能 AI 助理
  • Debian 13 虚拟机安装与配置完全指南(Parallels / VMware 双平台)
  • Claude Code Agent Teams:多智能体协作编程的完全指南

热门标签

MCP 并发编程 通义千问 代码审查 版本对比 数字人 开发效率 DevOps 结构化并发 永久投资组合

目录

©2026 范伟彬个人网. 保留部分权利。

使用 Halo 主题 Chirpy