感谢vps.town提供的服务器赞助与支持!
- 公共体验专区:https://vps.199028.xyz/app/
- 全面调整转发逻辑,配置与体验更统一
- Agent 自带 AnyTLS 协议出口能力
- 集成 sing-box,实现各协议连通性/测速测试
- 支持多平台订阅(Clash Meta / Surge / Singbox / V2Ray / Quantumult X 等),无需再为协议转换烦恼
- 集成 backtrace,可在节点自检中测试三网回程
-
2025-11-24
增加终端功能,再也不用担心要登录节点跑命令了 -
2025-11-23
支持面板升级了,docker和二进制都可以通过面板升级 -
2025-11-21
支持了UDP功能 增加了NQ测试功能,再也不用打开终端跑命令了 1.0.9版本,建议安装
-
2025-11-17
```js 优化gost服务配置,修改某个服务不再会导致其他服务断流了 支持远程多个地址负载均衡了 ``` -
2025-11-14 修复流量显示BUG
-
2025-11-14
```js 增加了流量统计功能 优化隧道及转发的诊断页面,增强可用性 增加多级端口转发隧道的支持 ``` -
2025-11-10 安装脚本支持update和uninstall命令了
-
2025-11-10 正式增加组网功能,隧道和转发创建可以基于组网内通信了(需要在隧道、转发处选择出入口IP为组网IP,10.126.126.X)
-
2025-11-09
```js 增加了隧道转发每个节点出入口的选择,用以支撑下一个版本的功能 修复了一些小 bug(端口越界等问题) 新增测试功能:组网 ``` -
2025-11-08 增加了转发链隧道功能,支持多跳隧道与诊断检测
-
2025-11-07 增加探针分享功能,地址为:
http://ip:port/app/share/network -
2025-11-06
```js 迁移页新增“真·进度条”,实时显示表级进度 增加了SQLLite支持,需设置DB_DIALECT环境变量为sqlite,默认为mysql Agent 自升级功能上线 ``` -
2025-11-05 增加探针功能,现在可以看网络延迟和掉线情况了
基于 go-gost/gost 与 go-gost/x 的轻量转发/隧道面板,专注“节点—隧道—转发”全流程编排、诊断与可视化。
- 转发模式
- 端口转发:入口监听 → 直连目标(forward)
- 隧道转发:入口监听 → gRPC 隧道(relay/auth)→ 出口 → 真实目标
- 链路编排
- service 顶层
addr监听 - 入口 handler:
http + chain - 出口 handler:
relay + auth (+ chain) - 顶层 chains:hop/node,支持
dialer.grpc与connector.relay(auth)
- service 顶层
- 安全与可靠
- 出入口认证使用稳定随机(用户名 u-ForwardID;密码 MD5 前 16 位)
- IPv6 统一
[addr]:port - 仅管理
metadata.managedBy=network-panel服务,不删除外部服务
- 诊断与可观测
- 节点在线/系统信息、链路诊断(ping/tcp/iperf3)
- 节点服务状态查询(已部署/监听/端口)
- 数据迁移实时进度:支持后台任务 current/total 与逐表统计
- Agent 自升级:Agent 连接后端时自动校验版本,若与后端期望版本不一致则触发在线升级(无需人工登录节点)
- 服务端部署(面板): docs/SERVER_DEPLOY.md — 二进制一键脚本与 Docker Compose 两种方式
- 节点部署(Agent/节点): docs/NODE_DEPLOY.md
- 部署总览(可选): docs/DEPLOYMENT.md
- API 文档: docs/API.md
- 典型链路与配置:见下文“隧道转发配置(JSON)”
支持两种方式将“哆啦A梦面板”的数据迁移到本面板:
- 方式一(指向原库):复用哆啦A梦的 MySQL 数据库,直接把本面板的数据库配置改为哆啦A梦的数据库连接信息。
- 方式二(数据拷贝):使用面板内置“数据迁移”功能,填写哆啦A梦数据库信息,自动迁移数据到当前面板所用数据库(SQLite 或 MySQL)。
— 方式一:复用哆啦A梦数据库(直接改配置)
-
适合想零拷贝、快速切换到新面板的场景。
-
前置:已掌握哆啦A梦库的连接参数(Host/Port/User/Password/Database)。
-
步骤:
- 确认使用 MySQL 模式:确保未设置或清空
DB_DIALECT(为空即用 MySQL,默认也是 MySQL)。 - 设置以下变量为哆啦A梦数据库:
DB_HOST、DB_PORT、DB_NAME、DB_USER、DB_PASSWORD。 - 重启面板服务。
示例(Docker Compose)
- 修改
docker-compose-v4_mysql.yml:30或network-panel/docker-compose.yaml:30中的环境变量:DB_HOST=你的MySQL地址DB_PORT=3306DB_NAME=哆啦A梦的数据库名DB_USER=用户名DB_PASSWORD=密码
- 启动/重启:
docker compose -f docker-compose-v4_mysql.yml up -d
示例(本机/二进制/systemd)
- 环境文件:
/etc/default/network-panel或项目根目录.env - 写入(示例):
DB_HOST=127.0.0.1DB_PORT=3306DB_NAME=flux_panelDB_USER=fluxDB_PASSWORD=123456- 确保未设置或清空
DB_DIALECT
- 重启:
systemctl restart network-panel
验证
- 登录新面板,应直接看到原有用户/节点/隧道/转发等数据。
- 若账号权限受限,请为该 MySQL 账号授予相应表的读写权限。
- 确认使用 MySQL 模式:确保未设置或清空
— 方式二:使用面板内置迁移(自动拷贝)
-
适合想将数据迁移到全新库(如 SQLite 或新建 MySQL)的场景。
-
思路:新面板按照你的目标数据库运行;进入“数据迁移”页面,填入哆啦A梦库信息,系统会逐表拷贝并显示实时进度。
-
步骤:
- 选择目标库并启动面板:
- SQLite:设置
DB_DIALECT=sqlite,可选DB_SQLITE_PATH;重启生效。 - MySQL:清空
DB_DIALECT,设置DB_HOST/DB_PORT/DB_NAME/DB_USER/DB_PASSWORD;重启生效。
- SQLite:设置
- 打开后台“数据迁移”页面。
- 填入哆啦A梦库的 Host、Port(默认3306)、User、Password、Database。
- 点“测试连接”,确认源库各表记录数。
- 点“开始迁移”:前端显示总进度与逐表插入/源计数;完成后提示“迁移完成”,失败则展示错误原因。
- 迁移后建议重新安装/升级 Agent,使节点配置在各节点落盘并生效。
说明
- 已适配的核心表:
user、node、tunnel、forward、user_tunnel、speed_limit、vite_config、statistics_flow。 - 大数据量请耐心等待;中断后可通过状态接口再次查看进度。
- 选择目标库并启动面板:
- 入口:面板后台 “数据迁移” 页面。
- 行为:提交旧库连接后后台异步迁移,前端每秒轮询
/api/v1/migrate/status?jobId=..., 以真实 current/total 渲染进度条,并显示每张表的插入/源计数。 - 失败:展示错误原因并停止轮询;成功:进度 100% 并提示完成。
注意:若以单文件后端二进制部署而没有前端静态资源,UI 将不可用。 推荐一键安装脚本(默认 SQLite):
静态源(推荐):
curl -fsSL https://panel-static.199028.xyz/network-panel/panel_install.sh -o panel_install.sh \
&& bash panel_install.shGitHub 源(需能访问 raw.githubusercontent.com,可自加代理前缀):
curl -fsSL https://raw.githubusercontent.com/NiuStar/network-panel/refs/heads/main/panel_install.sh -o panel_install.sh \
&& bash panel_install.sh说明:
- 选择“二进制安装”时默认使用 SQLite(可自定义
DB_SQLITE_PATH) - 选择“Docker Compose 安装”时使用 MySQL(会创建
network-panel/并启动 compose) - 如需手动安装,可使用
scripts/install_server.sh(服务器有 Node/npm 时将自动构建前端并安装到public/)
- 行为:Agent 建立 WS 连接
/system-info时会携带自身版本(如go-agent-1.0.1)。后端的期望 Agent 版本与后端版本完全一致(不再支持自定义环境变量覆盖)。若不一致会下发UpgradeAgent指令触发在线升级。 - 升级流程:Agent 根据自身 CPU 架构从后端下载对应二进制
/flux-agent/flux-agent-linux-<arch>(镜像/发布包内置 amd64/arm64/armv7),替换本地/etc/gost/flux-agent并systemctl restart flux-agent。 - 产物:Docker 镜像内置
flux-agent-linux-amd64/arm64/armv7;如需更多平台,可使用scripts/build_flux_agent_all.sh生成并放入golang-backend/public/flux-agent/。
出口(server):listener.grpc + handler.relay(auth) + chain(转发到真实目标)
{
"name": "<serviceName>",
"addr": ":<outPort>",
"listener": {"type": "grpc"},
"handler": {
"type": "relay",
"auth": {"username": "u-<forwardID>", "password": "<stable-16char>"},
"chain": "chain_<serviceName>"
},
"metadata": {"managedBy": "network-panel"}
}出口 chains(真实目标):
{
"name": "chain_<serviceName>",
"hops": [
{"name": "hop_<serviceName>", "nodes": [
{"name": "target", "addr": "<remote1>"},
{"name": "target", "addr": "<remote2>"}
]}
]
}入口(client):listener.tcp + handler.http(chain) + chain(dialer.grpc + connector.relay(auth))
{
"name": "<serviceName>",
"addr": ":<inPort>",
"listener": {"type": "tcp"},
"handler": {"type": "http", "chain": "chain_<serviceName>"},
"metadata": {"managedBy": "network-panel"}
}入口 chains(到出口隧道):
{
"name": "chain_<serviceName>",
"hops": [
{"name": "hop_<serviceName>", "nodes": [
{
"name": "node_<serviceName>",
"addr": "[<outIP>]:<outPort>",
"connector": {"type": "relay", "auth": {"username": "u-<forwardID>", "password": "<stable-16char>"}},
"dialer": {"type": "grpc"}
}
]}
]
}说明:
<stable-16char>=MD5("<forwardID>:<createdTime>")[:16]。service 内的_chains仅作传输载体,Agent 落盘时会上移为顶层chains。
- chains 出现在 service 里?
- 请更新 Agent 至 ≥ go-agent-1.0.1;Agent 会将
_chains上移合并到顶层chains
- 请更新 Agent 至 ≥ go-agent-1.0.1;Agent 会将
- 入口 chain 引用缺失?
- 未携带
_chains时 Agent 会从forwarder.nodes[0].addr兜底合成最小链
- 未携带
- 配置路径
- 固定
/etc/gost/gost.json
- 固定
- 面板前端访问:
http://ip:port/app/
本项目仅供学习与研究使用,请在合法、合规前提下使用。作者不对使用本项目造成的任何直接或间接损失负责。
