比 3X-UI 更优秀的 Xray 可视化面板 Marzban 保姆级搭建教程
前言
前段时间 3X-UI 由于默认允许 HTTP 访问而不被 Xray 官方推荐,并且 3X-UI 也不支持定期重置流量,不太满足我的需求,而 Marzban 在这方面就比较完美了。
不过 Marzban 的配置比起 3X-UI 要复杂得多,内核配置和订阅模板都是要手搓的,如果你本来就熟悉配置,那么迁移到 Marzban 没有任何难度,但如果你是纯小白,那就有亿点点困难了。
提示
Marzban 主要用于创建多用户以及流量统计/定期重置,如果你是一个人用,就没必要用面板了
安装
一键脚本
bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install
SSL 证书
警告
由于 Marzban 强制使用 HTTPS,正常情况下,你应该给面板绑定一个域名并启用 HTTPS 才能访问 Marzban
如果实在不想用域名的,则需要在 .env
环境变量中配置自签证书或 IP 证书的路径和类型
# 自签证书
UVICORN_SSL_CERTFILE = "/var/lib/marzban/ip.crt"
UVICORN_SSL_KEYFILE = "/var/lib/marzban/ip.key"
UVICORN_SSL_CA_TYPE = "private"
重启 Marzban
修改完 .env
之后,需要使用 marzban restart
重启一下 Marzban 才会生效
更新 Xray
一键脚本安装的 Xray 内核不是最新版,可以通过 marzban core-update
将其更新到最新版本
配置
添加管理员
警告
默认情况下是没有管理员的,尽管可以在 .env
中以硬编码的形式来设置用户名与密码,但这种方式从安全性方面来说并不推荐
SUDO_USERNAME = "admin"
SUDO_PASSWORD = "admin"
推荐使用 marzban cli
以命令行的形式来创建管理员的用户名与密码
marzban cli admin create --sudo
添加 Reality
通过上面的一系列设置,我们终于可以通过 https://ip:8000/dashboard/
来访问面板了
使用刚才创建的用户名与密码进行登录

与 3X-UI 这类面板不同,尽管 Marzban 也是可视化面板,但你并不能可视化创建入站,仍然需要手搓 Xray 的配置
当然这对手动配置过 Xray 的用户来说应该并不是难事,点击右上角的小齿轮,就可以看到核心设置

Marzban 配置与直接安装 Xray 的核心配置完全一致,没有什么特殊配置,只需将常规配置中的 clients
赋值为空数组即可,用户由面板来创建
{
"log": {
"loglevel": "waring",
"access": "/var/lib/marzban/logs/access.log",
"error": "/var/lib/marzban/logs/access.log"
},
"inbounds": [
{
"tag": "Reality",
"listen": "0.0.0.0",
"port": 10086,
"protocol": "vless",
"settings": {
"clients": [
{
"id": "<UUID>", // 通过 `xray uuid` 命令生成
"flow": "xtls-rprx-vision"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"dest": "domain.com:443", // 填入上方回落域名与端口,例如 `domain.com:443`
"serverNames": ["domain.com"], // 填入上方回落域名,例如 `domain.com`
"privateKey": "<Private Key>", // 通过 `xray x25519` 命令生成,将 Private key 填入即可
"shortIds": ["<Short IDs>"] // 通过 `openssl rand -hex 8` 生成
}
},
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls", "quic"]
}
}
],
"outbounds": [{ "protocol": "freedom" }]
}
创建用户
接着创建一个用户,选择刚才创建的出站协议,一个用户可以分配多个出站
然后根据自己的需求设置用户名、流量限制、过期时间,如果设置了流量限制,还可以设置定期重置流量,这个功能 3X-UI 是没有的

Clash 模板
此外,如果 Clash 要使用订阅链接,还需要上传 Clash 的模板,然后在 .env
环境变量中指定模板目录和模板文件名。
CUSTOM_TEMPLATES_DIRECTORY="/var/lib/marzban/templates/"
CLASH_SUBSCRIPTION_TEMPLATE="clash-template.yaml"
这里的 Clash 模板与正常的 Clash 配置文件没有区别,只需要将其中写死的配置替换为变量,由 Marzban 来动态生成。
{{ conf | except("proxy-groups", "mixed-port", "port", "mode", "ipv6", "allow-lan", "log-level", "dns") | yaml }}
proxy-groups:
- name: 🚀 节点选择
type: select
proxies:
{% for item in proxy_remarks %}
- {{ item }}
{% endfor %}
常见问题
分流
如果你想在内核设置的 routing
中使用 user
分流,那么直接使用用户名 qwcYwG
是无法成功分流的
查看 Xray 的日志可以发现,经过 Marzban 处理后,Xray 内核获取到的实际用户名还需要加上序号,例如面板创建的第一个用户,实际用户名为 1.qwcYwG
日志
如果你配置了日志,需要手动创建 /var/lib/marzban/logs/access.log
和 /var/lib/marzban/logs/error.log
,否则 Xray 内核会启动失败
Clash 订阅
如果你的客户端是替换了 mihomo 内核的 Clash for Windows ,使用 Marzban 订阅时会获取不到原版内核不支持的协议(例如 Reality)
这是由于 Marzban 会根据客户端请求的 user-agent
判断来返回内核支持的协议,而 Clash for Windows 对应的就是原版内核,如果你需要获取 mihomo 内核的配置文件,可以在后面加上 /clash-meta
,完整的订阅链接就是 https://ip:8000/sub/xxxxxxxxxxxxx/clash-meta
订阅失败
如果你是使用自签证书 + IP + 端口直接访问面板的,那么 Clash 客户端订阅时可能会失败,建议通过浏览器访问 https://ip:8000/sub/xxxxxxxxxxxxx/clash-meta
将配置文件下载下来再手动导入