如果你管理着 5-50 个用户,觉得 3x-UI 太重、手写 Xray config 太麻烦,那么 Marzban 可能是更合适的选择。

Marzban 是一个基于 Xray-core 的轻量级面板,特点是部署极快、资源占用低、用户管理直观。这篇文章会带你走一遍 Docker 一键安装 → 用户管理 → 日常运维的完整流程。

⚠️ 重要提醒
本指南仅用于技术研究与学习用途。部署前请确认你了解并遵守所在地区的相关法律法规。

一、Marzban 与 3x-UI 的定位区别

维度Marzban3x-UI
定位轻量多用户面板全能型面板
部署方式✅ Docker 一键(推荐)脚本 / 手动
协议支持VLESS / VMess / TrojanVLESS / VMess / Trojan / Hysteria2
用户管理✅ 极简功能丰富
流量统计基础(总流量)✅ 实时 + 历史明细
面板样式简洁中国风
上手难度
适用规模5-50 用户10-200 用户

简单说:Marzban 追求"开箱即用",3x-UI 追求"功能全面"。选择哪个取决于你的用户规模和运维偏好。

二、环境准备

2.1 VPS 要求

  • 系统:Debian 12 / Ubuntu 24.04(推荐)。
  • 内存:≥ 1GB(Docker + Marzban + Xray 合计 ~200MB)。
  • Docker:需要 Docker 和 Docker Compose。
💡 还没有 VPS?
Marzban + Docker 整体占用约 200MB 内存,1GB 的 VPS 就能流畅运行。推荐 DediRock 纽约 2GB 套餐,年付 $8.88,2GB 内存 + 4TB 月流量,跑 Marzban 面板完全够用,三网直连延迟也低。如果你的用户量较大或流量消耗多,Rabisu 无限流量 VPS 年付 $9.9 不限月流量,适合多用户共享节点无流量顾虑。

2.2 安装 Docker

# 官方脚本一键安装
curl -fsSL https://get.docker.com | sh

# 验证
docker --version
docker compose version

2.3 防火墙配置

ufw allow 22/tcp
ufw allow 443/tcp
ufw allow 443/udp
ufw enable

三、Docker 一键部署

3.1 克隆仓库

git clone https://github.com/Gozargah/Marzban.git
cd Marzban

3.2 创建 docker-compose.yml

cat > docker-compose.yml << 'EOF'
services:
  marzban:
    image: ghcr.io/gozargah/marzban:latest
    container_name: marzban
    restart: always
    ports:
      - "8000:8000"
    environment:
      - UVICORN_WORKERS=2
    volumes:
      - ./marzban:/opt/marzban

  xray:
    image: teddysun/xray
    container_name: marzban-xray
    restart: always
    network_mode: "service:marzban"
    volumes:
      - ./xray:/etc/xray
EOF

3.3 启动服务

docker compose up -d

# 查看日志确认正常
docker compose logs -f marzban
💡 端口说明
Marzban 面板默认在 8000,Xray 通过 network_mode 共享网络栈,不需要单独映射端口。生产环境建议把 8000 放到反向代理(Nginx/Caddy)后面加 HTTPS。

四、面板初始化

4.1 访问面板

浏览器打开 https://你的IP:8000,首次访问会要求创建超级管理员账号。

4.2 基础设置

  1. 登录后进入 设置 → 核心设置
  2. Xray 模板:Marzban 使用自己的 Xray 配置模板,默认支持 VLESS + Reality。
  3. 面板地址:填写用户访问的域名(可选,用于订阅链接)。
  4. 订阅路径:默认 /sub/,可以自定义。

4.3 开启 Reality

设置 → 入站设置 里添加一个 Reality 类型的 inbound:

  • 协议:VLESS
  • 端口:443
  • 安全层:Reality
  • 目标域名:www.microsoft.com
  • 在面板里点击 "生成密钥" 即可。

五、用户管理

5.1 创建用户

面板左侧 用户添加用户

  • 用户名:user_alice
  • 数据限额:如 50 GB
  • 过期时间:可选,留空=永不过期
  • 保存后自动生成 订阅链接,复制发给用户即可。

5.2 订阅链接格式

Marzban 的订阅链接格式:

https://你的域名/sub/用户名/

用户把这个链接粘贴到支持"订阅"的客户端(Clash Verge / Shadowrocket / v2rayN),会自动同步所有可用节点。

5.3 批量管理

Marzban 支持 CSV 批量导入用户,适合初始导入一批测试账号:

# CSV 格式示例
username,data_limit,expire
alice,50GB,
bob,20GB,2026-12-31

六、流量统计与监控

6.1 面板内置统计

每个用户的页面会显示:

  • 已用流量(实时更新)
  • 剩余流量
  • 在线状态(是否在用)
  • 最后活跃时间

6.2 命令行方式

# 进入容器
docker exec -it marzban bash

# 使用 marzban-cli 查看用户列表
marzban-cli list-users

# 重置某用户流量
marzban-cli reset-user-data alice

七、日常运维

7.1 更新 Marzban

cd Marzban
git pull
docker compose pull
docker compose up -d

7.2 备份

核心数据在 ./marzban/ 目录下,定期备份这个目录:

tar czf marzban-backup-$(date +%F).tar.gz ./marzban/
⚠️ 备份注意事项
备份文件包含用户数据和 Xray 私钥,不要放到公开仓库。

7.3 日志查看

# 查看 Marzban 容器日志
docker logs marzban -f

# 查看 Xray 容器日志
docker logs marzban-xray -f

八、生产环境加固

8.1 HTTPS 反向代理

不建议直接把 8000 暴露在公网。用 Caddy 做反代:

# Caddyfile
你的域名 {
  reverse_proxy localhost:8000
}

8.2 防火墙限制

如果不是必须远程管理面板,把 8000 限制为仅你的 IP:

ufw deny 8000/tcp
ufw allow from 你的出口IP to any port 8000

8.3 定期轮换密钥

Reality 私钥建议每季度轮换:

  1. 生成新的 x25519 密钥对
  2. 在面板更新 Reality 配置
  3. 通知用户更新客户端配置
  4. 旧密钥保留 7 天,再彻底删除

九、常见问题排查

现象可能原因解决方向
Docker compose up 失败镜像拉取慢换国内镜像源,或手动 pull ghcr.io/gozargah/marzban
面板打不开 8000端口未映射 / 防火墙docker ps 确认容器运行,ufw allow 8000
订阅链接无效路径配置错检查 设置 → 核心设置 → 订阅路径
Reality 握手失败Key 不一致重新生成,客户端 publicKey 要对应
容器重启后数据丢失Volume 没挂载确认 docker-compose.yml 里有 ./marzban:/opt/marzban