Einheitliche, zensurresistente GUI-Lösung, unterstützt von Xray
Englisch / Französisch / 简体中文 / Russisch
Marzban (das persische Wort für „Grenzwächter“ – ausgesprochen /mærz'ban/) ist ein Proxy-Verwaltungstool, das eine einfache und benutzerfreundliche Benutzeroberfläche für die Verwaltung Hunderter Proxy-Konten bietet, die auf Xray-Core basieren und mit Python erstellt wurden und Reactjs.
Marzban ist benutzerfreundlich, funktionsreich und zuverlässig. Sie können damit ohne komplizierte Konfiguration verschiedene Proxys für Ihre Benutzer erstellen. Mithilfe der integrierten Web-Benutzeroberfläche können Sie Benutzer überwachen, ändern und einschränken.
Führen Sie den folgenden Befehl aus
sudo bash -c " $( curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh ) " @ install
Sobald die Installation abgeschlossen ist:
Ctrl+C
drücken/opt/marzban
/opt/marzban/.env
(Informationen zu den Variablen finden Sie im Abschnitt „Konfigurationen“)./var/lib/marzban
abgelegthttp://YOUR_SERVER_IP:8000/dashboard/
navigieren (ersetzen Sie YOUR_SERVER_IP durch die tatsächliche IP-Adresse Ihres Servers).Als Nächstes müssen Sie mit dem folgenden Befehl einen Sudo-Administrator für die Anmeldung beim Marzban-Dashboard erstellen
marzban cli admin create --sudo
Das ist es! Mit diesen Anmeldeinformationen können Sie sich bei Ihrem Dashboard anmelden
Um die Hilfemeldung des Marzban-Skripts anzuzeigen, führen Sie den folgenden Befehl aus
marzban --help
Wenn Sie das Projekt gerne mit dem Quellcode ausführen möchten, lesen Sie den folgenden Abschnitt
Installieren Sie xray auf Ihrem Computer
Sie können es mit Xray-install installieren
bash -c " $( curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh ) " @ install
Klonen Sie dieses Projekt und installieren Sie die Abhängigkeiten (Sie benötigen 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
Alternativ können Sie für eine isolierte Umgebung Python Virtualenv verwenden
Führen Sie dann den folgenden Befehl aus, um die Datenbankmigrationsskripts auszuführen
alembic upgrade head
Wenn Sie marzban-cli
verwenden möchten, sollten Sie es mit einer Datei in Ihrem $PATH
verknüpfen, es ausführbar machen und die automatische Vervollständigung installieren:
sudo ln -s $( pwd ) /marzban-cli.py /usr/bin/marzban-cli
sudo chmod +x /usr/bin/marzban-cli
marzban-cli completion install
Jetzt geht es an die Konfiguration
Erstellen Sie eine Kopie der Datei .env.example
, sehen Sie sich diese an und bearbeiten Sie sie mit einem Texteditor wie nano
.
Sie möchten wahrscheinlich die Administrator-Anmeldeinformationen ändern.
cp .env.example .env
nano .env
Weitere Informationen finden Sie im Abschnitt „Konfigurationen“.
Starten Sie schließlich die Anwendung mit dem folgenden Befehl
python3 main.py
Zum Starten mit Linux systemctl (kopieren Sie die Datei marzban.service nach /var/lib/marzban/marzban.service
).
systemctl enable /var/lib/marzban/marzban.service
systemctl start marzban
Zur Verwendung mit 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;
}
}
oder
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;
}
}
Standardmäßig wird die App unter http://localhost:8000/dashboard
ausgeführt. Sie können es konfigurieren, indem Sie die Umgebungsvariablen UVICORN_HOST
und UVICORN_PORT
ändern.
Sie können die folgenden Einstellungen mithilfe von Umgebungsvariablen festlegen oder diese in einer
.env
Datei platzieren.
Variable | Beschreibung |
---|---|
SUDO_USERNAME | Benutzername des Superusers |
SUDO_PASSWORD | Passwort des Superusers |
SQLALCHEMY_DATABASE_URL | Datenbank-URL (SQLAlchemy-Dokumente) |
UVICORN_HOST | Anwendung an diesen Host binden (Standard: 0.0.0.0 ) |
UVICORN_PORT | Anwendung an diesen Port binden (Standard: 8000 ) |
UVICORN_UDS | Binden Sie die Anwendung an einen UNIX-Domänen-Socket |
UVICORN_SSL_CERTFILE | SSL-Zertifikatdatei zur Anwendung auf https |
UVICORN_SSL_KEYFILE | SSL-Schlüsseldatei für die Anwendung auf https |
XRAY_JSON | Pfad der JSON-Konfigurationsdatei von Xray (Standard: xray_config.json ) |
XRAY_EXECUTABLE_PATH | Pfad der Xray-Binärdatei (Standard: /usr/local/bin/xray ) |
XRAY_ASSETS_PATH | Pfad der Xray-Assets (Standard: /usr/local/share/xray ) |
XRAY_SUBSCRIPTION_URL_PREFIX | Präfix der Abonnement-URLs |
XRAY_FALLBACKS_INBOUND_TAG | Tag des eingehenden Datenverkehrs, der Fallbacks enthält. Erforderlich für den Fall, dass Sie Fallbacks verwenden |
XRAY_EXCLUDE_INBOUND_TAGS | Tags der eingehenden Daten, die nicht von der Anwendung verwaltet und in Links eingebunden werden sollen |
CUSTOM_TEMPLATES_DIRECTORY | Verzeichnis für benutzerdefinierte Vorlagen (Standard: app/templates ) |
CLASH_SUBSCRIPTION_TEMPLATE | Die Vorlage, die zum Generieren von Clash-Konfigurationen verwendet wird (Standard: clash/default.yml ) |
SUBSCRIPTION_PAGE_TEMPLATE | Die Vorlage, die zum Generieren der Abonnement-Infoseite verwendet wird (Standard: subscription/index.html ) |
HOME_PAGE_TEMPLATE | Decoy-Seitenvorlage (Standard: home/index.html ) |
TELEGRAM_API_TOKEN | Telegram-Bot-API-Token (Token von @botfather erhalten) |
TELEGRAM_ADMIN_ID | Numerische Telegramm-ID des Administrators (verwenden Sie @userinfobot, um Ihre ID zu finden) |
TELEGRAM_PROXY_URL | Führen Sie Telegram Bot über Proxy aus |
JWT_ACCESS_TOKEN_EXPIRE_MINUTES | Ablaufzeit für die Zugriffstoken in Minuten, 0 gilt als unendlich (Standard: 1440 ) |
DOCS | Ob API-Dokumente auf /docs und /redoc verfügbar sein sollen oder nicht (Standard: False ) |
DEBUGGEN | Debugmodus für die Entwicklung (Standard: False ) |
WEBHOOK_ADDRESS | Webhook-Adresse, an die Benachrichtigungen gesendet werden sollen. Webhook-Benachrichtigungen werden gesendet, wenn dieser Wert festgelegt wurde. |
WEBHOOK_SECRET | Das Webhook-Geheimnis wird bei jeder Anfrage als x-webhook-secret im Header gesendet (Standard: None ). |
NUMBER_OF_RECURRENT_NOTIFICATIONS | Wie oft soll es erneut versucht werden, wenn beim Senden einer Benachrichtigung ein Fehler festgestellt wurde (Standard: 3 ) |
RECURRENT_NOTIFICATIONS_TIMEOUT | Zeitüberschreitung zwischen jedem Wiederholungsversuch, wenn beim Senden einer Benachrichtigung ein Fehler festgestellt wurde, in Sekunden (Standard: 180 ) |
NOTIFY_REACHED_USAGE_PERCENT | Bei welchem Prozentsatz der Nutzung die Warnmeldung gesendet werden soll (Standard: 80 ) |
NOTIFY_DAYS_LEFT | Wann eine Warnmeldung über den Ablauf gesendet werden soll (Standard: 3 ) |
USERS_AUTODELETE_DAYS | Abgelaufene (und optional eingeschränkte Benutzer) nach dieser Anzahl von Tagen löschen (Negative Werte deaktivieren diese Funktion, Standard: -1 ) |
USER_AUTODELETE_INCLUDE_LIMITED_ACCOUNTS | Wetter, um begrenzte Konten in die Funktion zum automatischen Löschen einzubeziehen (Standard: False ) |
USE_CUSTOM_JSON_DEFAULT | Aktivieren Sie die benutzerdefinierte JSON-Konfiguration für ALLE unterstützten Clients (Standard: False ). |
USE_CUSTOM_JSON_FOR_V2RAYNG | Benutzerdefinierte JSON-Konfiguration nur für V2rayNG aktivieren (Standard: False ) |
USE_CUSTOM_JSON_FOR_STREISAND | Benutzerdefinierte JSON-Konfiguration nur für Streisand aktivieren (Standard: False ) |
USE_CUSTOM_JSON_FOR_V2RAYN | Benutzerdefinierte JSON-Konfiguration nur für V2rayN aktivieren (Standard: False ) |
Marzban bietet eine REST-API, die es Entwicklern ermöglicht, programmgesteuert mit Marzban-Diensten zu interagieren. Um die API-Dokumentation in Swagger UI oder ReDoc anzuzeigen, legen Sie die Konfigurationsvariable DOCS=True
fest und navigieren Sie zu /docs
und /redoc
.
Es ist immer eine gute Idee, Ihre Marzban-Dateien regelmäßig zu sichern, um Datenverlust bei Systemausfällen oder versehentlichem Löschen zu verhindern. Hier sind die Schritte zum Sichern von Marzban:
/var/lib/marzban
(Docker-Versionen) gespeichert. Kopieren Sie das gesamte Verzeichnis /var/lib/marzban
an einen Backup-Speicherort Ihrer Wahl, z. B. eine externe Festplatte oder einen Cloud-Speicher./opt/marzban/
befinden.Wenn Sie diese Schritte befolgen, können Sie sicherstellen, dass Sie über ein Backup aller Ihrer Marzban-Dateien und -Daten sowie Ihrer Konfigurationsvariablen und Xray-Konfiguration verfügen, für den Fall, dass Sie diese in Zukunft wiederherstellen müssen. Denken Sie daran, Ihre Backups regelmäßig zu aktualisieren, um sie auf dem neuesten Stand zu halten.
Marzban verfügt über einen integrierten Telegram-Bot, der die Serververwaltung, das Erstellen und Entfernen von Benutzern sowie das Senden von Benachrichtigungen übernehmen kann. Dieser Bot lässt sich mit ein paar einfachen Schritten ganz einfach aktivieren und bietet eine bequeme Möglichkeit, mit Marzban zu interagieren, ohne sich jedes Mal beim Server anmelden zu müssen.
So aktivieren Sie Telegram Bot:
TELEGRAM_API_TOKEN
auf das API-Token Ihres BotsTELEGRAM_ADMIN_ID
auf die numerische ID Ihres Telegram-Kontos. Sie können Ihre ID von @userinfobot erhalten Marzban verfügt über eine integrierte CLI namens marzban-cli
, die Administratoren eine direkte Interaktion damit ermöglicht.
Wenn Sie Marzban mit dem einfachen Installationsskript installiert haben, können Sie durch Ausführen auf die CLI-Befehle zugreifen
marzban cli [OPTIONS] COMMAND [ARGS]...
Weitere Informationen finden Sie in der Dokumentation von Marzban CLI.
Das Marzban-Projekt führt den Marzban-Knoten ein, der die Infrastrukturverteilung revolutioniert. Mit Marzban-node können Sie Ihre Infrastruktur auf mehrere Standorte verteilen und so Vorteile wie Redundanz, Hochverfügbarkeit, Skalierbarkeit und Flexibilität nutzen. Marzban-node ermöglicht Benutzern die Verbindung zu verschiedenen Servern und bietet ihnen die Flexibilität, mehrere Server auszuwählen und eine Verbindung zu diesen herzustellen, anstatt auf nur einen Server beschränkt zu sein. Ausführlichere Informationen und Installationsanweisungen finden Sie in der offiziellen Dokumentation von Marzban-node
Sie können eine Webhook-Adresse festlegen und Marzban sendet die Benachrichtigungen an diese Adresse.
Die Anfragen werden als Post-Anfrage an die von WEBHOOK_ADDRESS
bereitgestellte Adresse mit WEBHOOK_SECRET
als x-webhook-secret
in den Headern gesendet.
Beispielanfrage von Marzban gesendet:
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}
Verschiedene Aktionstypen sind: user_created
, user_updated
, user_deleted
, user_limited
, user_expired
, user_disabled
, user_enabled
Wenn Sie Marzban nützlich fanden und seine Entwicklung unterstützen möchten, können Sie in einem der folgenden Krypto-Netzwerke spenden:
TX8kJoDcowQPBFTYHAJR36GyoUKP1Xwzkb
0xFdc9ad32454FA4fc4733270FCc12ddBFb68b83F7
bc1qpys2nefgsjjgae3g3gqy9crsv3h3rm96tlkz0v
DJAocBAu8y6LwhDKUktLAyzV8xyoFeHH6R
EQAVf-7hAXHlF-jmrKE44oBwN7HGQFVBLAtrOsev5K4qR4P8
Vielen Dank für Ihre Unterstützung!
Hergestellt in [Unbekannt!] und veröffentlicht unter AGPL-3.0.
Wir ❤️ Mitwirkende! Wenn Sie einen Beitrag leisten möchten, schauen Sie sich bitte unsere Beitragsrichtlinien an und senden Sie gerne eine Pull-Anfrage oder eröffnen Sie ein Problem. Wir heißen Sie auch herzlich willkommen, unserer Telegram-Gruppe beizutreten, um Unterstützung zu erhalten oder Ratschläge zu geben.
Überprüfen Sie offene Probleme, um den Fortschritt dieses Projekts zu unterstützen.
Vielen Dank an alle Mitwirkenden, die zur Verbesserung von Marzban beigetragen haben:
Hergestellt mit contrib.rocks