Migrer depuis Marzban
Ce guide vous accompagne étape par étape dans la migration de vos données depuis un panel Marzban vers un panel Remnawave en utilisant l'outil de migration Remnawave.
1. Préparation du serveur
1.1. Installation des dépendances requises
Assurez-vous que votre serveur dispose des outils nécessaires en mettant à jour les paquets système et en installant Git et wget.
# Mettre à jour les paquets système
sudo apt-get update
# Installer Git et wget
sudo apt-get install -y git wget
Exécutez git --version et wget --version pour confirmer l'installation réussie.
2. Téléchargement de l'outil de migration
2.1. Téléchargement de la dernière version
Téléchargez l'outil de migration Remnawave précompilé depuis la page des versions GitHub.
# Créer et naviguer vers un répertoire de travail
mkdir -p /opt/remnawave && cd /opt/remnawave
# Télécharger la dernière version (v2.1.0 au moment de ce guide)
wget https://github.com/remnawave/migrate/releases/download/v2.1.0/remnawave-migrate-v2.1.0-linux-amd64.tar.gz
2.2. Extraction de l'outil
Décompressez l'archive téléchargée pour accéder au binaire.
# Extraire l'archive tar
tar -xf remnawave-migrate-v2.1.0-linux-amd64.tar.gz
Après l'extraction, vous devriez voir le binaire remnawave-migrate dans votre répertoire. Utilisez ls -l pour vérifier.
3. Configuration
3.1. Configuration des paramètres de migration
L'outil de migration utilise des flags de ligne de commande pour la configuration. Voici un exemple de commande avec tous les paramètres requis. Remplacez les valeurs de substitution par les détails réels de votre serveur.
./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. Options de configuration
L'outil prend en charge les flags suivants et leurs variables d'environnement correspondantes :
| Flag | Variable d'environnement | Description | Défaut |
|---|---|---|---|
--panel-type | PANEL_TYPE | Type de panel source (marzban ou marzneshin) | marzban |
--panel-url | PANEL_URL | URL du panel source (ex., https://marzban.example.com) | - |
--panel-username | PANEL_USERNAME | Nom d'utilisateur administrateur du panel source | - |
--panel-password | PANEL_PASSWORD | Mot de passe administrateur du panel source | - |
--remnawave-url | REMNAWAVE_URL | URL du panel de destination (ex., https://remnawave.example.com) | - |
--remnawave-token | REMNAWAVE_TOKEN | Token API du panel de destination (utilisé comme Authorization Bearer) | - |
--batch-size | BATCH_SIZE | Nombre d'utilisateurs à traiter par lot | 100 |
--last-users | LAST_USERS | Migrer uniquement les N derniers utilisateurs (0 = tous) | 0 |
--preferred-strategy | PREFERRED_STRATEGY | Stratégie de réinitialisation du trafic (NO_RESET, DAY, WEEK, MONTH) | - |
--source-headers | SOURCE_HEADERS | En-têtes supplémentaires pour le panel source | - |
--dest-headers | DEST_HEADERS | En-têtes supplémentaires pour Remnawave (ex., X-Api-Key) | - |
--preserve-status | PRESERVE_STATUS | Conserver le statut de l'utilisateur du panel source | false |
--preserve-subhash | PRESERVE_SUBHASH | Conserver le hash d'URL d'abonnement de l'utilisateur du panel source | false |
--internal-squad | INTERNAL_SQUAD | UUID(s) de l'escouade(s) interne(s) à assigner (séparés par virgule) | - |
--external-squad | EXTERNAL_SQUAD | UUID de l'escouade externe à assigner à tous les utilisateurs créés | - |
Si vous utilisez Remnawave avec une sécurité supplémentaire fournie par Caddy, vous devez suivre ces étapes :
- Connectez-vous au Portail Auth et naviguez vers Clés API
- Émettez une nouvelle clé API
- Passez cette clé en utilisant le flag --dest-headers dans le format suivant :
--dest-headers="X-Api-Key:api-key-from-auth-portal"
- Utilisez
--last-users=5pour une migration de test avec un petit sous-ensemble d'utilisateurs. - Obtenez votre token API Remnawave depuis les paramètres du panel Remnawave (ex., sous API ou Intégrations).
- Si
--preferred-strategyn'est pas spécifié, la stratégie originale de Marzban sera utilisée. La stratégieYEARest convertie enNO_RESET.
3.3. Attribution des utilisateurs aux escouades
Vous pouvez automatiquement attribuer tous les utilisateurs migrés à des escouades internes et/ou externes :
# Attribuer à une seule escouade interne
./remnawave-migrate \
[autres flags...] \
--internal-squad=e5201a6a-c50e-4b58-9ecb-a4c26c5e74c8
# Attribuer à plusieurs escouades internes
./remnawave-migrate \
[autres flags...] \
--internal-squad=uuid1,uuid2,uuid3
# Attribuer à une escouade externe
./remnawave-migrate \
[autres flags...] \
--external-squad=f6302b7b-d61f-5c69-0fdc-b5d37d6e85d9
# Attribuer à des escouades internes et externes
./remnawave-migrate \
[autres flags...] \
--internal-squad=uuid1,uuid2 \
--external-squad=uuid3
4. Vérification post-migration
4.1. Que vérifier
Après la migration, vérifiez les points suivants sur le panel Remnawave :
- Nombre d'utilisateurs : Assurez-vous que le nombre d'utilisateurs migrés correspond à la source.
- Intégrité des données :
- Noms d'utilisateur
- Mots de passe (Trojan, UUID VLESS, Shadowsocks)
- Limites de trafic et stratégies de réinitialisation
- Dates d'expiration
- Statuts des utilisateurs (si
--preserve-statusa été utilisé) - Hashes d'URL d'abonnement (si
--preserve-subhasha été utilisé) - Attributions d'escouade (si
--internal-squadou--external-squada été utilisé)
Connectez-vous au panel Remnawave et vérifiez quelques utilisateurs au hasard pour confirmer l'exactitude des données.
5. Support des pages d'abonnement héritées
Après la migration vers Remnawave, la seule façon de garantir le support et le rendu des pages d'abonnement héritées de Marzban est d'utiliser le dépôt sur https://github.com/remnawave/subscription-page/.
5.1. Configuration Docker Compose par défaut
Par défaut, le fichier docker-compose.yml pour le service de page d'abonnement ressemble à ceci :
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. Ajustement pour la compatibilité avec Marzban
Lors de la migration, vous devez assurer la compatibilité avec les chemins d'abonnement Marzban et activer le déchiffrement des liens d'abonnement Marzban. Remplacez la section environment dans la configuration par défaut par ce qui suit :
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
Options de configuration expliquées
| Variable | Description | Valeur exemple |
|---|---|---|
REMNAWAVE_PANEL_URL | URL du panel Remnawave, peut être http://remnawave:3000 ou https://panel.example.com | http://remnawave:3000 |
APP_PORT | Le port sur lequel le service de page d'abonnement s'exécute. | 3010 |
MARZBAN_LEGACY_LINK_ENABLED | Active le support pour les liens d'abonnement Marzban hérités. Doit être true pour utiliser les options ci-dessous. | true |
MARZBAN_LEGACY_SECRET_KEY | La clé secrète de votre base de données Marzban, requise pour déchiffrer les liens hérités. | secret |
REMNAWAVE_API_TOKEN | Le token API généré depuis le tableau de bord Remnawave (sous "API Tokens"). | token |
CUSTOM_SUB_PREFIX | Un préfixe personnalisé pour les URL d'abonnement pour correspondre à votre configuration Marzban (ex., sub). | sub |
- Si
MARZBAN_LEGACY_LINK_ENABLEDest défini surtrue, toutes les variables suivantes (MARZBAN_LEGACY_SECRET_KEY,REMNAWAVE_API_TOKENetCUSTOM_SUB_PREFIX) doivent être fournies. - Pour récupérer le
MARZBAN_LEGACY_SECRET_KEY, interrogez votre base de données Marzban avec :Par exemple, si votre base de données Marzban est dans un conteneur Docker nomméSELECT secret_key FROM jwt LIMIT 1;marzban-mysql, connectez-vous en utilisant :Remplacezdocker exec -it marzban-mysql mysql -uroot -pPasswordmarzban-mysqletPasswordpar le nom réel de votre conteneur et le mot de passe root. - Générez le
REMNAWAVE_API_TOKENdepuis le tableau de bord Remnawave sous la section "API Tokens".
5.3. Vérification du support hérité
Après le déploiement de la configuration mise à jour :
- Redémarrez le service
remnawave-subscription-page:docker compose up -d --force-recreate - Testez un ancien lien d'abonnement Marzban pour vous assurer qu'il se résout correctement et affiche les données de l'utilisateur sur la page d'abonnement Remnawave.