跳至主要内容

從 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來源面板類型(marzbanmarzneshinmarzban
--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 Portal 並導覽至 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:3000https://panel.example.comhttp://remnawave:3000
APP_PORT訂閱頁面服務執行的連接埠。3010
MARZBAN_LEGACY_LINK_ENABLED啟用對舊版 Marzban 訂閱連結的支援。必須設定為 true 才能使用以下選項。true
MARZBAN_LEGACY_SECRET_KEY來自 Marzban 資料庫的密鑰,用於解密舊版連結所必需。secret
REMNAWAVE_API_TOKEN從 Remnawave 面板儀表板("API Tokens" 下)產生的 API 令牌。token
CUSTOM_SUB_PREFIX訂閱 URL 的自訂前綴,以符合您的 Marzban 設定(例如 sub)。sub
提示
  • 如果 MARZBAN_LEGACY_LINK_ENABLED 設定為 true,則必須提供所有後續變數(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 訂閱頁面上顯示使用者資料。