2026 AnyTLS + S-UI 从零搭建:面板安装、TLS、节点、客户端完整教程
这篇只做一件事:让第一次使用 S-UI 的人,从一台干净 VPS 开始,最终得到一个可以真实导入客户端并验证连通性的 AnyTLS 节点。每一步都写清楚“点哪里、选什么、填什么、看到什么算成功”。
推荐 Ubuntu 22.04/24.04 或 Debian 11/12,拥有 root 权限和公网 IPv4。AnyTLS 从 sing-box 1.12.0 起成为正式入站类型,服务端必须配置用户密码和 TLS。S-UI 当前公开稳定容器包仍以 v1.5.4 标记 Latest,但仓库已经出现 v1.5.5 构建,因此安装时以官方脚本实际拉取的当前稳定版为准。
先看最终链路:面板端口和节点端口不是一回事
| 用途 | 示例 | 是否给客户端使用 |
|---|---|---|
| S-UI 管理面板 | 5443/TCP + 随机路径 | 否,只给管理员登录 |
| S-UI 订阅服务 | 以当前 Settings / 安装输出为准 | 可选 |
| AnyTLS 入站 | 8443/TCP | 是 |
| ACME HTTP Challenge | 80/TCP | 仅申请证书时需要 |
面板端口用独立高位端口,AnyTLS 再单独开放一个 TCP 端口。不要为了“看起来像 HTTPS”把所有服务都强塞在 443。
准备服务器:确认系统、时间、端口和防火墙
cat /etc/os-release
uname -m
date
ss -lntup | head -n 30
# Ubuntu / Debian 常用工具
apt update
apt install -y curl ca-certificates openssl系统时间正确;你知道服务器公网 IP;计划使用的面板端口和 AnyTLS 端口没有被占用。
即使服务器里的 UFW 没拦,云厂商控制台安全组如果没放端口,外网仍然访问不到。本文示例会用到 5443/TCP、8443/TCP,申请 ACME HTTP 证书时还可能需要 80/TCP。
安装 S-UI:只使用官方脚本
官方当前 Linux/macOS 安装命令:
bash <(curl -Ls https://raw.githubusercontent.com/alireza0/s-ui/master/install.sh)希望安装器使用简体中文,可以这样运行:
SUI_LANG=zhcn bash <(curl -Ls https://raw.githubusercontent.com/alireza0/s-ui/master/install.sh)官方 README 目前列出默认 Panel Port 2095、Panel Path /app/、Subscription Port 2096、Subscription Path /sub/、默认账号密码 admin/admin。实际安装后请以终端输出和你自己的 Settings 为准,并立即修改管理凭据。
systemctl status s-ui --no-pager
systemctl status sing-box --no-pager
s-uis-ui 命令可以进入管理菜单,两个服务没有持续报错。
第一次打开 S-UI:先确认首页正常,再改安全设置
浏览器访问安装器输出的面板地址。如果仍使用默认信息,形式大致为:
http://你的服务器IP:2095/app/
Home 页能看到 Sing-Box Info、CPU、RAM、流量等状态;此时再进入下一步改面板安全设置。
修改面板端口、路径和管理员账号
| 项目 | 新手建议 |
|---|---|
| Panel Port | 选择未占用高位端口,例如 5443 |
| Panel Path | 随机路径,例如 /sui-7f3a/;不要使用 / 或 /admin |
| Username | 换成自己的管理员名 |
| Password | 使用随机强密码,不和节点密码复用 |
如果你把面板从 2095 改到 5443,却没有先在安全组/UFW 放行 5443,保存后会立刻“把自己关在门外”。
ufw allow 5443/tcp
ufw allow 8443/tcp
ufw status保存后使用新的端口和路径重新登录一次,旧地址不再作为日常入口。
准备域名和 TLS:AnyTLS 不应该跳过证书
先把一个域名,例如 node.example.com,解析到服务器公网 IP。等待解析生效后检查:
getent ahosts node.example.com
# 或
nslookup node.example.com有域名和有效证书时,客户端可以保持证书校验开启;用 IP + 自签证书虽然能测试,但客户端必须显式跳过验证,安全性和可维护性都更差。
在 TLS Settings 创建证书模板
anytls-cert 的 TLS 模板,后面 AnyTLS 入站直接选择它。| 字段 | 填写方式 |
|---|---|
| Name | anytls-cert |
| Type | TLS |
| SNI | 你的节点域名,例如 node.example.com |
| 证书 | 可以选 Use Path 填 fullchain / private key 路径,或 Use Text 粘贴 PEM |
| ACME | 如果没有现成证书,可在下方 ACME 区启用域名申请;支持 Let's Encrypt、ZeroSSL,以及 Cloudflare/AliDNS 等 DNS-01 Provider |
用 HTTP-01 申请证书时,域名必须正确解析到服务器,并且公网 80/TCP 能到达这台机器。80 被别的 Web 服务占用时,可以改用 DNS-01,或使用已有证书路径。
TLS Settings 列表里能看到 anytls-cert,并且证书状态没有报错。
创建客户端用户:AnyTLS 密码在 Client Config 里

| 标签 | 操作 |
|---|---|
| Basics | 开启 Enable;Name 填设备名,例如 my-phone;Group 可填 personal;流量和到期时间按需设置 |
| Config | 找到 anytls,确认 Password 已生成;不满意可点刷新重新随机 |
| Inbound Tags | 这一步可以稍后绑定;如果 AnyTLS 入站还没建,先保存用户 |
| Links | 保存用户后再进入,这里会展示本地生成的分享 URI / 外部链接 / 订阅链接 |

管理员账号只用于登录 S-UI;AnyTLS Password 是客户端认证凭据,两者必须独立。
创建 AnyTLS 入站:Type、Port、Client、TLS 一个都不能漏
| 字段 | 建议值 | 说明 |
|---|---|---|
| Type | AnyTLS | 协议类型 |
| Tag | anytls-8443 | 只用于管理识别 |
| Listen | :: | S-UI 新入站默认也倾向使用双栈监听 |
| Port | 8443 | 确保 TCP 端口未占用且已放行 |
| Padding scheme | 先保持默认 | sing-box 官方有默认 padding scheme;新手不要随意删除/乱改 |
| Clients | 选择刚创建的用户或 Group | 没有用户,客户端无法认证 |
| TLS Template | anytls-cert | AnyTLS 在当前 S-UI 中属于 OnlyTLS 类型,没有 TLS 模板无法通过保存校验 |
sing-box AnyTLS inbound 的核心就是 type: anytls、监听字段、必填 users[].password、可选 padding_scheme 和 tls。S-UI 只是把这些字段做成了图形界面。
Inbounds 列表应出现新的 AnyTLS 卡片,并显示 Port、TLS、Clients 等状态。
把用户绑定到 AnyTLS 入站,并复制 S-UI 生成的链接
- 在 Inbound Tags 选择
anytls-8443。 - 点击 Save。
- 重新打开这个用户,切到 Links 标签。
- 复制 S-UI 自动生成的 AnyTLS 分享 URI;不要自己手工拼参数。
S-UI 会根据客户端密码、域名、端口、TLS/SNI 等配置生成链接。不同版本对 URI 参数细节可能会调整,直接复制面板结果最不容易出错。
导入客户端:只选明确支持 AnyTLS 的客户端
客户端界面不同,但操作逻辑基本一样:
- 打开客户端的 Import / 从剪贴板导入 / Add profile。
- 粘贴刚从 S-UI Links 复制的 AnyTLS URI。
- 检查 Server 是你的域名、Port 是
8443、TLS 已开启。 - 如果使用有效证书,SNI 应为节点域名,不要开启 insecure / skip-cert-verify。
- 保存,切换到这个节点,然后进行延迟/连通性测试。
说明它的核心版本或 GUI 暂不支持 AnyTLS。不要把 AnyTLS 链接硬改成 VLESS/Trojan;换用明确支持 AnyTLS / sing-box 新版核心的客户端。
服务端验证:确认 8443 正在监听、连接有日志
ss -lntp | grep ':8443 '
systemctl status sing-box --no-pager
journalctl -u sing-box -n 80 --no-pager
- 服务器
8443/TCP确实处于 LISTEN。 - 客户端连接时 sing-box 日志没有持续 TLS / authentication error。
- S-UI Clients / Inbounds 对应用户流量开始增加。
- 关闭客户端后重新连接仍然稳定,而不是偶尔“碰巧成功”。
最终验收:按这张清单逐项打勾
- S-UI 面板已更换管理员账号、密码、端口和随机路径。
- S-UI 与 sing-box 服务重启后都能自动恢复。
- 节点域名解析到正确 VPS。
- TLS 模板证书与私钥匹配,SNI 与域名一致。
- AnyTLS 入站选择了正确 Client 和 TLS Template。
- AnyTLS 的公网 TCP 端口已同时在系统防火墙与云安全组放行。
- Client Config 中 AnyTLS Password 是独立随机密码。
- 使用 S-UI 自动生成的链接成功导入兼容客户端。
- 客户端使用有效证书时没有开启 insecure。
- 服务端日志和 S-UI 流量统计都能看到真实连接。
常见问题排查:按症状定位,不要反复重装
| 现象 | 常见原因 | 检查 / 修复 |
|---|---|---|
| 安装后面板打不开 | Panel Port 未放行、路径错误、服务没启动 | 运行 systemctl status s-ui;确认安全组和完整 Panel Path |
| 改了面板端口后失联 | 新端口没提前放行 | 从 SSH/UFW/云安全组放行新端口,再用新 URL 登录 |
| AnyTLS 入站无法保存 | 没有 TLS Template、Tag 为空、端口非法 | 当前 S-UI 对 AnyTLS 强制要求 TLS 模板;逐项补齐 |
| 客户端 TLS handshake failed | SNI 错、证书域名不匹配、证书过期 | 核对域名、SNI、证书有效期;不要先用 insecure 掩盖问题 |
| authentication failed | 客户端 Password 与 S-UI Client Config 不一致 | 重新复制 Links 里的自动生成 URI |
| 端口 LISTEN 但外网连不上 | 云安全组/iptables/UFW 拦截 | 本机 ss 正常后,从另一网络测试 TCP 端口 |
| Links 里没有想要的节点 | Client 没绑定 Inbound Tags | 编辑 Client → Basics → Inbound Tags,选择 AnyTLS 入站并保存 |
| 客户端没有 AnyTLS | 客户端核心过旧 | 升级到支持 AnyTLS 的 sing-box 核心/GUI,不要改协议类型 |
版本与资料说明
S-UI:当前官方 README 提供 Linux/macOS 一键安装脚本,并列出 Panel Port 2095、Panel Path /app/、Subscription Port 2096、Subscription Path /sub/、admin/admin 的默认安装信息;部署后应立即更改。
AnyTLS:sing-box 官方文档标注自 1.12.0 起支持 AnyTLS;服务端 users 为必填,padding_scheme 有默认方案,并支持 TLS。
本文界面图:Home / Clients / Edit Client 使用 S-UI 官方截图;首次设置、TLS、AnyTLS 入站、Client Links 为根据当前 S-UI 前端源码生成的中文界面示意图,并明确标注为“界面示意”。
客户端 → node.example.com:8443 → TLS → AnyTLS → S-UI / sing-box → Internet
新手真正需要记住的是:管理面板、TLS 模板、Client、Inbound 是四个不同对象。先把它们分别建好,再做绑定和分享链接,排错会简单很多。