الترحيل من 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-type | PANEL_TYPE | نوع اللوحة المصدر (marzban أو marzneshin) | marzban |
--panel-url | PANEL_URL | رابط اللوحة المصدر (مثل https://marzban.example.com) | - |
--panel-username | PANEL_USERNAME | اسم مستخدم مسؤول اللوحة المصدر | - |
--panel-password | PANEL_PASSWORD | كلمة مرور مسؤول اللوحة المصدر | - |
--remnawave-url | REMNAWAVE_URL | رابط اللوحة الوجهة (مثل https://remnawave.example.com) | - |
--remnawave-token | REMNAWAVE_TOKEN | رمز API للوحة الوجهة (يُستخدم كـ Authorization Bearer) | - |
--batch-size | BATCH_SIZE | عدد المستخدمين المعالَجين لكل دفعة | 100 |
--last-users | LAST_USERS | ترحيل آخر N مستخدم فقط (0 = جميع المستخدمين) | 0 |
--preferred-strategy | PREFERRED_STRATEGY | استراتيجية إعادة تعيين الحركة (NO_RESET, DAY, WEEK, MONTH) | - |
--source-headers | SOURCE_HEADERS | رؤوس إضافية للوحة المصدر | - |
--dest-headers | DEST_HEADERS | رؤوس إضافية لـ Remnawave (مثل X-Api-Key) | - |
--preserve-status | PRESERVE_STATUS | الحفاظ على حالة المستخدم من اللوحة المصدر | false |
--preserve-subhash | PRESERVE_SUBHASH | الحفاظ على هاش رابط اشتراك المستخدم من اللوحة المصدر | false |
--internal-squad | INTERNAL_SQUAD | UUID(s) للمجموعة/المجموعات الداخلية للتعيين (مفصولة بفاصلة) | - |
--external-squad | EXTERNAL_SQUAD | UUID للمجموعة الخارجية لتعيينها لجميع المستخدمين المنشأين | - |
إذا كنت تستخدم Remnawave مع أمان إضافي مقدَّم من Caddy، اتبع هذه الخطوات:
- سجّل الدخول إلى بوابة Auth وانتقل إلى API Keys
- أصدر مفتاح API جديداً
- مرّر هذا المفتاح باستخدام العَلَم --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:
- عدد المستخدمين: تأكد من أن عدد المستخدمين المُرحَّلين يتطابق مع المصدر.
- سلامة البيانات:
- أسماء المستخدمين
- كلمات المرور (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.com | http://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 باستخدام:على سبيل المثال، إذا كانت قاعدة بيانات Marzban في حاوية Docker باسمSELECT secret_key FROM jwt LIMIT 1;marzban-mysql، تواصل معها باستخدام:استبدلdocker exec -it marzban-mysql mysql -uroot -pPasswordmarzban-mysqlوPasswordباسم حاويتك الفعلي وكلمة مرور root. - أنشئ
REMNAWAVE_API_TOKENمن لوحة تحكم Remnawave تحت قسم "API Tokens".
5.3. التحقق من دعم الروابط القديمة
بعد نشر التهيئة المحدَّثة:
- أعد تشغيل خدمة
remnawave-subscription-page:docker compose up -d --force-recreate - اختبر رابط اشتراك Marzban قديماً للتأكد من حله بشكل صحيح وعرض بيانات المستخدم على صفحة اشتراك Remnawave.