📌 项目地址:alireza0/s-ui | ⭐ 8,973 颗星 | 🔧 Go | 📜 未标注
这项目到底省了什么事
用 Sing-Box 手动配代理,你得折腾 JSON 文件:写 inbound、outbound、路由规则、流量限速,一个缩进错了就起不来。S-UI 把这一套全塞进浏览器界面——点几下鼠标就能加协议、配用户、拖拽路由规则,实时流量和系统状态也顺手展示。
它本质是一个 Go 写的 Web 面板,后端调 Sing-Box 内核,前端用 React。GitHub 上 8973 个星星,已经算同类里比较成熟的。
项目 README 第一句就是:“仅限个人学习交流,请勿用于非法用途,请勿在生产环境使用”。这句话你得当真。
支持什么协议,有什么功能
| 能力 | 有/无 |
|---|---|
| VMess、VLESS、Trojan、Shadowsocks、Hysteria2、TUIC 等 | 都有 |
| 图形化路由:按域名、IP、GeoIP 分流 | 有 |
| 多用户 / 多入站,各自独立流量统计 | 有 |
| 订阅链接(普通 link、JSON 格式、Clash 格式,带用户信息) | 有 |
| 面板语言可切中文、英文等 | 有 |
| 暗色 / 亮色主题 | 有 |
| REST API,用于外部管理 | 有 |
支持 Linux(amd64/armv6/armv7/arm64/s390x/386)、Windows(amd64/386/arm64),macOS 标了“实验性”,跑起来可能不稳定。
部署:我试过的三种方式
官方给了三种路径,下面按推荐顺序写。
先装 Docker(跳过已有)
curl -fsSL https://get.docker.com | sh
方式一:docker compose(最省事)
mkdir s-ui && cd s-ui
wget -q https://raw.githubusercontent.com/alireza0/s-ui/master/docker-compose.yml
docker compose up -d
启动后容器监听 2095(面板端口)、2096(订阅端口)、80、443。如果你本机 80 或 443 已经被占用,编辑 docker-compose.yml 把端口映射改成别的,比如 8080:80。
方式二:docker run
docker run -itd
-p 2095:2095 -p 2096:2096 -p 443:443 -p 80:80
-v $PWD/db/:/app/db/
-v $PWD/cert/:/root/cert/
--name s-ui --restart=unless-stopped
alireza7/s-ui:latest
挂载了两个目录:db/ 存 SQLite 配置,cert/ 放 TLS 证书。升级容器时保留这两个目录,配置和证书不丢。注意镜像名是 alireza7/s-ui,不是 alireza0,拼错了拉不下来。
方式三:自己编译镜像
如果你不想用别人打包的镜像,或者想定制代码:
git clone https://github.com/alireza0/s-ui
git submodule update --init --recursive
docker build -t s-ui .
git submodule 那行 README 原文写的是 --recurs,少打了个 ive。实际执行时修正成 --recursive,否则子模块拉不全。另外整个构建用了一个 runSUI.sh 脚本,你可以在 repo 根目录找到它,里面做了前端编译 + Go 编译 + 打包的一整套流程。
第一次登录要做什么
面板默认端口 2095,路径 /app/。浏览器打开 http://你的IP:2095/app/,用户名密码都是 admin。
进去第一件事——改密码。面板默认 HTTP,密码明文在局域网传输没问题,但暴露在公网上就是裸奔。可以在面板设置里生成随机密码,或者配 HTTPS。
怎么配 HTTPS
两种方式:
- 面板内上传证书:在“面板设置”里填入证书路径(容器内路径
/root/cert/),面板自己就能开启 TLS。 - 前端加 NGINX 反代:在你自己的服务器上装 NGINX,配置 Let’s Encrypt 证书,然后把
/app/路径反向代理到127.0.0.1:2095。这样外部访问走 HTTPS,面板仍在内网跑 HTTP。
订阅端口 2096 同理。如果你只打算给少量设备用,可以用防火墙限制来源 IP,避免端口被全网扫描。
日常该留意的事
- 备份:所有入站、用户、路由配置都在
db/目录下的 SQLite 文件里。定期cp -r db/ backup-db-$(date +%Y%m%d)就行。 - 升级:先
docker pull alireza7/s-ui:latest拉新镜像,停旧容器,用相同的挂载目录重启。配置和证书都在,基本不丢东西。 - 监控:面板首页能看到每个客户的连接数、实时流量、总流量、CPU 和内存占用。可以给单个入站设置流量上限,超量自动断开。
几个容易掉进去的坑
- README 免责声明不是摆设 项目明确说“不要在生产环境用”。不是项目不稳定,而是这类工具在部分地区有法律风险。自己掂量。
- 源码编译的
--recurs是笔误 README 里git submodule update --init --recurs少了个ive。Git 会报错,改成--recursive或者用runSUI.sh脚本一键处理。 - Docker 镜像名是 alireza7 不是 alireza0 仓库是 alireza0,但打包好的镜像推在 alireza7 账号下。很多人第一次拉镜像会写错。
- 默认端口 2095 不一定是冲突 很多面板喜欢用 80/443,但 2095 和 2096 相对偏僻。不过如果你自己机器上有其他服务占用了这两个端口,记得改映射。
我自己用 docker compose 搭了个测试环境,配了两个入站(VMess + VLESS),拖了一条路由规则(国内流量直连,国外走代理),整个过程没碰一行 JSON。比手写配置舒服多了。