本帖最后由 王多鱼 于 编辑
整理了一份 ASCS IPv6 容器自建节点的完整修正版,提供 VLESS + WebSocket + TLS(经 Cloudflare 隧道)和 Hysteria2 两条线路。完整脚本作为本帖 TXT 附件提供,下载后保存为 setup.sh 即可使用;本帖下面写全安装、检查、换密钥和固定域名的步骤。
2026-10-18 核查:ASCS 官方公开索引仍有免费 IPv6 容器及每 30 天续期的说明,但产品页本次访问返回 OPNsense / DNS Rebind 错误,当前库存和领取流程尚未确认。修正版已做静态检查及 macOS、Debian 13 隔离环境的本机验证,尚未在真实 ASCS 容器上完成外网部署验收。
一、完整修正版下载
完整修正版 v2.0(20571 字节;下载后保存为 setup.sh,先核对正文中的 SHA256)
附件 ascs-setup-v2.0.txt 是完整、可独立运行的 Bash 脚本,内含配置生成、订阅服务、临时隧道管理和检查代码,不需要再拼接原稿。服务器上的文件名使用 /root/setup.sh,保持 UTF-8、LF 换行。
本帖正文受 10,000 字上限限制,长脚本会被截断,因此把完整文件放入附件。下面是该附件的字节数及 SHA256,下载后可核对完整性:
文件:ascs-setup-v2.0.txt
字节数:20571
SHA256:f9a896b8e1784b5c5a1ed5ebc00e7bd7d383110830090595278900b785b1b376
二、两条线路与环境要求
| 线路 | 连接方式 | 需要什么 |
|---|---|---|
| VLESS-CF | 客户端 → Cloudflare → cloudflared → Xray | 客户端可访问 Cloudflare,服务器具备 IPv6 出站 |
| HY2 | 客户端 → 服务器公网 IPv6 / UDP 443 → Hysteria2 → Xray SOCKS5 | 客户端有可用 IPv6,服务器入站 UDP 443 放行 |
Cloudflare 隧道负责入站;IPv4 网站的出站由 Xray 接入 WARP,二者分开验证。Xray、SOCKS5 和订阅服务的本机端口只监听 127.0.0.1,HY2 监听 IPv6 UDP 443。
- 使用专用于该节点的 Debian 13 / x86_64(amd64)/ systemd 容器,root 权限。脚本会管理
xray、hysteria、subweb、cfquick、cfnamed这些服务名,不要覆盖其他业务使用的同名服务。 - 确认容器有公网 IPv6、DNS 和默认路由。Cloudflare 隧道需要向官方端点的 7844 出站:QUIC 使用 UDP,HTTP/2 使用 TCP。WARP 需要实际 WireGuard 端点可达。
- 只使用自己的账号,领取时选真正的 Free 套餐,避免误选付费套餐的试用。免费资源、续期和用途以当前官方面板及条款为准。
- 首次 WARP 注册使用非官方工具 wgcf。阅读条款并同意后,才在安装命令中传入
--accept-warp-tos。脚本不代为注册 ASCS 或 Cloudflare 账号。
三、首次安装
1. 保存完整文件并检查
从本帖附件下载完整文件,通过支持 IPv6 的 SSH/SFTP 上传到服务器,或在网页 Console 中分段保存为 /root/setup.sh。不要从网页里只复制脚本的一部分。
进入服务器 root 控制台:
sudo -i
chmod 700 /root/setup.sh
wc -c /root/setup.sh
sha256sum /root/setup.sh
bash -n /root/setup.sh
字节数、SHA256 应与上文一致,语法检查不应报错。若 Windows 编辑器改成了 CRLF,重新取回原始文件,核对一致后再运行。
2. 检查架构和 IPv6
uname -m
ps -p 1 -o comm=
ip -6 addr show scope global
ip -6 route
架构应为 x86_64,PID 1 为 systemd。修正版只自动选取唯一、有效的公网 IPv6;ULA、临时或不可用地址会排除。有多个可用公网 IPv6 时会要求指定,使用面板分配且实际绑定在本实例上的地址。
3. 安装并执行检查
阅读并同意 WARP 条款后运行:
bash /root/setup.sh install --accept-warp-tos
需要明确选择 IPv6 时,把下面的占位内容换成真实分配的地址:
ASCS_IPV6="你的公网IPv6" bash /root/setup.sh install --accept-warp-tos
脚本先从 GitHub 官方下载固定版本,失败时尝试配置的镜像;无论走哪个来源,都使用已核对的官方 SHA256。需要更换镜像前缀时,可设置 ASCS_GITHUB_MIRROR,哈希校验保持不变。
本次固定组合为 Xray 26.3.27、Hysteria2 2.13.0、wgcf 2.3.1、cloudflared 2026.10.0。它们并非都为最新版本;更新时必须同时调整下载文件和官方哈希,重新验证配置。
安装默认使用临时隧道。必须依次通过实际检查,末尾才会出现 CHECKS_PASSED:
- Xray 经 WARP 访问固定 IPv4 HTTPS 目标,确认出口记录为 WARP IPv4。
- 从公网 HTTPS 入口取回订阅,内容与本机当前订阅一致。
- HY2 本机客户端带正确证书指纹,经 Xray / WARP 完成访问。
- 服务器上的 VLESS 客户端经公网 Cloudflare 入口回到节点,再经 WARP 完成访问。
任何一项失败都会以非零状态退出,不再把“运行到最后”当作成功。最后两项属于服务器发起的自检,仍不能代替另一台设备和实际使用网络的验收。
四、取回订阅并在客户端验证
脚本不将 UUID、密码或完整订阅地址打印到普通安装输出,私密结果保存在仅 root 可读的文件中。需要查看时,在自己的服务器控制台执行:
cat /etc/proxy/client.txt
文件含 SUB_URL、HY2 证书指纹和两条分享链接。把 SUB_URL 添加到支持 VLESS / Hysteria2 的客户端订阅中;具体协议与指纹导入支持取决于客户端版本。
- VLESS-CF:用另一台设备导入订阅后测试真实访问。
- HY2:在有 IPv6 的网络下测试服务器公网 IPv6 / UDP 443。没有 IPv6 的网络无法直连这条线路。
- 证书:HY2 使用自签证书并在订阅中携带
pinSHA256。核对客户端确实保留、启用该指纹;它比单独跳过证书验证多了服务器身份校验。证书重签后需要更新指纹。 - 保密:Base64 只是编码。订阅和分享链接含凭据,不要公开截图、贴到回复里或交给不可信的订阅转换网站。
临时隧道重新创建后域名会改变。安装重跑、regenerate、rotate 或隧道自行重启都可能改变临时订阅地址,需要重新查看私密结果并更新客户端。
五、切换到固定域名
- 准备一个由自己管理、已在 Cloudflare 生效的域名。
- 在 Cloudflare 后台创建远程管理的 Cloudflared 隧道,为它添加公共主机名,例如
node.example.com。Service 使用HTTP,地址为127.0.0.1:10086。 - 在自己的服务器 root 控制台执行以下命令,将示例域名换成真实主机名:
bash /root/setup.sh named node.example.com
脚本会在服务器终端提示输入隧道令牌,输入不回显,令牌不放进命令参数或聊天;保存于 root 可读的受限文件。切换时会停止临时隧道并切换配置,期间连接可能短暂中断。
新隧道需要取得已连接的日志信号,并通过同一套公网订阅和 VLESS 检查,才报告成功。随后重新查看 /etc/proxy/client.txt,在客户端更新订阅地址。
若固定域名配置失败,先检查主机名路由、令牌和防火墙。需要切回临时模式时运行:
bash /root/setup.sh quick
六、日常维护
| 目的 | 命令 | 行为 |
|---|---|---|
| 只检查 | bash /root/setup.sh check |
不主动重启;执行服务与连通性检查 |
| 重新生成并应用 | bash /root/setup.sh regenerate |
保留密钥,刷新 IPv6 / 配置、重启并检查 |
| 轮换节点密钥 | bash /root/setup.sh rotate |
备份旧密钥、生成新密钥、重启并检查 |
| 切回临时隧道 | bash /root/setup.sh quick |
使用新的临时域名,重新检查 |
rotate 会更换 UUID、WS 路径、HY2 密码和订阅随机路径;证书与 Cloudflare 隧道令牌不会因此更换。旧密钥保存在 /etc/proxy/env.previous,同样仅 root 可读。新密钥的生成或配置检查失败时会恢复旧密钥文件;如果之后的重启或网络检查失败,会报错并保留备份,需排查后重试。
需要主动恢复上一次密钥时:
cp -p /etc/proxy/env.previous /etc/proxy/env
bash /root/setup.sh regenerate
查看服务与日志:
systemctl status xray hysteria subweb cfquick cfnamed
journalctl -u xray -u hysteria -u subweb -n 80 --no-pager
cfquick 与 cfnamed 只需要当前使用的一项运行。WARP 注册 / 配置日志在 /etc/proxy/warp/,隧道日志在 /etc/proxy/quick.log 或 /etc/proxy/named.log,测试客户端失败时留下 /etc/proxy/check-client.log。这些文件可能包含运行信息,只在受限终端中检查,不要整份公开。
七、这版具体修了什么
- 运行状态:配置写好并校验后明确重启服务,解决重新安装或换钥后进程继续使用旧配置的问题。
- 成功判据:WARP、隧道、订阅、HY2、VLESS 均有实际检查,失败不输出成功。临时隧道清除旧域名和就绪标记,必须拿到新域名且确认连接后才写入订阅。
- 证书:HY2 分享链接自带 SHA256 指纹;正确指纹可连接、错误指纹被拒绝。
- 容器与地址:WARP 使用用户态网络栈,校验配置密钥及地址格式,从配置中的端点解析 IPv6;多地址环境明确选择公网 IPv6,不再随便取第一条。
- 订阅与文件:配置采用原子替换;订阅服务使用独立低权限账号,只提供当前精确路径,无目录列表,返回
no-store。换钥后旧路径返回 404。临时文件和凭据采用受限权限。
八、已经做过与仍需实测的范围
已完成 ShellCheck、Bash/Python 语法、systemd unit 静态校验;用同版本官方程序做过 macOS 和 Debian 13 ARM64 隔离测试,验证配置生成、HTTP/WS 分流、VLESS 和 HY2 本机数据传输、证书指纹匹配/拒绝、密钥保留与轮换、旧订阅失效、错误密钥拒绝,以及隧道/重启/最终检查失败时不报告成功。Debian 测试使用对应 ARM64 程序验证公共配置和辅助代码,不等同于 amd64 安装器在真实 ASCS 上的完整部署验收。
仍需真实环境确认 ASCS 领取、amd64 安装、systemd 实际运行、WARP 注册与出站、Cloudflare 公网链路,以及另一台客户端的 IPv6 / UDP 和证书导入。上文的 CHECKS_PASSED 是脚本在读者服务器执行后应达到的检查结果,本次没有伪造这一外网结果。
Cloudflare Quick Tunnel 适合测试、没有在线率保证,WS 还受到版本兼容与平台使用条件限制;固定域名也不代表所有流量用途都被许可。免费实例按面板要求续期,不把它当作有 SLA 的服务。
鱼是摸不完的,我们要尊重梦想。
