إنتقل إلى المحتوى الرئيسي

الترحيل من Marzban

يرشدك هذا الدليل خلال عملية ترحيل بياناتك من لوحة Marzban إلى لوحة Remnawave باستخدام أداة الترحيل الخاصة بـ 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 --version وwget --version للتأكد من نجاح التثبيت.

2. تنزيل أداة الترحيل

2.1. تنزيل أحدث إصدار

قم بتنزيل أداة ترحيل Remnawave المُجمّعة مسبقاً من صفحة الإصدارات على GitHub.

# 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 أو marzneshin)marzban
--panel-urlPANEL_URLرابط اللوحة المصدر (مثل https://marzban.example.com)-
--panel-usernamePANEL_USERNAMEاسم مستخدم مسؤول اللوحة المصدر-
--panel-passwordPANEL_PASSWORDكلمة مرور مسؤول اللوحة المصدر-
--remnawave-urlREMNAWAVE_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_HEADERSرؤوس إضافية لـ Remnawave (مثل X-Api-Key)-
--preserve-statusPRESERVE_STATUSالحفاظ على حالة المستخدم من اللوحة المصدرfalse
--preserve-subhashPRESERVE_SUBHASHالحفاظ على هاش رابط اشتراك المستخدم من اللوحة المصدرfalse
--internal-squadINTERNAL_SQUADUUID(s) للمجموعة/المجموعات الداخلية للتعيين (مفصولة بفاصلة)-
--external-squadEXTERNAL_SQUADUUID للمجموعة الخارجية لتعيينها لجميع المستخدمين المنشأين-
تلميح

إذا كنت تستخدم Remnawave مع أمان إضافي مقدَّم من Caddy، اتبع هذه الخطوات:

  1. سجّل الدخول إلى بوابة Auth وانتقل إلى API Keys
  2. أصدر مفتاح API جديداً
  3. مرّر هذا المفتاح باستخدام العَلَم --dest-headers بالصيغة التالية:
    --dest-headers="X-Api-Key:api-key-from-auth-portal"
تلميح
  • استخدم --last-users=5 لاختبار الترحيل مع مجموعة صغيرة من المستخدمين.
  • احصل على رمز API الخاص بـ Remnawave من إعدادات لوحة 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)
    • هاشات روابط الاشتراك (إذا تم استخدام --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_URLرابط لوحة Remnawave، يمكن أن يكون http://remnawave:3000 أو https://panel.example.comhttp://remnawave:3000
APP_PORTالمنفذ الذي تعمل عليه خدمة صفحة الاشتراك.3010
MARZBAN_LEGACY_LINK_ENABLEDيتيح دعم روابط اشتراك Marzban القديمة. يجب أن تكون true لاستخدام الخيارات أدناه.true
MARZBAN_LEGACY_SECRET_KEYالمفتاح السري من قاعدة بيانات Marzban، مطلوب لفك تشفير الروابط القديمة.secret
REMNAWAVE_API_TOKENرمز API المُنشأ من لوحة تحكم Remnawave (في قسم "API Tokens").token
CUSTOM_SUB_PREFIXبادئة مخصصة لروابط الاشتراك لتتطابق مع إعداد Marzban الخاص بك (مثل sub).sub
تلميح
  • إذا تم تعيين MARZBAN_LEGACY_LINK_ENABLED إلى true، يجب توفير جميع المتغيرات التالية (MARZBAN_LEGACY_SECRET_KEY، REMNAWAVE_API_TOKEN، وCUSTOM_SUB_PREFIX).
  • لاسترداد MARZBAN_LEGACY_SECRET_KEY، استعلم عن قاعدة بيانات Marzban باستخدام:
    SELECT secret_key FROM jwt LIMIT 1;
    على سبيل المثال، إذا كانت قاعدة بيانات Marzban في حاوية Docker باسم marzban-mysql، تواصل معها باستخدام:
    docker exec -it marzban-mysql mysql -uroot -pPassword
    استبدل marzban-mysql وPassword باسم حاويتك الفعلي وكلمة مرور root.
  • أنشئ REMNAWAVE_API_TOKEN من لوحة تحكم Remnawave تحت قسم "API Tokens".

5.3. التحقق من دعم الروابط القديمة

بعد نشر التهيئة المحدَّثة:

  1. أعد تشغيل خدمة remnawave-subscription-page:
    docker compose up -d --force-recreate
  2. اختبر رابط اشتراك Marzban قديماً للتأكد من حله بشكل صحيح وعرض بيانات المستخدم على صفحة اشتراك Remnawave.