Skip to content

比 3X-UI 更优秀的 Xray 可视化面板 Marzban 保姆级搭建教程

前言

前段时间 3X-UI 由于默认允许 HTTP 访问而不被 Xray 官方推荐,并且 3X-UI 也不支持定期重置流量,不太满足我的需求,而 Marzban 在这方面就比较完美了。

不过 Marzban 的配置比起 3X-UI 要复杂得多,内核配置和订阅模板都是要手搓的,如果你本来就熟悉配置,那么迁移到 Marzban 没有任何难度,但如果你是纯小白,那就有亿点点困难了。

提示

Marzban 主要用于创建多用户以及流量统计/定期重置,如果你是一个人用,就没必要用面板了

安装

一键脚本

sh
bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install

SSL 证书

警告

由于 Marzban 强制使用 HTTPS,正常情况下,你应该给面板绑定一个域名并启用 HTTPS 才能访问 Marzban

如果实在不想用域名的,则需要在 .env 环境变量中配置自签证书或 IP 证书的路径和类型

/opt/marzban/.env
ini
# 自签证书
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 中以硬编码的形式来设置用户名与密码,但这种方式从安全性方面来说并不推荐

/opt/marzban/.env
ini
SUDO_USERNAME = "admin"
SUDO_PASSWORD = "admin"

推荐使用 marzban cli 以命令行的形式来创建管理员的用户名与密码

sh
marzban cli admin create --sudo

添加 Reality

通过上面的一系列设置,我们终于可以通过 https://ip:8000/dashboard/ 来访问面板了

使用刚才创建的用户名与密码进行登录

登录
登录

与 3X-UI 这类面板不同,尽管 Marzban 也是可视化面板,但你并不能可视化创建入站,仍然需要手搓 Xray 的配置

当然这对手动配置过 Xray 的用户来说应该并不是难事,点击右上角的小齿轮,就可以看到核心设置

核心设置
核心设置

Marzban 配置与直接安装 Xray 的核心配置完全一致,没有什么特殊配置,只需将常规配置中的 clients 赋值为空数组即可,用户由面板来创建

sh
{
  "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 环境变量中指定模板目录模板文件名

/opt/marzban/.env
ini
CUSTOM_TEMPLATES_DIRECTORY="/var/lib/marzban/templates/"
CLASH_SUBSCRIPTION_TEMPLATE="clash-template.yaml"

这里的 Clash 模板与正常的 Clash 配置文件没有区别,只需要将其中写死的配置替换为变量,由 Marzban 来动态生成。

yaml
{{ 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 将配置文件下载下来再手动导入

关注微信公众号
你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.1.3