如果你管理着 5-50 个用户,觉得 3x-UI 太重、手写 Xray config 太麻烦,那么 Marzban 可能是更合适的选择。
Marzban 是一个基于 Xray-core 的轻量级面板,特点是部署极快、资源占用低、用户管理直观。这篇文章会带你走一遍 Docker 一键安装 → 用户管理 → 日常运维的完整流程。
⚠️ 重要提醒
本指南仅用于技术研究与学习用途。部署前请确认你了解并遵守所在地区的相关法律法规。
一、Marzban 与 3x-UI 的定位区别
| 维度 | Marzban | 3x-UI |
|---|---|---|
| 定位 | 轻量多用户面板 | 全能型面板 |
| 部署方式 | ✅ Docker 一键(推荐) | 脚本 / 手动 |
| 协议支持 | VLESS / VMess / Trojan | VLESS / 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 基础设置
- 登录后进入 设置 → 核心设置。
- Xray 模板:Marzban 使用自己的 Xray 配置模板,默认支持 VLESS + Reality。
- 面板地址:填写用户访问的域名(可选,用于订阅链接)。
- 订阅路径:默认
/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 私钥建议每季度轮换:
- 生成新的 x25519 密钥对
- 在面板更新 Reality 配置
- 通知用户更新客户端配置
- 旧密钥保留 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 |