Sing-box 订阅生成与管理平台:开箱即用的节点管理解决方案

Sing-box 订阅生成与管理平台:开箱即用的节点管理解决方案

在当今网络环境下,高效管理和分发代理节点变得尤为重要。Sing-box 作为新一代通用代理平台,因其灵活性和性能而受到广泛欢迎。然而,手动配置和分发 Sing-box 配置对于普通用户而言仍然较为复杂。为了解决这一痛点,我们开发了一个基于 Node.js 和 Express 的 Sing-box 订阅生成与管理平台,旨在提供一个简单、安全且易于维护的节点管理解决方案。

系统架构

该平台采用轻量级单体后端架构,使用 Node.js 和 Express 框架构建。数据持久化采用 SQLite 数据库,存储用户信息和节点数据。前端使用响应式设计,提供暗黑风格的管理界面,确保在各种设备上都有良好的使用体验。

核心功能包括:

  • 管理员身份验证(支持 JWT 或 Session 鉴权)
  • 节点链接解析(支持 vless://, vmess://, tuic://, hysteria2:///hy2://, anytls:// 等主流协议)
  • Sing-box 配置自动生成(严格遵循 V1.10+/V1.11+ 规范)
  • 公开订阅链接生成(带唯一 Token,如 https://your-domain.com/sub/TOKEN.json
  • 节点增删改查(CRUD)操作

技术实现细节

节点链接解析器

我们实现了一个健壮的节点链接解析器,能够准确提取各协议的关键参数:

  • VLESS:UUID、Server、Port、TLS/Reality 配置(SNI、Public Key、Short ID、Flow)、Network 类型
  • VMess:UUID、Alter ID、Security、Network、传输设置(如 WS 路径和 Host)
  • Tuic:UUID、Password、Congestion Control、TLS 设置
  • Hysteria2:Password、TLS 设置
  • AnyTLS:作为通用 TLS 包装器进行处理

解析后的节点数据以 JSON 格式存储在数据库中,便于后续配置生成。

配置生成器

配置生成器是系统的核心组件,它根据存储的节点数据生成符合 Sing-box 标准的 JSON 配置文件。生成的配置严格遵循以下结构:

  1. DNS 结构

    • dns_proxy:TCP,1.1.1.1,用于代理 DNS 请求
    • dns_direct:HTTPS,dns.alidns.com,用于直接 DNS 解析
    • dns_resolver:UDP,223.5.5.5,作为最终解析器
    • dns_fakeip:FakeIP,inet4_range: 198.18.0.0/15,用于地理位置路由
    • 包含针对 geolocation-!cn 的 FakeIP 和 Proxy 路由规则
    • final: dns_direct
  2. Inbounds

    • mixed-in:监听 0.0.0.0:2080
    • tun-in:地址 172.19.0.1/30,auto_route: true, strict_route: true, stack: mixed
  3. Outbounds 与策略组

    • 🚀 节点选择 (selector):包含所有解析出的节点及自动选择器
    • ⚡ 自动选择 (urltest):通过 URL 测试选择最佳节点
    • 🏠 私有网络 (selector):私有 IP 流量走向
    • 🔒 国内服务 (selector):国内服务流量走向
    • 🌐 非中国 (selector):国际流量走向
    • 🐟 漏网之鱼 (selector):默认兜底策略
  4. Route 与 Rule-Set

    • 规则集来源:geolocation-cn, cn, geolocation-!cn, private-ip, cn-ip(均采用 remote/binary/.srs 格式)
    • 分流规则:
      • geolocation-cn / cn → 🔒 国内服务
      • geolocation-!cn → 🌐 非中国
      • private-ip → 🏠 私有网络
      • cn-ip → 🔒 国内服务
      • final: 🐟 漏网之鱼
    • 开启 auto_detect_interface: true
    • 开启 experimental.cache_file(缓存 FakeIP 等)

安全与订阅机制

为了保护后台管理界面,系统实现了基于 JWT 的身份验证机制。管理员登录后即可访问节点管理面板。节点数据提交后,系统会生成一个唯一的订阅 Token,公开订阅链接形如 /sub/TOKEN.json。客户端访问此链接时,服务端动态生成并返回基于当前所有节点的 Sing-box 配置 JSON。

部署与维护

我们提供了多种部署方式以适应不同的 VPS 环境:

Docker 一键部署(推荐)

  1. 克隆仓库或上传项目文件
  2. 创建 .env 文件,设置以下环境变量:
    1
    2
    3
    4
    
    JWT_SECRET=your_jwt_secret_here
    SUBSCRIPTION_TOKEN=your_subscription_token_here
    ADMIN_USERNAME=admin
    ADMIN_PASSWORD=your_secure_password_here
    
  3. 运行 docker-compose up -d
  4. 访问 http://your_server_ip:3000 进行管理

手动部署 (PM2 + Nginx)

  1. 安装 Node.js (>=18) 和 npm
  2. 安装项目依赖:npm ci --only=production
  3. 设置环境变量(同上)
  4. 使用 PM2 启动:pm2 start server.js --name singbox-sub
  5. 配置 Nginx 作为反向代理(可选但推荐用于 HTTPS)

数据持久化通过 SQLite 实现,数据库文件 database.sqlite 位于项目根目录。使用 Docker 时,请确保通过卷挂载或绑定挂载持久化此文件以避免数据丢失。

使用指南

  1. 使用管理员账户登录后台
  2. 在节点管理页面粘贴节点分享链接(支持单行或多行)
  3. 系统自动解析链接并保存节点信息
  4. 访问订阅链接页面获取公开订阅地址
  5. 在 Sing-box 客户端中配置订阅链接即可自动更新节点

结论与未来展望

该平台极大地简化了 Sing-box 节点的管理和分发流程。通过将复杂的配置生成封装成简单的订阅链接,即使是非技术用户也能轻松享受到 Sing-box 带来的高性能代理服务。后续计划包括:

  • 增加更多协议支持(如 Shadowsocks, Socks5)
  • 添加流量统计和日志功能
  • 实现多用户体系和订阅过期机制
  • 提供更丰富的前端主题选择

我们相信,这个平台将为个人和小型团队提供一个可靠、易用的节点管理解决方案,让专注于服务本身而非繁琐的配置工作成为可能。

热爱生活 学无止境
使用 Hugo 构建
主题 StackJimmy 设计