Aller au contenu principal

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
astuce

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
astuce

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 :

FlagVariable d'environnementDescriptionDéfaut
--panel-typePANEL_TYPEType de panel source (marzban ou marzneshin)marzban
--panel-urlPANEL_URLURL du panel source (ex., https://marzban.example.com)-
--panel-usernamePANEL_USERNAMENom d'utilisateur administrateur du panel source-
--panel-passwordPANEL_PASSWORDMot de passe administrateur du panel source-
--remnawave-urlREMNAWAVE_URLURL du panel de destination (ex., https://remnawave.example.com)-
--remnawave-tokenREMNAWAVE_TOKENToken API du panel de destination (utilisé comme Authorization Bearer)-
--batch-sizeBATCH_SIZENombre d'utilisateurs à traiter par lot100
--last-usersLAST_USERSMigrer uniquement les N derniers utilisateurs (0 = tous)0
--preferred-strategyPREFERRED_STRATEGYStratégie de réinitialisation du trafic (NO_RESET, DAY, WEEK, MONTH)-
--source-headersSOURCE_HEADERSEn-têtes supplémentaires pour le panel source-
--dest-headersDEST_HEADERSEn-têtes supplémentaires pour Remnawave (ex., X-Api-Key)-
--preserve-statusPRESERVE_STATUSConserver le statut de l'utilisateur du panel sourcefalse
--preserve-subhashPRESERVE_SUBHASHConserver le hash d'URL d'abonnement de l'utilisateur du panel sourcefalse
--internal-squadINTERNAL_SQUADUUID(s) de l'escouade(s) interne(s) à assigner (séparés par virgule)-
--external-squadEXTERNAL_SQUADUUID de l'escouade externe à assigner à tous les utilisateurs créés-
astuce

Si vous utilisez Remnawave avec une sécurité supplémentaire fournie par Caddy, vous devez suivre ces étapes :

  1. Connectez-vous au Portail Auth et naviguez vers Clés API
  2. Émettez une nouvelle clé API
  3. Passez cette clé en utilisant le flag --dest-headers dans le format suivant :
    --dest-headers="X-Api-Key:api-key-from-auth-portal"
astuce
  • Utilisez --last-users=5 pour 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-strategy n'est pas spécifié, la stratégie originale de Marzban sera utilisée. La stratégie YEAR est convertie en NO_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 :

  1. Nombre d'utilisateurs : Assurez-vous que le nombre d'utilisateurs migrés correspond à la source.
  2. 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-status a été utilisé)
    • Hashes d'URL d'abonnement (si --preserve-subhash a été utilisé)
    • Attributions d'escouade (si --internal-squad ou --external-squad a été utilisé)
astuce

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

VariableDescriptionValeur exemple
REMNAWAVE_PANEL_URLURL du panel Remnawave, peut être http://remnawave:3000 ou https://panel.example.comhttp://remnawave:3000
APP_PORTLe port sur lequel le service de page d'abonnement s'exécute.3010
MARZBAN_LEGACY_LINK_ENABLEDActive le support pour les liens d'abonnement Marzban hérités. Doit être true pour utiliser les options ci-dessous.true
MARZBAN_LEGACY_SECRET_KEYLa clé secrète de votre base de données Marzban, requise pour déchiffrer les liens hérités.secret
REMNAWAVE_API_TOKENLe token API généré depuis le tableau de bord Remnawave (sous "API Tokens").token
CUSTOM_SUB_PREFIXUn préfixe personnalisé pour les URL d'abonnement pour correspondre à votre configuration Marzban (ex., sub).sub
astuce
  • Si MARZBAN_LEGACY_LINK_ENABLED est défini sur true, toutes les variables suivantes (MARZBAN_LEGACY_SECRET_KEY, REMNAWAVE_API_TOKEN et CUSTOM_SUB_PREFIX) doivent être fournies.
  • Pour récupérer le MARZBAN_LEGACY_SECRET_KEY, interrogez votre base de données Marzban avec :
    SELECT secret_key FROM jwt LIMIT 1;
    Par exemple, si votre base de données Marzban est dans un conteneur Docker nommé marzban-mysql, connectez-vous en utilisant :
    docker exec -it marzban-mysql mysql -uroot -pPassword
    Remplacez marzban-mysql et Password par le nom réel de votre conteneur et le mot de passe root.
  • Générez le REMNAWAVE_API_TOKEN depuis 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 :

  1. Redémarrez le service remnawave-subscription-page :
    docker compose up -d --force-recreate
  2. 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.