Solution unifiée résistante à la censure de l'interface graphique optimisée par Xray
Anglais / فارسی / 简体中文 / Русский
Marzban (le mot persan pour « garde-frontière » - prononcé /mærz'ban/) est un outil de gestion de proxy qui fournit une interface utilisateur simple et facile à utiliser pour gérer des centaines de comptes proxy alimentés par Xray-core et construits à l'aide de Python. et Reactjs.
Marzban est convivial, riche en fonctionnalités et fiable. Il vous permet de créer différents proxys pour vos utilisateurs sans aucune configuration compliquée. Grâce à son interface utilisateur Web intégrée, vous pouvez surveiller, modifier et limiter les utilisateurs.
Exécutez la commande suivante
sudo bash -c " $( curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh ) " @ install
Une fois l'installation terminée :
Ctrl+C
/opt/marzban
/opt/marzban/.env
(reportez-vous à la section configurations pour voir les variables)/var/lib/marzban
http://YOUR_SERVER_IP:8000/dashboard/
(remplacez YOUR_SERVER_IP par l'adresse IP réelle de votre serveur)Ensuite, vous devez créer un administrateur sudo pour vous connecter au tableau de bord Marzban à l'aide de la commande suivante
marzban cli admin create --sudo
C'est ça! Vous pouvez vous connecter à votre tableau de bord en utilisant ces informations d'identification
Pour voir le message d'aide du script Marzban, exécutez la commande suivante
marzban --help
Si vous souhaitez exécuter le projet en utilisant le code source, consultez la section ci-dessous
Installez Xray sur votre machine
Vous pouvez l'installer en utilisant Xray-install
bash -c " $( curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh ) " @ install
Clonez ce projet et installez les dépendances (vous avez besoin de Python >= 3.8)
git clone https://github.com/Gozargah/Marzban.git
cd Marzban
wget -qO- https://bootstrap.pypa.io/get-pip.py | python3 -
python3 -m pip install -r requirements.txt
Alternativement, pour avoir un environnement isolé, vous pouvez utiliser Python Virtualenv
Exécutez ensuite la commande suivante pour exécuter les scripts de migration de base de données
alembic upgrade head
Si vous souhaitez utiliser marzban-cli
, vous devez le lier à un fichier de votre $PATH
, le rendre exécutable et installer la saisie semi-automatique :
sudo ln -s $( pwd ) /marzban-cli.py /usr/bin/marzban-cli
sudo chmod +x /usr/bin/marzban-cli
marzban-cli completion install
Il est maintenant temps de configurer
Faites une copie du fichier .env.example
, jetez-y un œil et modifiez-le à l'aide d'un éditeur de texte comme nano
.
Vous aimez probablement modifier les informations d’identification de l’administrateur.
cp .env.example .env
nano .env
Consultez la section Configurations pour plus d'informations
Finalement, lancez l'application en utilisant la commande ci-dessous
python3 main.py
Pour lancer avec Linux systemctl (copiez le fichier marzban.service dans /var/lib/marzban/marzban.service
)
systemctl enable /var/lib/marzban/marzban.service
systemctl start marzban
À utiliser avec nginx
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location ~* /(dashboard|api|docs|redoc|openapi.json) {
proxy_pass http://0.0.0.0:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# xray-core ws-path: /
# client ws-path: /marzban/me/2087
#
# All traffic is proxed through port 443, and send to the xray port(2087, 2088 etc.).
# The '/marzban' in location regex path can changed any characters by yourself.
#
# /${path}/${username}/${xray-port}
location ~* /marzban/.+/(.+)$ {
proxy_redirect off;
proxy_pass http://127.0.0.1:$1/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
ou
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name marzban.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location / {
proxy_pass http://0.0.0.0:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Par défaut, l'application sera exécutée sur http://localhost:8000/dashboard
. Vous pouvez le configurer en modifiant les variables d'environnement UVICORN_HOST
et UVICORN_PORT
.
Vous pouvez définir les paramètres ci-dessous à l'aide de variables d'environnement ou en les plaçant dans un fichier
.env
.
Variable | Description |
---|---|
SUDO_USERNAME | Nom d'utilisateur du superutilisateur |
SUDO_PASSWORD | Mot de passe du superutilisateur |
SQLALCHEMY_DATABASE_URL | URL de la base de données (documentation de SQLAlchemy) |
UVICORN_HOST | Lier l'application à cet hôte (par défaut : 0.0.0.0 ) |
UVICORN_PORT | Lier l'application à ce port (par défaut : 8000 ) |
UVICORN_UDS | Lier l'application à un socket de domaine UNIX |
UVICORN_SSL_CERTFILE | Fichier de certificat SSL pour avoir une application sur https |
UVICORN_SSL_KEYFILE | Fichier de clé SSL pour avoir une application sur https |
XRAY_JSON | Chemin du fichier de configuration json de Xray (par défaut : xray_config.json ) |
CHEMIN_EXECUTABLE_XRAY | Chemin du binaire Xray (par défaut : /usr/local/bin/xray ) |
XRAY_ASSETS_PATH | Chemin des ressources Xray (par défaut : /usr/local/share/xray ) |
XRAY_SUBSCRIPTION_URL_PREFIX | Préfixe des URL d'abonnement |
XRAY_FALLBACKS_INBOUND_TAG | Balise du trafic entrant qui inclut des solutions de secours, nécessaire dans le cas où vous utilisez des solutions de secours |
XRAY_EXCLUDE_INBOUND_TAGS | Tags des entrants qui ne doivent pas être gérés et inclus dans les liens par application |
CUSTOM_TEMPLATES_DIRECTORY | Répertoire de modèles personnalisés (par défaut : app/templates ) |
CLASH_SUBSCRIPTION_TEMPLATE | Le modèle qui sera utilisé pour générer les configurations de conflits (par défaut : clash/default.yml ) |
SUBSCRIPTION_PAGE_TEMPLATE | Le modèle utilisé pour générer la page d'informations sur l'abonnement (par défaut : subscription/index.html ) |
HOME_PAGE_TEMPLATE | Modèle de page leurre (par défaut : home/index.html ) |
TELEGRAM_API_TOKEN | Jeton API du bot Telegram (obtenir le jeton de @botfather) |
TELEGRAM_ADMIN_ID | ID de télégramme numérique de l'administrateur (utilisez @userinfobot pour trouver votre identifiant) |
TELEGRAM_PROXY_URL | Exécutez Telegram Bot via un proxy |
JWT_ACCESS_TOKEN_EXPIRE_MINUTES | Temps d'expiration des jetons d'accès en minutes, 0 considéré comme infini (par défaut : 1440 ) |
DOCUMENTS | Si les documents API doivent être disponibles sur /docs et /redoc ou non (par défaut : False ) |
DÉBOGUER | Mode débogage pour le développement (par défaut : False ) |
WEBHOOK_ADDRESS | Adresse du webhook à laquelle envoyer les notifications. Des notifications Webhook seront envoyées si cette valeur a été définie. |
WEBHOOK_SECRET | Le secret du Webhook sera envoyé avec chaque demande en tant que x-webhook-secret dans l'en-tête (par défaut : None ) |
NUMBER_OF_RECURRENT_NOTIFICATIONS | Combien de fois réessayer si une erreur est détectée lors de l'envoi d'une notification (par défaut : 3 ) |
RECURRENT_NOTIFICATIONS_TIMEOUT | Délai d'expiration entre chaque nouvelle tentative si une erreur est détectée lors de l'envoi d'une notification en secondes (par défaut : 180 ) |
NOTIFY_REACHED_USAGE_PERCENT | À quel pourcentage d'utilisation envoyer la notification d'avertissement (par défaut : 80 ) |
NOTIFY_DAYS_LEFT | Quand envoyer une notification d'avertissement concernant l'expiration (par défaut : 3 ) |
USERS_AUTODELETE_DAYS | Supprimer les utilisateurs expirés (et éventuellement limités) après ce nombre de jours (les valeurs négatives désactivent cette fonctionnalité, par défaut : -1 ) |
USER_AUTODELETE_INCLUDE_LIMITED_ACCOUNTS | Météo pour inclure des comptes limités dans la fonctionnalité de suppression automatique (par défaut : False ) |
USE_CUSTOM_JSON_DEFAULT | Activer la configuration JSON personnalisée pour TOUS les clients pris en charge (par défaut : False ) |
USE_CUSTOM_JSON_FOR_V2RAYNG | Activer la configuration JSON personnalisée uniquement pour V2rayNG (par défaut : False ) |
USE_CUSTOM_JSON_FOR_STREISAND | Activer la configuration JSON personnalisée uniquement pour Streisand (par défaut : False ) |
USE_CUSTOM_JSON_FOR_V2RAYN | Activer la configuration JSON personnalisée uniquement pour V2rayN (par défaut : False ) |
Marzban fournit une API REST qui permet aux développeurs d'interagir avec les services Marzban par programmation. Pour afficher la documentation de l'API dans Swagger UI ou ReDoc, définissez la variable de configuration DOCS=True
et accédez aux fichiers /docs
et /redoc
.
C'est toujours une bonne idée de sauvegarder régulièrement vos fichiers Marzban pour éviter toute perte de données en cas de panne du système ou de suppression accidentelle. Voici les étapes pour sauvegarder Marzban :
/var/lib/marzban
(versions Docker). Copiez l'intégralité du répertoire /var/lib/marzban
vers un emplacement de sauvegarde de votre choix, tel qu'un disque dur externe ou un stockage cloud./opt/marzban/
.En suivant ces étapes, vous pouvez vous assurer que vous disposez d'une sauvegarde de tous vos fichiers et données Marzban, ainsi que de vos variables de configuration et de votre configuration Xray, au cas où vous auriez besoin de les restaurer à l'avenir. N'oubliez pas de mettre à jour régulièrement vos sauvegardes pour les maintenir à jour.
Marzban est livré avec un bot Telegram intégré qui peut gérer la gestion du serveur, la création et la suppression d'utilisateurs et envoyer des notifications. Ce bot peut être facilement activé en suivant quelques étapes simples et constitue un moyen pratique d'interagir avec Marzban sans avoir à vous connecter au serveur à chaque fois.
Pour activer Telegram Bot :
TELEGRAM_API_TOKEN
sur le jeton API de votre botTELEGRAM_ADMIN_ID
sur l'identifiant numérique de votre compte Telegram, vous pouvez obtenir votre identifiant auprès de @userinfobot Marzban est livré avec une CLI intégrée nommée marzban-cli
qui permet aux administrateurs d'interagir directement avec lui.
Si vous avez installé Marzban à l'aide d'un script d'installation facile, vous pouvez accéder aux commandes cli en exécutant
marzban cli [OPTIONS] COMMAND [ARGS]...
Pour plus d'informations, vous pouvez lire la documentation de Marzban CLI.
Le projet Marzban introduit le nœud Marzban, qui révolutionne la distribution des infrastructures. Avec Marzban-node, vous pouvez distribuer votre infrastructure sur plusieurs emplacements, bénéficiant ainsi d'avantages tels que la redondance, la haute disponibilité, l'évolutivité et la flexibilité. Marzban-node permet aux utilisateurs de se connecter à différents serveurs, leur offrant la flexibilité de choisir et de se connecter à plusieurs serveurs au lieu d'être limités à un seul serveur. Pour des informations plus détaillées et des instructions d'installation, veuillez vous référer à la documentation officielle de Marzban-node.
Vous pouvez définir une adresse de webhook et Marzban enverra les notifications à cette adresse.
les demandes seront envoyées sous forme de demande de publication à l'adresse fournie par WEBHOOK_ADDRESS
avec WEBHOOK_SECRET
comme x-webhook-secret
dans les en-têtes.
Exemple de demande envoyée depuis Marzban :
Headers:
Host: 0.0.0.0:9000
User-Agent: python-requests/2.28.1
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
x-webhook-secret: something-very-very-secret
Content-Length: 107
Content-Type: application/json
Body:
{"username": "marzban_test_user", "action": "user_updated", "enqueued_at": 1680506457.636369, "tries": 0}
Les différents types d'actions sont : user_created
, user_updated
, user_deleted
, user_limited
, user_expired
, user_disabled
, user_enabled
Si vous avez trouvé Marzban utile et souhaitez soutenir son développement, vous pouvez faire un don sur l’un des réseaux cryptographiques suivants :
TX8kJoDcowQPBFTYHAJR36GyoUKP1Xwzkb
0xFdc9ad32454FA4fc4733270FCc12ddBFb68b83F7
bc1qpys2nefgsjjgae3g3gqy9crsv3h3rm96tlkz0v
DJAocBAu8y6LwhDKUktLAyzV8xyoFeHH6R
EQAVf-7hAXHlF-jmrKE44oBwN7HGQFVBLAtrOsev5K4qR4P8
Merci pour votre soutien !
Fabriqué en [Inconnu !] et publié sous AGPL-3.0.
Nous ❤️ contributeurs ! Si vous souhaitez contribuer, veuillez consulter nos directives de contribution et n'hésitez pas à soumettre une pull request ou à ouvrir un numéro. Nous vous invitons également à rejoindre notre groupe Telegram pour obtenir de l'aide ou des conseils.
Vérifiez les problèmes ouverts pour aider à l’avancement de ce projet.
Merci à tous les contributeurs qui ont contribué à améliorer Marzban :
Réalisé avec contrib.rocks