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/
に移動すると、Marzban ダッシュボードにアクセスできます (YOUR_SERVER_IP をサーバーの実際の IP アドレスに置き換えます)。次に、次のコマンドで Marzban ダッシュボードにログインするための sudo 管理者を作成する必要があります。
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_USERNAME | スーパーユーザーのユーザー名 |
SUDO_パスワード | スーパーユーザーのパスワード |
SQLALCHEMY_DATABASE_URL | データベース URL (SQLAlchemy のドキュメント) |
UVICORN_HOST | アプリケーションをこのホストにバインドします (デフォルト: 0.0.0.0 ) |
UVICORN_PORT | アプリケーションをこのポートにバインドします (デフォルト: 8000 ) |
UVICORN_UDS | アプリケーションをUNIXドメインソケットにバインドする |
UVICORN_SSL_CERTFILE | httpsでアプリケーションを使用するためのSSL証明書ファイル |
UVICORN_SSL_KEYFILE | https でアプリケーションを使用するための 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 | フォールバックを含む受信のタグ。フォールバックを使用している場合に必要です。 |
XRAY_EXCLUDE_INBOUND_TAGS | アプリケーションごとに管理およびリンクに含めるべきではない受信のタグ |
CUSTOM_TEMPLATES_DIRECTORY | カスタマイズされたテンプレート ディレクトリ (デフォルト: app/templates ) |
CLASH_SUBSCRIPTION_TEMPLATE | クラッシュ構成の生成に使用されるテンプレート (デフォルト: clash/default.yml ) |
サブスクリプション_ページ_テンプレート | サブスクリプション情報ページの生成に使用されるテンプレート (デフォルト: subscription/index.html ) |
HOME_PAGE_TEMPLATE | おとりページテンプレート (デフォルト: home/index.html ) |
TELEGRAM_API_TOKEN | Telegram bot API トークン (@botfather からトークンを取得) |
TELEGRAM_ADMIN_ID | 管理者の数値 Telegram ID (ID を見つけるには @userinfobot を使用します) |
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 は、開発者がプログラムで Marzban サービスと対話できるようにする REST API を提供します。 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 Bot を有効にするには:
TELEGRAM_API_TOKEN
ボットの API トークンに設定しますTELEGRAM_ADMIN_ID
Telegram アカウントの数値 ID に設定します。ID は @userinfobot から取得できます。 Marzban には、管理者がmarzban-cli
と直接対話できる統合 CLI が付属しています。
簡単インストール スクリプトを使用して Marzban をインストールした場合は、次のコマンドを実行して cli コマンドにアクセスできます。
marzban cli [OPTIONS] COMMAND [ARGS]...
詳細については、Marzban CLI のドキュメントを参照してください。
Marzban プロジェクトは、インフラストラクチャの配布に革命をもたらす Marzban ノードを導入します。 Marzban ノードを使用すると、インフラストラクチャを複数の場所に分散し、冗長性、高可用性、拡張性、柔軟性などの利点を活用できます。 Marzban-node を使用すると、ユーザーはさまざまなサーバーに接続できるようになり、1 つのサーバーに限定されるのではなく、複数のサーバーを選択して接続できる柔軟性が得られます。詳細情報とインストール手順については、Marzban-node の公式ドキュメントを参照してください。
Webhook アドレスを設定すると、Marzban がそのアドレスに通知を送信します。
リクエストは、ヘッダーのx-webhook-secret
としてWEBHOOK_SECRET
を使用してWEBHOOK_ADDRESS
によって指定されたアドレスにポスト リクエストとして送信されます。
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
ご支援ありがとうございます!
[Unknown!] で作成され、AGPL-3.0 に基づいて公開されています。
私たち❤️の貢献者です!貢献したい場合は、貢献ガイドラインを確認し、お気軽にプルリクエストを送信するか、問題をオープンしてください。また、サポートやガイダンスへの貢献のために、Telegram グループに参加していただくことも歓迎します。
このプロジェクトの進行に役立つ未解決の問題を確認してください。
Marzban の改善に協力してくれたすべての貢献者に感謝します。
contrib.rocks で作られています