1. 架构与原则

sing-box 主服务承载 Shadowsocks、Trojan、VLESS、VMess、Hysteria2、TUIC、AnyTLS、SOCKS5、HTTP CONNECT、ShadowTLS、Naive 等协议。
Xray 扩展服务单独承载 XHTTP、mKCP、gRPC 和 VLESS Vision 等需要当前 Xray 传输行为的测试节点。
Nginx 订阅入口通过 HTTPS 提供 Base64 URI 列表和可选客户端文件包,路径使用高强度随机令牌。
systemd 与 UFW分别管理自启、重启策略、日志、最小权限用户和精确端口规则。
不要直接覆盖已有服务。先审计、备份、分配空闲端口并执行配置检查;新服务通过验证后再启用。sing-box 与 Xray 分开运行,升级和回滚更可控。

2. 部署前检查

建议使用 Debian 或 Ubuntu VPS。先记录系统、内存、路由、监听端口、防火墙、Nginx、证书和失败服务,避免破坏现有业务。

cat /etc/os-release
uname -a
free -h
ip -brief address
ip route
ss -lntup
systemctl --failed
systemctl list-unit-files --state=enabled
ufw status verbose
nginx -T 2>/dev/null
certbot certificates 2>/dev/null
  • 建议至少 512 MB 内存;更小机器应减少协议数量或添加交换空间。
  • 修改防火墙前确保 SSH 端口已经放行,并保留一个已登录终端。
  • 给 sing-box、Xray、Nginx 和证书钩子配置制作带时间戳备份。
  • 先建立端口表,确保 TCP/UDP 套接字没有冲突。

3. 协议与端口规划

每个协议生成独立 UUID、密码或密钥,便于单独吊销。以下端口仅为示例。

核心协议 / 传输示例端口部署说明
sing-boxShadowsocks8388/TCP+UDP选择 SpellVPN 支持的现代 AEAD 或 2022 加密方式。
sing-boxVLESS + Reality8443/TCP没有域名时可用;目标必须真实可达,不能伪造证书。
sing-boxTrojan / VMess + TLS9443–9444/TCP使用有效域名证书或合法 IP 证书。
sing-boxHysteria2 / TUIC9445–9446/UDP基于 QUIC;必须从外部网络验证 UDP 是否可达。
sing-boxAnyTLS9447/TCP使用有效证书和独立强密码。
sing-boxSOCKS5 / HTTPS CONNECT9450–9451/TCP必须启用认证,严禁公开匿名代理。
XrayVLESS / VMess + XHTTP + TLS9471–9473/TCP分别测试 stream-one、auto 和 VMess 兼容性。
XrayVLESS / VMess + mKCP + TLS9474–9475以所用 Xray 版本实际监听结果为准配置防火墙。
XrayVLESS + gRPC / RAW Vision + TLS9476–9477/TCP测试阶段每种传输独占端口,便于定位问题。

WireGuard、OpenVPN、IKEv2 和 OpenConnect 可作为传统 VPN 对照组,但通常使用独立客户端文件,不应强行塞入 VLESS/VMess 风格的 URI 订阅。

4. 安装 sing-box 与 Xray

sing-box 官方 APT 仓库

install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://sing-box.app/gpg.key -o /etc/apt/keyrings/sagernet.asc
chmod a+r /etc/apt/keyrings/sagernet.asc

# 按官方文档添加 deb.sagernet.org 软件源
apt-get update
apt-get install sing-box nginx ufw curl unzip

Xray 官方稳定版

  1. 从 XTLS/Xray-core 官方 Release 下载当前稳定版 Linux ZIP 及对应 .dgst
  2. 安装前核对本地 SHA-256 与摘要文件中的 SHA2-256
  3. 安装二进制和 geodata,创建不可登录的 xray 系统用户,配置放在 /etc/xray/
sha256sum Xray-linux-64.zip
sed -n '1,8p' Xray-linux-64.zip.dgst
unzip Xray-linux-64.zip -d xray-release
install -m 0755 xray-release/xray /usr/local/bin/xray
/usr/local/bin/xray version

官方参考:sing-box 包管理器安装Xray 下载与校验

5. 正确选择 TLS 或 Reality

有域名将 DNS 指向服务器,申请可信证书,设置正确 SNI,并配置自动续期与服务重载。
没有域名对兼容的 VLESS 节点使用 Reality;如果证书机构和环境支持,也可申请合法 IP 地址证书。不要伪造公网 TLS 身份。

将证书复制到各服务专用目录并限制权限,不要给代理进程读取整个 ACME 目录的权限。Certbot deploy hook 只更新相关证书副本并重载对应服务。

6. 配置、systemd 与防火墙

在服务器本地生成凭据,并将协议、端口与凭据映射保存为仅 root 可读的清单。

/usr/local/bin/xray uuid
/usr/local/bin/xray x25519
openssl rand -base64 32
openssl rand -hex 16

chmod 0640 /etc/sing-box/config.json /etc/xray/config.json
chown root:sing-box /etc/sing-box/config.json
chown root:xray /etc/xray/config.json

每个 inbound 使用独立 tag、端口和凭据;明确配置 direct 与 block outbound;除非实验需要,阻止代理访问私网目标;日志中不要输出完整订阅 URL 和密码。

sing-box check -c /etc/sing-box/config.json
/usr/local/bin/xray run -test -c /etc/xray/config.json

systemctl enable --now sing-box
systemctl enable --now xray
systemctl status sing-box xray --no-pager
journalctl -u sing-box -u xray --since "10 minutes ago" --no-pager

精确放行端口

ufw allow OpenSSH
ufw allow <tcp-port>/tcp
ufw allow <udp-port>/udp
ufw enable
ufw status numbered

7. 生成 SpellVPN 订阅 URL

  1. 为已验证节点生成标准分享链接,例如 ss://vless://vmess://trojan://hysteria2://tuic://socks5:// 和带认证的 https:// 代理链接。
  2. 每行一个链接;名称、路径与查询参数必须正确 URL 编码;将完整换行列表进行 Base64 编码。
  3. WireGuard、OpenVPN、IKEv2 和 OpenConnect 使用单独受保护的客户端文件包。
install -d -m 0755 /var/www/vpn-sub
base64 -w 0 share-links.txt > /var/www/vpn-sub/subscription.b64
chmod 0644 /var/www/vpn-sub/subscription.b64

# 放在 Nginx HTTPS server 块内
location = /sub/<long-random-token> {
    alias /var/www/vpn-sub/subscription.b64;
    default_type text/plain;
    add_header Cache-Control "no-store";
}
随机路径不等于强认证。订阅令牌应按密钥管理,泄露后立即轮换;需要更高安全性时增加 HTTP 认证、IP 限制或其他访问控制。

在 SpellVPN 中打开:首页 → + → 订阅 URL,粘贴 HTTPS 地址并导入,然后进入“节点”逐个测试。

8. 本机与远程验证

端口正在监听不代表代理可用。每种协议都要用匹配客户端建立本地 SOCKS 测试出口,再从另一条外部网络重复验证。

ss -lntup
curl --socks5-hostname 127.0.0.1:<local-test-port> https://api.ipify.org
curl -fsS https://<subscription-host>/sub/<token> | base64 -d
systemctl is-active sing-box xray nginx
systemctl is-enabled sing-box xray nginx
  • 每个节点返回的公网出口 IP 都是服务器 IP。
  • TCP 与 UDP 节点均完成 VPS 外部测试。
  • 订阅使用可信 HTTPS,可被 SpellVPN 导入且没有静默跳过节点。
  • 重启服务器后服务、证书权限和防火墙规则仍然有效。
  • 错误密码、被吊销 UUID 和过期凭据会被拒绝。

9. 运维与安全加固

  • 优先使用 SSH 密钥;确认密钥登录成功后关闭密码登录,并尽量禁止直接 root 登录。
  • sing-box、Xray、Nginx 使用独立低权限用户和最小文件权限。
  • 启用安全更新,监控失败服务、磁盘、内存和证书续期。
  • SOCKS5 与 HTTP CONNECT 必须认证并限制速率,绝不运行开放代理。
  • 分享或测试结束后轮换 UUID、密码、Reality 密钥和订阅令牌。
  • 升级前执行配置检查,一次只升级一个核心,并保留可回滚备份。
维护建议:让 sing-box 保持为覆盖面广的主服务,Xray 只承担必要兼容扩展。只有服务器核心、SpellVPN 解析器和真实远程流量测试全部通过,才把节点加入正式订阅。