📌 项目地址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 和内存占用。可以给单个入站设置流量上限,超量自动断开。

几个容易掉进去的坑

  1. README 免责声明不是摆设 项目明确说“不要在生产环境用”。不是项目不稳定,而是这类工具在部分地区有法律风险。自己掂量。
  2. 源码编译的 --recurs 是笔误 README 里 git submodule update --init --recurs 少了个 ive。Git 会报错,改成 --recursive 或者用 runSUI.sh 脚本一键处理。
  3. Docker 镜像名是 alireza7 不是 alireza0 仓库是 alireza0,但打包好的镜像推在 alireza7 账号下。很多人第一次拉镜像会写错。
  4. 默认端口 2095 不一定是冲突 很多面板喜欢用 80/443,但 2095 和 2096 相对偏僻。不过如果你自己机器上有其他服务占用了这两个端口,记得改映射。

我自己用 docker compose 搭了个测试环境,配了两个入站(VMess + VLESS),拖了一条路由规则(国内流量直连,国外走代理),整个过程没碰一行 JSON。比手写配置舒服多了。

这篇文章对你有帮助吗?

发表回复