logo NodeSeekbeta

做了个 NodeGet 公共前端 StatusShow 默认主题的 Docker 容器镜像,有需要的小伙伴可以看看

NodeGet 的前后端分离架构

NodeGet 的一大亮点是前后端完全分离,三端各自独立部署,互不依赖:

  • Dashboard 管理端:支持多主控切换,可同时管理多个 Server
  • StatusShow 公开展示页:独立部署的纯静态前端,支持多个不同展示页同时对接到同一个后端
  • 后端 Server:不受限于与前端在同一台机器上运行,部署到 AWS、三方容器平台均没问题

image

由于 StatusShow 是纯静态项目,用 Serverless 方案托管是个不错的选择,官方也提供了 Cloudflare Pages / Vercel 的一键部署方案,Fork 仓库后直接部署绑域名,升级只需在 GitHub 点一下 Sync,非常方便。

为什么要自建

Serverless 方案用起来虽然方便,但有几个局限。一是平台的请求数、流量等超出免费计划后成本不低;二是折腾了一下发现 CF Workers 似乎不支持绑定到外部主机名,国内访问只能靠 IP 优选来改善,对回国质量的把控程度有限,可能会有人想自建来把控回国访问质量。恰好今天也看到有坛友在问如何更简单地自建前端,相信不少小伙伴和我一样有自托管的需求。

前面说到 NodeGet 的前后端不受限于在同一台机器上部署,StatusShow 前端自然也可以以多种形式存在,满足对私、对公等不同需求。坛里已经有不少相关分享,有坛友发了 Dash 端的 Docker 构建教程,也有坛友分享了单域名 Docker 三端多合一一键部署脚本。考虑到有小伙伴需要把三端镜像分别跑在不同平台、不同机器上,现有方案里公共展示端 StatusShow 的独立镜像还比较缺,便在前人的基础上把这块补上了。NodeGet 的架构非常清晰,通过 StatusShow 的源代码熟络后稍加修改便可以轻松构建出自己的一套精致主题,通过本 Dockerfile 的通用构建方法也能轻松将镜像打包分发到不同平台,满足各种需求。

仓库:https://github.com/cold-sword/nodeget-statusshow-docker
线上成品:https://nodeget.top

镜像通过 GitHub Actions 自动追踪上游 Release 构建后同步推送至 DockerHub(coldsword/nodeget-statusshow:latest)与 GHCR(ghcr.io/cold-sword/nodeget-statusshow:latest),无需手动维护。上游发版后一条命令完成更新:

docker compose pull && docker compose up -d

部署示例

前置要求:Docker 20.10+ 与 Docker Compose v2.0+,以及一个运行中的 NodeGet Server 实例和在控制台创建的只读 Token

config.json 配置模板

mkdir nodeget-statusshow && cd nodeget-statusshow
{
  "site_name": "我的探针页",
  "site_logo": "",
  "footer": "Powered by NodeGet",
  "site_tokens": [
    {
      "name": "主节点",
      "backend_url": "wss://your-nodeget-server.example.com/ws",
      "token": "your-token-here"
    }
  ]
}

多主控在 site_tokens 数组中依次追加对象即可。config.json 中含有 Token,请勿提交到公开仓库,建议加入 .gitignore

docker-compose.yml

name: statusshow

services:
  nodeget-statusshow:
    image: ${STATUSSHOW_IMAGE:-coldsword/nodeget-statusshow:latest}
    restart: unless-stopped
    ports:
      - "${STATUS_HOST_PORT:-3000}:3000"
    volumes:
      - ./config.json:/app/config.json:ro

.env 示例

STATUSSHOW_IMAGE=coldsword/nodeget-statusshow:latest
# STATUSSHOW_IMAGE=ghcr.io/cold-sword/nodeget-statusshow:latest
STATUS_HOST_PORT=3000

反向代理示例(Nginx)

server {
    listen 80;
    server_name status.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name status.example.com;

    ssl_certificate     /etc/ssl/certs/status.example.com.crt;
    ssl_certificate_key /etc/ssl/private/status.example.com.key;

    location / {
        proxy_pass         http://127.0.0.1:3000;
        proxy_set_header   Host              $host;
        proxy_set_header   X-Real-IP         $remote_addr;
        proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}

Caddy / Traefik 的配置示例见仓库 README。有一点值得注意:StatusShow 是纯静态前端,浏览器会直接与 NodeGet Server 建立 WebSocket 连接,反向代理只负责提供静态文件,无需对本容器做 WebSocket 代理。

顺便聊聊 CF 国内质量,以及我在用的 FurCDN

说回国内访问质量的话题,先看一组 CF 的拨测数据:

CF 拨测

延迟偏高,国内部分地区甚至出现丢包,体验不太理想。

前不久偶然发现了新商家 @FurCDN,试用了一段时间感觉价格亲民、体验不错,前几天商家发了一个抽奖帖「FurCDN && NodeGet 专属套餐(非官方)」虽然俺没荣幸中奖,但我也自费购买了套餐,正好把前端用它部署了一份试试 CDN 效果:https://status.nodeget.top。对比拨测如下:

FurCDN 拨测

国内方向均为香港节点,三网(CN2 + CUG + CMIN2)接入;境外走全球 Anycast,遭受攻击时自动切换 GSL HK / GSL US。后台是商家自研面板,界面简洁直观:

FurCDN 后台面板

几点坦诚的使用体会:国内方向带宽上限 50Mbps,建议只用来给后端加速,不要塞大体积静态资源(>10MB),带宽跑满久了会触发自动封禁,需要手动提工单解封;CDN 缓存层偶有稳定性问题,我自己的做法是套一层 CF 做缓存,回源到 CF 后通过自定义回源请求头做判断,稳定不少。ITDOG 参考:https://www.itdog.cn/tcping/3c.cdn.furcdn.top

套餐情况如下:

FurCDN 套餐

Lite 套餐 ¥10/月,5 个域名、100GB 月流量;Normal 套餐 ¥25/月,10 个域名、250GB 月流量,个人小项目 Lite 完全够用。商家目前还在内测阶段,注册尚未完全放开,后续还会有多次抽奖活动,感兴趣的坛友可以关注 @FurCDN 的后续动态~

相关链接

资源 链接
🐳 本项目仓库 cold-sword/nodeget-statusshow-docker
🌐 线上成品 nodeget.top
🌐 FurCDN 加速版 status.nodeget.top
⚙️ NodeGet 后端 NodeSeekDev/NodeGet
📦 StatusShow 上游仓库 NodeSeekDev/NodeGet-StatusShow
📖 官方文档 nodeget.com
🐳 DockerHub coldsword/nodeget-statusshow
📦 GHCR ghcr.io/cold-sword/nodeget-statusshow

有问题欢迎回帖交流,也可以去 Telegram 讨论组 找到更多玩 NodeGet 的坛友~

1234
  • 感谢楼主推荐
    请开工单(标题 获取兑换码) 我们会发送 兑换码 送上套餐时长增加(半年)

  • 好东西

  • 送上大鸡腿

  • 感谢分享

  • 好东西绑定 xhj028

  • 学习

  • 为什么一个探针要搞这么复杂

  • @魔鬼 #3 看到有坛友有全套自托管的需求,正好官方没有前端Docker实现,我就补充了下StatusShow的Docker镜像方便自建

  • 学习一下

  • 我管你这那的,CF一把梭,探针打开慢点就慢点

  • @aslfjk #8 CF还可靠(,不过也只是个前端而已,想要外面访问快些

  • @coldsword #9 主要是没什么鸡挂 xhj017
    而且这架构跟用的remnawave差不离,主控被控订阅面板全分离 xhj015

1234

你好啊,陌生人!

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

📈用户数目📈

目前论坛共有63709位seeker

🎉欢迎新用户🎉