メインコンテンツまでスキップ

Marzban からの移行

このガイドでは、Remnawave 移行ツールを使用して Marzban パネルから Remnawave パネルへデータを移行する手順を説明します。

1. サーバーの準備

1.1. 必要な依存関係のインストール

システムパッケージを更新し、Git と wget をインストールして、サーバーに必要なツールが揃っていることを確認してください。

# Update system packages
sudo apt-get update

# Install Git and wget
sudo apt-get install -y git wget
ヒント

git --versionwget --version を実行して、インストールが成功したことを確認してください。

2. 移行ツールのダウンロード

2.1. 最新リリースのダウンロード

GitHub リリースページからプリコンパイル済みの Remnawave 移行ツールをダウンロードします。

# Create and navigate to a working directory
mkdir -p /opt/remnawave && cd /opt/remnawave

# Download the latest version (v2.1.0 as of this guide)
wget https://github.com/remnawave/migrate/releases/download/v2.1.0/remnawave-migrate-v2.1.0-linux-amd64.tar.gz

2.2. ツールの展開

ダウンロードしたアーカイブを解凍してバイナリにアクセスします。

# Extract the tarball
tar -xf remnawave-migrate-v2.1.0-linux-amd64.tar.gz
ヒント

展開後、ディレクトリに remnawave-migrate バイナリが見えるはずです。ls -l で確認してください。

3. 設定のセットアップ

3.1. 移行パラメーターの設定

移行ツールは設定にコマンドラインフラグを使用します。以下は必要なすべてのパラメーターを含むサンプルコマンドです。プレースホルダーの値を実際のサーバー詳細に置き換えてください。

./remnawave-migrate \
--panel-type=marzban \
--panel-url=https://your-marzban-server \
--panel-username=admin \
--panel-password=your-admin-password \
--remnawave-url=https://your-remnawave-server \
--remnawave-token=your-remnawave-token \
--preserve-status

3.2. 設定オプション

ツールは以下のフラグと対応する環境変数をサポートしています:

フラグ環境変数説明デフォルト
--panel-typePANEL_TYPEソースパネルタイプ(marzban または marzneshinmarzban
--panel-urlPANEL_URLソースパネル URL(例: https://marzban.example.com-
--panel-usernamePANEL_USERNAMEソースパネルの管理者ユーザー名-
--panel-passwordPANEL_PASSWORDソースパネルの管理者パスワード-
--remnawave-urlREMNAWAVE_URL宛先パネル URL(例: https://remnawave.example.com-
--remnawave-tokenREMNAWAVE_TOKEN宛先パネルの API トークン(Authorization Bearer として使用)-
--batch-sizeBATCH_SIZEバッチごとに処理するユーザー数100
--last-usersLAST_USERS最後の N ユーザーのみを移行(0 = 全ユーザー)0
--preferred-strategyPREFERRED_STRATEGYトラフィックリセット戦略(NO_RESET, DAY, WEEK, MONTH-
--source-headersSOURCE_HEADERSソースパネル用の追加ヘッダー-
--dest-headersDEST_HEADERSRemnawave 用の追加ヘッダー(例: X-Api-Key)-
--preserve-statusPRESERVE_STATUSソースパネルからのユーザーステータスを保持false
--preserve-subhashPRESERVE_SUBHASHソースパネルからのユーザーサブスクリプション URL ハッシュを保持false
--internal-squadINTERNAL_SQUAD割り当てる内部グループの UUID(カンマ区切り)-
--external-squadEXTERNAL_SQUAD作成されたすべてのユーザーに割り当てる外部グループの UUID-
ヒント

Caddy による追加セキュリティを使用した Remnawave を使用している場合は、以下の手順に従ってください:

  1. Auth ポータルにログインし、API Keys に移動します
  2. 新しい API キーを発行します
  3. 以下の形式で --dest-headers フラグを使用してこのキーを渡します:
    --dest-headers="X-Api-Key:api-key-from-auth-portal"
ヒント
  • 少数のユーザーでテスト移行を行うには --last-users=5 を使用してください。
  • Remnawave の API トークンは Remnawave パネルの設定(例: API または統合の下)から取得してください。
  • --preferred-strategy が指定されていない場合、Marzban のオリジナル戦略が使用されます。YEAR 戦略は NO_RESET に変換されます。

3.3. ユーザーをグループに割り当て

移行されたすべてのユーザーを内部および/または外部グループに自動的に割り当てることができます:

# Assign to a single internal squad
./remnawave-migrate \
[other flags...] \
--internal-squad=e5201a6a-c50e-4b58-9ecb-a4c26c5e74c8

# Assign to multiple internal squads
./remnawave-migrate \
[other flags...] \
--internal-squad=uuid1,uuid2,uuid3

# Assign to an external squad
./remnawave-migrate \
[other flags...] \
--external-squad=f6302b7b-d61f-5c69-0fdc-b5d37d6e85d9

# Assign to both internal and external squads
./remnawave-migrate \
[other flags...] \
--internal-squad=uuid1,uuid2 \
--external-squad=uuid3

4. 移行後の確認

4.1. 確認すべき項目

移行後、Remnawave パネルで以下を確認してください:

  1. ユーザー数: 移行されたユーザー数がソースと一致していることを確認します。
  2. データの整合性:
    • ユーザー名
    • パスワード(Trojan、VLESS UUID、Shadowsocks)
    • トラフィック制限とリセット戦略
    • 有効期限
    • ユーザーステータス(--preserve-status を使用した場合)
    • サブスクリプション URL ハッシュ(--preserve-subhash を使用した場合)
    • グループ割り当て(--internal-squad または --external-squad を使用した場合)
ヒント

Remnawave パネルにログインし、いくつかのユーザーをスポットチェックしてデータの正確性を確認してください。

5. レガシー Marzban サブスクリプションページのサポート

Remnawave への移行後、レガシー Marzban サブスクリプションページのサポートとレンダリングを確保する唯一の方法は、https://github.com/remnawave/subscription-page/ のリポジトリを使用することです。

5.1. デフォルトの Docker Compose 設定

デフォルトでは、サブスクリプションページサービスの docker-compose.yml ファイルは次のようになります:

services:
remnawave-subscription-page:
image: remnawave/subscription-page:latest
container_name: remnawave-subscription-page
hostname: remnawave-subscription-page
restart: always
environment:
- APP_PORT=3010
- REMNAWAVE_PANEL_URL=http://remnawave:3000
ports:
- '127.0.0.1:3010:3010'
networks:
- remnawave-network
networks:
remnawave-network:
driver: bridge
external: true

5.2. Marzban 互換性のための調整

移行中は、Marzban サブスクリプションパスとの互換性を確保し、Marzban サブスクリプションリンクの復号化を有効にする必要があります。デフォルト設定の environment セクションを以下に置き換えてください:

services:
remnawave-subscription-page:
image: remnawave/subscription-page:latest
container_name: remnawave-subscription-page
hostname: remnawave-subscription-page
restart: always
environment:
- APP_PORT=3010
- REMNAWAVE_PANEL_URL=http://remnawave:3000
- MARZBAN_LEGACY_LINK_ENABLED=true
- MARZBAN_LEGACY_SECRET_KEY=secret
- REMNAWAVE_API_TOKEN=token
- CUSTOM_SUB_PREFIX=sub
ports:
- '127.0.0.1:3010:3010'
networks:
- remnawave-network
networks:
remnawave-network:
driver: bridge
external: true

設定オプションの説明

変数説明値の例
REMNAWAVE_PANEL_URLRemnawave パネルの URL。http://remnawave:3000 または https://panel.example.com が使用可能http://remnawave:3000
APP_PORTサブスクリプションページサービスが実行されるポート。3010
MARZBAN_LEGACY_LINK_ENABLEDレガシー Marzban サブスクリプションリンクのサポートを有効にします。以下のオプションを使用するには true にする必要があります。true
MARZBAN_LEGACY_SECRET_KEYレガシーリンクの復号化に必要な Marzban データベースの秘密鍵。secret
REMNAWAVE_API_TOKENRemnawave パネルダッシュボード("API Tokens" の下)で生成された API トークン。token
CUSTOM_SUB_PREFIXMarzban セットアップに合わせたサブスクリプション URL のカスタムプレフィックス(例: sub)。sub
ヒント
  • MARZBAN_LEGACY_LINK_ENABLEDtrue に設定されている場合、後続のすべての変数(MARZBAN_LEGACY_SECRET_KEYREMNAWAVE_API_TOKENCUSTOM_SUB_PREFIX)を提供する必要があります。
  • MARZBAN_LEGACY_SECRET_KEY を取得するには、Marzban データベースに次のクエリを実行してください:
    SELECT secret_key FROM jwt LIMIT 1;
    たとえば、Marzban データベースが marzban-mysql という名前の Docker コンテナにある場合は、次を使用して接続します:
    docker exec -it marzban-mysql mysql -uroot -pPassword
    marzban-mysqlPassword を実際のコンテナ名と root パスワードに置き換えてください。
  • Remnawave ダッシュボードの "API Tokens" セクションで REMNAWAVE_API_TOKEN を生成してください。

5.3. レガシーサポートの確認

更新された設定をデプロイした後:

  1. remnawave-subscription-page サービスを再起動します:
    docker compose up -d --force-recreate
  2. 古い Marzban サブスクリプションリンクをテストして、正しく解決され Remnawave サブスクリプションページにユーザーデータが表示されることを確認してください。