由 Xray 提供支持的统一 GUI 抗审查解决方案
英语 / فרсе / 简体中文 / Русский
Marzban(波斯语中“边境守卫”的意思 - 发音为 /mærz'ban/)是一个代理管理工具,它提供了一个简单易用的用户界面,用于管理数百个由 Xray-core 提供支持并使用 Python 构建的代理帐户和 Reactjs。
Marzban 用户友好、功能丰富且可靠。它允许您为用户创建不同的代理,而无需任何复杂的配置。使用其内置的 Web UI,您可以监控、修改和限制用户。
运行以下命令
sudo bash -c " $( curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh ) " @ install
安装完成后:
Ctrl+C
来停止查看它们/opt/marzban
/opt/marzban/.env
中找到(请参阅配置部分以查看变量)/var/lib/marzban
http://YOUR_SERVER_IP:8000/dashboard/
(将 YOUR_SERVER_IP 替换为服务器的实际 IP 地址)来访问 Marzban 仪表板接下来,您需要创建一个 sudo admin 用于通过以下命令登录 Marzban 仪表板
marzban cli admin create --sudo
就是这样!您可以使用这些凭据登录仪表板
要查看 Marzban 脚本的帮助消息,请运行以下命令
marzban --help
如果您渴望使用源代码运行项目,请检查下面的部分
在您的机器上安装 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
如果您想使用marzban-cli
,您应该将其链接到$PATH
中的文件,使其可执行,并安装自动完成功能:
sudo ln -s $( pwd ) /marzban-cli.py /usr/bin/marzban-cli
sudo chmod +x /usr/bin/marzban-cli
marzban-cli completion install
现在是配置的时候了
复制.env.example
文件,查看并使用nano
等文本编辑器对其进行编辑。
您可能想修改管理员凭据。
cp .env.example .env
nano .env
检查配置部分以获取更多信息
最后,使用下面的命令启动应用程序
python3 main.py
使用 linux systemctl 启动(将 marzban.service 文件复制到/var/lib/marzban/marzban.service
)
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
#
# All traffic is proxed through port 443, and send to the xray port(2087, 2088 etc.).
# The '/marzban' in location regex path can changed any characters by yourself.
#
# /${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
文件中设置以下设置。
多变的 | 描述 |
---|---|
SUDO_用户名 | 超级用户的用户名 |
SUDO_密码 | 超级用户的密码 |
SQLALCHEMY_DATABASE_URL | 数据库 URL(SQLAlchemy 的文档) |
UVICORN_HOST | 将应用程序绑定到该主机(默认: 0.0.0.0 ) |
UVICORN_PORT | 将应用程序绑定到此端口(默认: 8000 ) |
UVICORN_UDS | 将应用程序绑定到 UNIX 域套接字 |
UVICORN_SSL_CERTFILE | SSL证书文件可在https上申请 |
UVICORN_SSL_KEYFILE | 用于在 https 上应用的 SSL 密钥文件 |
XRAY_JSON | Xray 的 json 配置文件的路径(默认: xray_config.json ) |
XRAY_EXECUTABLE_PATH | Xray 二进制文件的路径(默认: /usr/local/bin/xray ) |
XRAY_资产_路径 | Xray 资产的路径(默认: /usr/local/share/xray ) |
XRAY_SUBSCRIPTION_URL_PREFIX | 订阅 URL 的前缀 |
XRAY_FALLBACKS_INBOUND_TAG | 包含后备的入站标签,在您使用后备的情况下需要 |
XRAY_EXCLUDE_INBOUND_TAGS | 不应由应用程序管理和包含在链接中的入站标签 |
CUSTOM_TEMPLATES_DIRECTORY | 自定义模板目录(默认: app/templates ) |
CLASH_SUBSCRIPTION_TEMPLATE | 将用于生成冲突配置的模板(默认: clash/default.yml ) |
SUBSCRIPTION_PAGE_TEMPLATE | 用于生成订阅信息页面的模板(默认: subscription/index.html ) |
HOME_PAGE_TEMPLATE | 诱饵页面模板(默认: home/index.html ) |
TELEGRAM_API_TOKEN | Telegram 机器人 API 令牌(从 @botfather 获取令牌) |
TELEGRAM_ADMIN_ID | 管理员的数字电报 ID(使用 @userinfobot 找到您的 ID) |
TELEGRAM_PROXY_URL | 通过代理运行 Telegram Bot |
JWT_ACCESS_TOKEN_EXPIRE_MINUTES | 访问令牌的过期时间(以分钟为单位), 0 被视为无限(默认值: 1440 ) |
文档管理系统 | API 文档是否应在/docs 和/redoc 上可用(默认值: False ) |
调试 | 开发的调试模式(默认值: False ) |
WEBHOOK_ADDRESS | 用于发送通知的 Webhook 地址。如果设置了此值,将发送 Webhook 通知。 |
WEBHOOK_SECRET | Webhook 密钥将随每个请求作为标头中的x-webhook-secret 一起发送(默认值: None ) |
NUMBER_OF_RECURRENT_NOTIFICATIONS | 如果发送通知时检测到错误,重试次数(默认值: 3 ) |
RECURRENT_NOTIFICATIONS_TIMEOUT | 如果在发送通知时检测到错误,则每次重试之间的超时时间(默认值: 180 ) |
NOTIFY_REACHED_USAGE_PERCENT | 在使用百分比达到多少时发送警告通知(默认值: 80 ) |
NOTIFY_DAYS_LEFT | 何时发送有关过期的警告通知(默认值: 3 ) |
USERS_AUTODELETE_DAYS | 在这么多天后删除过期的(以及可选的受限用户)(负值禁用此功能,默认值: -1 ) |
USER_AUTODELETE_INCLUDE_LIMITED_ACCOUNTS 个 | 在自动删除功能中包含有限帐户的天气(默认值: False ) |
USE_CUSTOM_JSON_DEFAULT | 为所有支持的客户端启用自定义 JSON 配置(默认值: False ) |
USE_CUSTOM_JSON_FOR_V2RAYNG | 仅对 V2rayNG 启用自定义 JSON 配置(默认值: False ) |
USE_CUSTOM_JSON_FOR_STREISAND | 仅为 Streisand 启用自定义 JSON 配置(默认值: False ) |
USE_CUSTOM_JSON_FOR_V2RAYN | 仅对 V2rayN 启用自定义 JSON 配置(默认值: False ) |
Marzban 提供了 REST API,使开发人员能够以编程方式与 Marzban 服务进行交互。要在 Swagger UI 或 ReDoc 中查看 API 文档,请设置配置变量DOCS=True
并导航到/docs
和/redoc
。
定期备份 Marzban 文件始终是一个好主意,以防止系统故障或意外删除时丢失数据。以下是备份 Marzban 的步骤:
/var/lib/marzban
(Docker 版本)中。将整个/var/lib/marzban
目录复制到您选择的备份位置,例如外部硬盘驱动器或云存储。/opt/marzban/
目录内。通过执行这些步骤,您可以确保拥有所有 Marzban 文件和数据以及配置变量和 Xray 配置的备份,以便将来需要恢复它们。请记住定期更新您的备份以使其保持最新状态。
Marzban 配备了一个集成的 Telegram 机器人,可以处理服务器管理、用户创建和删除以及发送通知。通过几个简单的步骤即可轻松启用该机器人,并且它提供了一种与 Marzban 交互的便捷方式,而无需每次都登录服务器。
要启用 Telegram 机器人:
TELEGRAM_API_TOKEN
设置为您的机器人的 API 令牌TELEGRAM_ADMIN_ID
设置为您的 Telegram 帐户的数字 ID,您可以从 @userinfobot 获取您的 ID Marzban 附带一个名为marzban-cli
集成 CLI,允许管理员与其直接交互。
如果您使用简易安装脚本安装了 Marzban,则可以通过运行来访问 cli 命令
marzban cli [OPTIONS] COMMAND [ARGS]...
有关更多信息,您可以阅读 Marzban CLI 的文档。
Marzban 项目引入了 Marzban 节点,彻底改变了基础设施分布。借助 Marzban-node,您可以将基础架构分布在多个位置,从而释放冗余、高可用性、可扩展性、灵活性等优势。 Marzban-node 使用户能够连接到不同的服务器,使他们能够灵活地选择和连接到多个服务器,而不是仅限于一台服务器。更详细的信息和安装说明请参考Marzban-node官方文档
您可以设置一个 webhook 地址,Marzban 会将通知发送到该地址。
请求将作为 post 请求发送到WEBHOOK_ADDRESS
提供的地址,并在标头中将WEBHOOK_SECRET
作为x-webhook-secret
。
从 Marzban 发送的请求示例:
Headers:
Host: 0.0.0.0:9000
User-Agent: python-requests/2.28.1
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
x-webhook-secret: something-very-very-secret
Content-Length: 107
Content-Type: application/json
Body:
{"username": "marzban_test_user", "action": "user_updated", "enqueued_at": 1680506457.636369, "tries": 0}
不同的操作类型有: user_created
、 user_updated
、 user_deleted
、 user_limited
、 user_expired
、 user_disabled
、 user_enabled
如果您发现 Marzban 有用并愿意支持其开发,您可以在以下加密网络之一中进行捐赠:
TX8kJoDcowQPBFTYHAJR36GyoUKP1Xwzkb
0xFdc9ad32454FA4fc4733270FCc12ddBFb68b83F7
bc1qpys2nefgsjjgae3g3gqy9crsv3h3rm96tlkz0v
DJAocBAu8y6LwhDKUktLAyzV8xyoFeHH6R
EQAVf-7hAXHlF-jmrKE44oBwN7HGQFVBLAtrOsev5K4qR4P8
感谢您的支持!
制作于[未知!]并在 AGPL-3.0 下发布。
我们❤️贡献者!如果您想做出贡献,请查看我们的贡献指南,并随时提交拉取请求或提出问题。我们也欢迎您加入我们的 Telegram 群组以获得支持或贡献指导。
检查未解决的问题以帮助该项目的进展。
感谢所有帮助改进 Marzban 的贡献者:
用 contrib.rocks 制作