Unified GUI Censorship Resistant Solution Powered by Xray
English / فارسی / 简体中文 / Русский
Marzban(Marzban一词源自波斯语,意为“边境警卫”,发音为 /mærz'ban/)是一个代理管理工具,提供简单易用的用户界面,可管理数百个代理账户,由 Xray-core 提供支持,使用 Python 和 Reactjs 构建。
Marzban 是一个用户友好、功能丰富且可靠的工具。它让您可以为用户创建不同的代理,无需进行任何复杂的配置。通过其内置的 Web 界面,您可以监视、修改和限制用户。
- 内置 Web 界面
- 完全支持 REST API 的后端
- 支持 Vmess、VLESS、Trojan 和 Shadowsocks 协议
- 单用户的多协议支持
- 单入站的多用户支持
- 单端口的多入站支持(使用 fallbacks)
- 流量和过期日期限制
- 周期性的流量限制(例如每天、每周等)
- 兼容 V2ray 的订阅链接(例如 V2RayNG、OneClick、Nekoray 等)和 Clash
- 自动化的分享链接和二维码生成器
- 系统监控和流量统计
- 可自定义的 xray 配置
- TLS 支持
- 集成的 Telegram Bot
- 多管理员支持(WIP)
Run the following command
sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install
Once the installation is complete:
- You will see the logs that you can stop watching them by closing the terminal or pressing
Ctrl+C
- The Marzban files will be located at
/opt/marzban
- The configuration file can be found at
/opt/marzban/.env
(refer to configurations section to see variables) - The data files will be placed at
/usr/lib/marzban
- You can access the Marzban dashboard by opening a web browser and navigating to
http://YOUR_SERVER_IP:8000/dashboard/
(replace YOUR_SERVER_IP with the actual IP address of your server)
Next, you need to create a sudo admin for logging into the Marzban dashboard by the following command
marzban cli admin create --sudo
That's it! You can login to your dashboard using these credentials
To see the help message of the Marzban script, run the following command
marzban --help
If you are eager to run the project using the source code, check the section below
在您的机器上安装 xray
您可以使用 Xray-install 脚本进行安装:
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
克隆项目并安装依赖项。
您需要 Python>=3.8 版本。
git clone https://github.com/Gozargah/Marzban.git
cd Marzban
wget -qO- https://bootstrap.pypa.io/get-pip.py | python3 -
python3 -m pip install -r requirements.txt
另外,为了拥有一个隔离的环境,您可以使用 Python Virtualenv。
然后运行以下命令运行数据库迁移脚本:
alembic upgrade head
现在开始配置:
复制 .env.example
文件,查看并使用文本编辑器(如nano
)进行编辑。
您可能想要修改管理员凭据。
cp .env.example .env
nano .env
请查看配置部分以获取更多信息。
最终,使用以下命令启动应用程序:
python3 main.py
也可使用 linux systemctl 启动:
systemctl enable /var/lib/marzban/marzban.service
systemctl start marzban
配合 nginx 使用:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location ~* /(dashboard|api|docs|redoc|openapi.json) {
proxy_pass http://0.0.0.0:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# xray-core ws-path: /
# client ws-path: /marzban/me/2087
#
# 所有流量通过 443 端口进行代理,然后分发至真正的 xray 端口(2087、2088 等等)。
# 路径中的 “/marzban” 可以改为任意合法 URL 字符.
#
# /${path}/${username}/${xray-port}
location ~* /marzban/.+/(.+)$ {
proxy_redirect off;
proxy_pass http://127.0.0.1:$1/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
或
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name marzban.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location / {
proxy_pass http://0.0.0.0:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
默认情况下,应用将在 http://localhost:8000/dashboard
上运行。您可以通过更改 UVICORN_HOST
和 UVICORN_PORT
环境变量来进行配置。
您可以使用环境变量或将其放置在
env
或.env
文件中来设置以下设置。
变量 | 描述 |
---|---|
SUDO_USERNAME | 管理员用户名(默认: admin) |
SUDO_PASSWORD | 管理员密码(默认: admin) |
SQLALCHEMY_DATABASE_URL | 数据库文档(SQLAlchemy's docs) |
UVICORN_HOST | 绑定应用程序到此主机(默认为 0.0.0.0 ) |
UVICORN_PORT | 绑定应用程序到此端口(默认为 8000 ) |
UVICORN_UDS | 将应用程序绑定到一个 UNIX 域套接字 |
UVICORN_SSL_CERTFILE | SSL 证书文件路径 |
UVICORN_SSL_KEYFILE | SSL 密钥文件路径 |
XRAY_JSON | Xray 的 json 配置文件路径(默认: xray_config.json ) |
XRAY_EXECUTABLE_PATH | Xray 的执行程序路径: /usr/local/bin/xray ) |
XRAY_ASSETS_PATH | Xray 的资源目录: /usr/local/share/xray ) |
XRAY_SUBSCRIPTION_URL_PREFIX | 订阅URL的前缀 |
XRAY_FALLBACKS_INBOUND_TAG | 包含 fallbacks 的入站标记, 在您需要使用 fallbacks 配置此项 |
XRAY_EXCLUDE_INBOUND_TAGS | 不需要此应用程序管理或在链接中包含的入站标记 |
CLASH_SUBSCRIPTION_TEMPLATE | 将用于生成冲突配置的模板(默认值:clash/default.yml ) |
SUBSCRIPTION_PAGE_TEMPLATE | 用于生成订阅信息页面的模板(默认:subscription/index.html ) |
HOME_PAGE_TEMPLATE | 诱饵页面模板(默认:home/index.html ) |
TELEGRAM_API_TOKEN | Telegram bot API 令牌(可以从 @botfather 获取) |
TELEGRAM_ADMIN_ID | 管理员的 Telegram ID(可以使用 @userinfobot 查找您的 ID) |
TELEGRAM_PROXY_URL | 在代理下运行 Telegram bot。 |
JWT_ACCESS_TOKEN_EXPIRE_MINUTES | Access Tokens 的过期时间,以分钟为单位,0 表示无限期(默认为 1440 分钟) |
DOCS | API 文档是否应该在 /docs 和 /redoc 上提供(默认为 False |
DEBUG | Debug mode for development (default: False ) |
WEBHOOK_ADDRESS | Webhook address to send notifications to. Webhook notifications will be sent if this value was set. |
WEBHOOK_SECRET | Webhook secret will be sent with each request as x-webhook-secret in the header (default: None ) |
NUMBER_OF_RECURRENT_NOTIFICATIONS | How many times to retry if an error detected in sending a notification (default: 3 ) |
RECURRENT_NOTIFICATIONS_TIMEOUT | Timeout between each retry if an error detected in sending a notification in seconds (default: 180 ) |
NOTIFY_REACHED_USAGE_PERCENT | At which percentage of usage to send the warning notification (default: 80 ) |
NOTIFY_DAYS_LEFT | When to send warning notifaction about expiration (default: 3 ) |
USERS_AUTODELETE_DAYS | Delete expired (and optionally limited users) after this many days (Negative values disable this feature, default: -1 ) |
USER_AUTODELETE_INCLUDE_LIMITED_ACCOUNTS | Weather to include limited accounts in the auto-delete feature (default: False ) |
USE_CUSTOM_JSON_DEFAULT | Enable custom JSON config for ALL supported clients (default: False ) |
USE_CUSTOM_JSON_FOR_V2RAYNG | Enable custom JSON config only for V2rayNG (default: False ) |
USE_CUSTOM_JSON_FOR_STREISAND | Enable custom JSON config only for Streisand (default: False ) |
USE_CUSTOM_JSON_FOR_V2RAYN | Enable custom JSON config only for V2rayN (default: False ) |
Marzban 提供了 REST API,使开发人员能够以编程方式与 Marzban 服务进行交互。要在 Swagger UI 或 ReDoc 中查看 API 文档,设置配置变量 DOCS=True
,然后导航到 /docs
和 /redoc
。
定期备份 Marzban 文件是预防系统故障或意外删除导致数据丢失的好习惯。以下是备份 Marzban 的步骤:
- 默认情况下,所有重要的 Marzban 文件都保存在
/var/lib/marzban
( Docker 版本)中。将整个/var/lib/marzban
目录复制到您选择的备份位置,比如外部硬盘或云存储。 - 此外,请确保备份您的
env
文件,其中包含您的配置变量,以及您的Xray
配置文件。
按照这些步骤,您可以确保有备份所有 Marzban 文件和数据,以及您的配置变量和 Xray 配置,以备将来恢复使用。请记得定期更新备份,以保持它们的最新性。
Marzban 配备了一个集成的 Telegram bot,可以处理服务器管理、用户创建和删除,以及发送通知。通过几个简单的步骤,您可以轻松地启用这个机器人,并提供了一种方便的方式与 Marzban 交互,而不需要每次都登录到服务器上。
启用 Telegram bot:
- 将
TELEGRAM_API_TOKEN
设置为您的 bot API Token。 - 将
TELEGRAM_ADMIN_ID
设置为您的 Telegram ID,您可以从 @userinfobot 中获取自己的 ID。
如果您认为 Marzban 有用,并想支持其发展,可以在以下加密网络之一进行捐赠:
- TRON(TRX) 网络:
TX8kJoDcowQPBFTYHAJR36GyoUKP1Xwzkb
- ETH、BNB、MATIC 网络:
0xFdc9ad32454FA4fc4733270FCc12ddBFb68b83F7
- 比特币网络:
bc1qpys2nefgsjjgae3g3gqy9crsv3h3rm96tlkz0v
- Dogecoin 网络:
DJAocBAu8y6LwhDKUktLAyzV8xyoFeHH6R
- TON 网络:
EQAVf-7hAXHlF-jmrKE44oBwN7HGQFVBLAtrOsev5K4qR4P8
感谢您的支持!
制作于 [Unknown!] 并在 AGPL-3.0 下发布。
我们热爱贡献者!如果您想做出贡献,请查看我们的贡献指南并随时提交拉取请求或打开问题。我们也欢迎您加入我们的 Telegram 群组,以获得支持或贡献指导。
查看 issues 以帮助改进这个项目。
感谢所有为改善 Marzban 做出贡献的贡献者们:
Made with contrib.rocks