logo NodeSeekbeta

kfchost 5gpn 上新:网页控制台 + HTTP API,像路由器后台一样管你的专网网关

接上篇https://www.nodeseek.com/post-785536-1
纯ai文,修了一些bug,新增了http api控制,出口延迟监控,出口fallback,防止tgbot挂

一键安装

curl -fsSL https://raw.githubusercontent.com/lingchenfs1/5gpn/main/quick-install.sh -o /tmp/5gpn.sh && sudo bash /tmp/5gpn.sh

之前发过 kfchost 5gpn(5G 专网) 配套的服务端透明反代网关——客户端只配一个 DNS,部分域名自动走代理,分流/出口全在网关侧。这次给它加了一个网页控制台和一套 HTTP API:现在不用 SSH、也不用只靠 Telegram,打开网页就能像 UniFi 那样管理整台网关。

截屏2026-06-21 19.13.37
仓库:https://github.com/lingchenfs1/5gpn

一句话

一个自带的、像路由器后台一样的网页控制台:看状态、看 24 小时流量与出口延迟、切出口、测延迟、写分流规则、管规则组——手机电脑都适配,深浅主题随系统,和 Telegram Bot 实时同步。

长这样

左侧导航 + 顶栏 + 仪表盘的经典后台布局:

┌──────────┬────────────────────────────────────────┐
│ 🛰 5gpn  │  概览              ● 在线    🔄          │
│          ├────────────────────────────────────────┤
│ 📊 概览   │  [当前出口][CPU][内存][硬盘][运行时间]   │ ← 统计磁贴(带进度条)
│ 🌐 出口   │  ┌──── 24 小时流量趋势(折线图) ────┐    │
│ 🧭 智能分流│  ├──── 24 小时出口延迟(折线图) ────┤    │
│ 🖥 控制台 │  └──────────────────────────────┘    │
│ 🌓 主题   │  ┌──── 服务状态 ────┐                  │
└──────────┴────────────────────────────────────────┘

功能一览

📊 概览仪表盘

  • 服务器负载横条:CPU / 内存 / 硬盘 / 运行时间,一眼看尽。
  • 24 小时流量趋势图(纯前端 canvas,零依赖):每个出口 + 本机各一条线,图例带 24h 总流量。
  • 24 小时出口延迟趋势图:每个出口一条线,看哪个节点稳、哪个在抖。
  • 各核心服务在线状态(dnsdist / sniproxy / quic-proxy / DNS 竞速 / Bot / API)。

🌐 出口管理

  • 列出全部出口,一键切换;添加(WireGuard / SOCKS5 / socks5h 远程DNS / Shadowsocks / SS2022,密码含特殊字符直接一行粘)/删除;🩺 检查节点连通性
  • 实时延迟:每个出口后面直接显示延迟(优先 ICMP ping,被禁 ping 自动 tcping 出口端口),🟢<100ms / 🟡<250ms / 🔴 超时,一眼挑出最快的节点。

🧭 智能分流(这次重点补全)

  • 分流规则:新增 / 就地修改 / 删除单条 + 关键词过滤 + 整份编辑。支持 DOMAIN-SUFFIX / DOMAIN / DOMAIN-KEYWORD / IP-CIDR / RULE-SET(外部规则集) / GEOSITE / GEOIP / FINAL
  • 规则组(分类):新建 / 改目标出口 / 改名 / 删除。每个规则组映射到一个出口或直连/拒绝;改名会自动同步改写引用它的所有规则。
  • 改完即由 sing-box 校验后热生效,写错不会让路由器挂。

🎨 体验

  • 白天 / 黑夜 / 跟随系统 三态主题,实时切换。
  • 完整移动端适配:手机上侧边栏变抽屉,按钮 44px 触控友好,输入框不触发缩放。
  • 操作有反馈、结果实时刷新;弱网/重建路由瞬断也不会误报失败。

和 Telegram Bot 的关系:同一套后端,实时同步

网页、Telegram Bot、命令行共用同一个后端(管理脚本 + 配置文件),改任意一边,另一边立刻看到。网页只是多了一个更直观的"外壳",不是另起炉灶。

安全

  • 仅走 HTTPS(复用网关已有的 Let's Encrypt 证书),所有接口需 Authorization: Bearer <令牌>(常数时间比较)。
  • 令牌存在服务器 root-only 文件,自动生成;不暴露卸载等危险操作;输入严格校验、固定参数、不拼接 shell。
  • 网页本身只是静态页面,不含任何密钥;真正的钥匙是那串令牌——自己保管好。

怎么开

安装时会询问是否启用(可选,默认不开);或随时单独开启:

sudo ./install.sh --setup-api

执行后会打印 API 地址令牌。把仓库里的 webui/index.html 放到任意能访问的地方(或本地直接双击打开),填入地址和令牌即可。Telegram Bot 里发 /api 也能随时查看地址和令牌(点一下复制)。

接口同样可单独调用(JSON):/api/status/api/exits/*/api/rules*/api/policy*/api/traffic/api/latency 等,方便自己做监控或自动化。

适用

Ubuntu 20.04+ / Debian 11+ / CentOS·Rocky·Alma / RHEL / Fedora,x86_64 / ARM64;512MB 小内存也能跑。仅用于合法的跨境业务互通与技术研究,请遵守当地法律法规。

  • 部署网页控制台

    index.html 是一个纯静态、零依赖的单文件控制台,不需要构建、也不需要它自己的后端——它只是通过浏览器调用网关的 HTTP API。所以"部署"就是"把这个 HTML 放到一个能打开的地方",怎么简单怎么来。

    前置条件

    1. 在网关上启用 API(它才是真正的后端):

      sudo ./install.sh --setup-api
      

      执行后会打印 API 地址(https://你的网关域名:8443)和 令牌。在 Telegram Bot 里发 /api 也能随时查看。

    2. 确认这个 API 端口(默认 8443)能从你浏览器所在的网络访问(--setup-api 已自动放行防火墙)。

    面板和 API 已开好 CORS,面板放在任何域名下都能调用网关 API,跨域没问题。


    方式一:本地直接打开(最快,自己用)

    index.html 下载到电脑,双击用浏览器打开即可。填入 API 地址和令牌就能用,令牌存在浏览器本地,下次自动连。

    适合自己临时用,不想折腾服务器。

    方式二:丢到任意静态托管(零成本)

    index.html 传到任何能放静态文件的地方,比如:

    • GitHub Pages / Cloudflare Pages / Vercel / Netlify
    • 对象存储(S3 / R2 / OSS)开静态网站
    • 任意已有的网站目录

    传上去就能用,没有别的步骤。

    方式三:用 nginx + 自己的域名 + HTTPS(推荐,长期用)

    适合给一个固定网址、手机电脑随时打开。以 Debian/Ubuntu + nginx 为例:

    1. DNS

    把你的面板域名(例:panel.example.com)解析一条 A 记录指向这台 web 服务器的公网 IP。

    2. 放文件 + 配 vhost

    # 1) 放 HTML
    sudo mkdir -p /var/www/panel.example.com
    sudo cp index.html /var/www/panel.example.com/index.html
    
    # 2) 写一个站点配置
    sudo tee /etc/nginx/sites-available/panel.example.com >/dev/null <<'EOF'
    server {
        listen 80;
        listen [::]:80;
        server_name panel.example.com;
        root /var/www/panel.example.com;
        index index.html;
        add_header X-Content-Type-Options nosniff always;
        add_header X-Frame-Options SAMEORIGIN always;
        location / { try_files $uri $uri/ /index.html; }
    }
    EOF
    
    sudo ln -sf ../sites-available/panel.example.com /etc/nginx/sites-enabled/panel.example.com
    sudo nginx -t && sudo systemctl reload nginx
    

    3. 上 HTTPS(Let's Encrypt)

    sudo apt install -y certbot python3-certbot-nginx   # 如未安装
    sudo certbot --nginx -d panel.example.com --agree-tos --redirect -m [email protected]
    

    certbot 会自动改好 nginx 配置、签发证书、加 HTTP→HTTPS 跳转,并自动续期。

    打开 https://panel.example.com,填入 API 地址 + 令牌即可。

    更新面板

    以后 index.html 有更新,覆盖一份就行:

    sudo cp index.html /var/www/panel.example.com/index.html
    

    安全提醒

    • 面板页面本身不含任何密钥,真正的钥匙是那串 API 令牌——只发给信任的人,只走 HTTPS。
    • 想换令牌:改网关上 /opt/proxy-gateway/etc/api.env 里的 API_TOKEN,然后 systemctl restart proxy-gateway-api
    • 分享截图/链接给别人时,别把令牌也带上。
  • 别推啦,穷鬼不配

  • 和p0波动大都没解决 还掉包 我丢

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有61914位seeker

🎉欢迎新用户🎉