由 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 | SSL 金鑰檔案可在 https 上套用 |
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 製作