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 配置文件。生成的配置严格遵循以下结构:
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
Inbounds:
- mixed-in:监听 0.0.0.0:2080
- tun-in:地址 172.19.0.1/30,auto_route: true, strict_route: true, stack: mixed
Outbounds 与策略组:
- 🚀 节点选择 (selector):包含所有解析出的节点及自动选择器
- ⚡ 自动选择 (urltest):通过 URL 测试选择最佳节点
- 🏠 私有网络 (selector):私有 IP 流量走向
- 🔒 国内服务 (selector):国内服务流量走向
- 🌐 非中国 (selector):国际流量走向
- 🐟 漏网之鱼 (selector):默认兜底策略
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 一键部署(推荐)
- 克隆仓库或上传项目文件
- 创建
.env文件,设置以下环境变量:1 2 3 4JWT_SECRET=your_jwt_secret_here SUBSCRIPTION_TOKEN=your_subscription_token_here ADMIN_USERNAME=admin ADMIN_PASSWORD=your_secure_password_here - 运行
docker-compose up -d - 访问
http://your_server_ip:3000进行管理
手动部署 (PM2 + Nginx)
- 安装 Node.js (>=18) 和 npm
- 安装项目依赖:
npm ci --only=production - 设置环境变量(同上)
- 使用 PM2 启动:
pm2 start server.js --name singbox-sub - 配置 Nginx 作为反向代理(可选但推荐用于 HTTPS)
数据持久化通过 SQLite 实现,数据库文件 database.sqlite 位于项目根目录。使用 Docker 时,请确保通过卷挂载或绑定挂载持久化此文件以避免数据丢失。
使用指南
- 使用管理员账户登录后台
- 在节点管理页面粘贴节点分享链接(支持单行或多行)
- 系统自动解析链接并保存节点信息
- 访问订阅链接页面获取公开订阅地址
- 在 Sing-box 客户端中配置订阅链接即可自动更新节点
结论与未来展望
该平台极大地简化了 Sing-box 节点的管理和分发流程。通过将复杂的配置生成封装成简单的订阅链接,即使是非技术用户也能轻松享受到 Sing-box 带来的高性能代理服务。后续计划包括:
- 增加更多协议支持(如 Shadowsocks, Socks5)
- 添加流量统计和日志功能
- 实现多用户体系和订阅过期机制
- 提供更丰富的前端主题选择
我们相信,这个平台将为个人和小型团队提供一个可靠、易用的节点管理解决方案,让专注于服务本身而非繁琐的配置工作成为可能。