AI 指令:搭建 AnyTLS + Reality + Hysteria 2 双栈节点 + 自动优化 + 看门狗 WebUI 订阅
目标概览
搭建一套自托管、抗封锁、高性能的代理与运维管控系统:
- 单一统一内核:基于
sing-box(>= 1.12.0),单进程原生集成 AnyTLS 与 Hysteria 2 双协议入站。 - 双协议互补:
- AnyTLS + Reality (TCP):TLS 长度指纹填充 + 真实大厂域名 SNI 偷渡,抵御审查探测。
- Hysteria 2 (UDP):基于定制 QUIC 协议,极速吞吐与跨国恶劣网络抗丢包加速。
- 高位随机端口:双协议分别从 10000~60000 抽取独立未占用端口,并附带 VPS 防火墙(UFW/iptables)自动放行。
- VPS 环境自适应调优:自动探测架构与公网 IP,一键启用 Linux BBR 拥塞控制并深度调优 UDP 发送/接收缓冲区。
- Go 语言写看门狗与 WebUI(端口 3589,默认密码 temp123):
- 进程看门狗 (Watchdog):心跳守护 sing-box 进程,异常崩溃秒级自动重启。
- WebUI 控制台:展示 AnyTLS / Hy2 链接(带复制按钮)、二维码、实时上下行速率与累计流量、sing-box 近似 CPU 与内存使用率。
- Token 订阅服务:对外输出直接导入的 Base64、Clash.Meta 及 sing-box 完整配置订阅。
第一步:VPS 环境探测与系统级自适应调优
Hysteria 2 对 Linux UDP 缓冲区大小极度敏感,缓冲区过小会导致严重丢包;AnyTLS 也需要 BBR 提供稳定的拥塞控制。
AI 应在宿主机执行系统检查与参数优化:
# 1. 开启 BBR 与 FQ 队列调度
sysctl -w net.core.default_qdisc=fq
sysctl -w net.ipv4.tcp_congestion_control=bbr
# 2. 调大系统 UDP 接收与发送缓冲区(专为 Hysteria 2 优化)
sysctl -w net.core.rmem_max=8388608
sysctl -w net.core.wmem_max=8388608
sysctl -w net.core.rmem_default=4194304
sysctl -w net.core.wmem_default=4194304
# 3. 增大文件句柄与网络连接队列
sysctl -w fs.file-max=1000000
sysctl -w net.core.somaxconn=4096
# 4. 持久化至 /etc/sysctl.d/99-proxy-tuning.conf
cat << 'EOF' > /etc/sysctl.d/99-proxy-tuning.conf
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
net.core.rmem_max = 8388608
net.core.wmem_max = 8388608
net.core.rmem_default = 4194304
net.core.wmem_default = 4194304
fs.file-max = 1000000
net.core.somaxconn = 4096
EOF
sysctl --system
获取当前 VPS 公网 IP:自动通过 curl -s4 https://api64.ipify.org || curl -s4 https://ifconfig.me 探测公网 IPv4,记录为 publicIp。
第二步:安装 sing-box 核心
自动匹配系统架构下载 sing-box 1.12.0 或更新版本至 bin/sing-box(或 /usr/local/bin/sing-box):
ARCH=$(uname -m)
case "$ARCH" in
x86_64) SB_ARCH="amd64" ;;
aarch64|arm64) SB_ARCH="arm64" ;;
*) echo "不支持的架构: $ARCH"; exit 1 ;;
esac
LATEST_TAG=$(curl -s https://api.github.com/repos/SagerNet/sing-box/releases/latest | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
TAR_NAME="sing-box-${LATEST_TAG#v}-linux-${SB_ARCH}.tar.gz"
DOWNLOAD_URL="https://github.com/SagerNet/sing-box/releases/download/${LATEST_TAG}/${TAR_NAME}"
curl -Lo /tmp/sing-box.tar.gz "$DOWNLOAD_URL"
tar -xzf /tmp/sing-box.tar.gz -C /tmp/
install -m 755 /tmp/sing-box-*/sing-box /usr/local/bin/sing-box
rm -rf /tmp/sing-box* /tmp/sing-box.tar.gz
第三步:生成随机端口、安全凭据与防火墙放行
端口必须随机从 10000~60000 中选取未占用端口,并必须提示或自动放行 VPS 本地防火墙,否则客户端无法连入。
AI 应编写自动分配与安全凭据生成逻辑:
- AnyTLS 端口(
anytlsPort):10000~60000 间随机挑选未占用 TCP 端口。 - Hysteria 2 端口(
hy2Port):10000~60000 间随机挑选未占用 UDP 端口。 - WebUI 与看门狗端口(
webPort):默认3589(支持通过-port或PROXY_PORT覆盖)。 - Reality 密钥对与 Short ID:
KEYPAIR=$(sing-box generate reality-keypair) PRIVATE_KEY=$(echo "$KEYPAIR" | grep "PrivateKey" | awk '{print $2}') PUBLIC_KEY=$(echo "$KEYPAIR" | grep "PublicKey" | awk '{print $2}') SHORT_ID=$(openssl rand -hex 8) - AnyTLS 密码:
ANYTLS_PASSWORD=$(openssl rand -base64 16) - Hysteria 2 密码:
HY2_PASSWORD=$(openssl rand -base64 16) - 订阅 Token:
SUB_TOKEN=$(openssl rand -hex 16) - Hy2 ECC 自签名证书:
mkdir -p /etc/sing-box/certs openssl ecparam -genkey -name prime256v1 -out /etc/sing-box/certs/hy2.key openssl req -new -x509 -days 3650 -key /etc/sing-box/certs/hy2.key -out /etc/sing-box/certs/hy2.crt -subj "/CN=bing.com" - 防火墙自动放行(Linux UFW / iptables):
# 若系统启用了 ufw,自动放行对应端口 command -v ufw >/dev/null && { ufw allow ${ANYTLS_PORT}/tcp ufw allow ${HY2_PORT}/udp ufw allow ${WEB_PORT}/tcp }提示用户:若使用的是阿里云、腾讯云、AWS、甲骨文云等 VPS,还需前往对应云服务商控制台的「安全组」添加入方向规则,允许对应的 AnyTLS(TCP)、Hy2(UDP) 与 WebUI(TCP) 端口。
第四步:生成 sing-box 配置文件(含流量统计 API)
配置开启 clash_api 导出流量统计接口(监听 127.0.0.1:9090),写入 /etc/sing-box/config.json:
{
"log": {
"level": "warn",
"timestamp": true
},
"experimental": {
"clash_api": {
"external_controller": "127.0.0.1:9090",
"secret": "<CLASH_API_SECRET>"
}
},
"inbounds": [
{
"type": "anytls",
"tag": "anytls-in",
"listen": "::",
"listen_port": <ANYTLS_PORT>,
"users": [
{
"name": "user1",
"password": "<ANYTLS_PASSWORD>"
}
],
"padding_scheme": [
"stop=8",
"0=30-30",
"1=100-400",
"2=400-500,c,500-1000,c,500-1000,c,500-1000,c,500-1000",
"3=9-9,500-1000",
"4=500-1000",
"5=500-1000",
"6=500-1000",
"7=500-1000"
],
"tls": {
"enabled": true,
"server_name": "gateway.icloud.com",
"reality": {
"enabled": true,
"handshake": {
"server": "gateway.icloud.com",
"server_port": 443
},
"private_key": "<PRIVATE_KEY>",
"short_id": ["<SHORT_ID>"]
}
}
},
{
"type": "hysteria2",
"tag": "hy2-in",
"listen": "::",
"listen_port": <HY2_PORT>,
"users": [
{
"name": "user1",
"password": "<HY2_PASSWORD>"
}
],
"ignore_client_bandwidth": false,
"tls": {
"enabled": true,
"certificate_path": "/etc/sing-box/certs/hy2.crt",
"key_path": "/etc/sing-box/certs/hy2.key"
}
}
],
"outbounds": [
{
"type": "freedom",
"tag": "direct"
}
]
}
第五步:节点信息落盘 anytls_hy2.json
把所有配置信息及订阅地址落盘到 anytls_hy2.json(权限 600):
{
"publicIp": "<PUBLIC_IP>",
"anytlsPort": 38214,
"anytlsPassword": "<PASSWORD>",
"realityPublicKey": "<PUBLIC_KEY>",
"realityShortId": "<SHORT_ID>",
"realitySni": "gateway.icloud.com",
"hy2Port": 49152,
"hy2Password": "<PASSWORD>",
"hy2Sni": "bing.com",
"webPort": 3589,
"subToken": "<HEX_TOKEN>",
"subUrl": "http://<PUBLIC_IP>:3589/sub?token=<HEX_TOKEN>",
"clashSubUrl": "http://<PUBLIC_IP>:3589/sub?token=<HEX_TOKEN>&format=clash",
"createdAt": "2026-10-05T12:00:00+08:00"
}
第六步:用 Go 写看门狗与 WebUI(端口 3589,默认密码 temp123)
参考 vless_cf 模式,编写轻量 Go 单二进制程序(建议仅用标准库),身兼编排器、看门狗、订阅服务器与 Web 控制台。
功能特性:
- 进程看门狗:拉起
sing-box run子进程。每 10 秒检测子进程活性;若异常崩溃退出,自动记录重启并重新拉起。 - 优雅退出:捕获
SIGINT/SIGTERM信号,优雅杀掉底层 sing-box 子进程后退出。 - 参数与环境变量覆盖:
# 命令行参数 ./proxy_manager -port 3589 -password temp123 # 或环境变量 PROXY_PORT=8080 PROXY_PASSWORD=yourpass ./proxy_manager - 鉴权控制:
- Web 控制台
/与 API/api/*受 HTTP Basic Auth(用户名admin+ 密码)保护。 - 订阅路由
/sub?token=<TOKEN>使用 Token 鉴权(无需输入账号密码,方便客户端自动拉取)。
- Web 控制台
- 路由定义:
GET /:返回纯前端单页控制台。GET /sub?token=<TOKEN>:输出订阅节点(默认返回通用 Base64;带&format=clash返回 Clash.Meta YAML;带&format=singbox返回 sing-box JSON)。GET /api/status:返回 sing-box 进程状态、重启次数、当前端口与 IP。GET /api/stats:向http://127.0.0.1:9090/traffic抓取当前上下行速率与累计流量。GET /api/resources:返回 sing-box 进程的 CPU 百分比与常驻内存(RSS),保留最近 60 条采样记录(约 1 小时趋势)。
第七步:页面展示要点(Vanilla JS,无外部 CDN)
WebUI 前端页面需展示:
- 双节点连接信息:
- AnyTLS + Reality 链接(一键复制与扫码)。
- Hysteria 2 链接(一键复制与扫码)。
- 专属订阅卡片:展示通用订阅 URL 与 Clash 订阅 URL,附带一键复制按钮。
- 看门狗运行状态:显示当前内核运行状态(Running / Restarting)、进程 PID、看门狗故障拉起次数。
- 实时速率与流量统计:展示当前上传速度、下载速度以及累计流量。
- 系统与进程资源使用率:展示 sing-box 近似 CPU 使用率与内存 MB 曲线。
第八步:交付标准与验收
- 产出文件:
anytls_hy2.html(本指令页)、main.go+go.mod(看门狗编排器 + WebUI)、运行时生成anytls_hy2.json(加入.gitignore)、内核放入bin/。 - 服务守护:可选配置
systemd守护管理proxy_manager,实现开机自启。 - 验证命令:
- 浏览器访问
http://<PUBLIC_IP>:3589,用admin/temp123登录,能看到节点信息、流量监控及资源占用。 - 执行
curl -s "http://<PUBLIC_IP>:3589/sub?token=<TOKEN>" | base64 -d,能正确解出anytls://和hysteria2://两个链接。 - 执行
killall -9 sing-box制造崩溃,观察 Web 控制台并在 10 秒内心跳自动重新拉起。
- 浏览器访问