Solución unificada GUI resistente a la censura impulsada por Xray
Inglés / فارسی / 简体中文 / Русский
Marzban (la palabra persa para "guardia de fronteras" - pronunciada /mærz'ban/) es una herramienta de administración de proxy que proporciona una interfaz de usuario simple y fácil de usar para administrar cientos de cuentas de proxy impulsadas por Xray-core y creadas con Python. y reaccionarjs.
Marzban es fácil de usar, rico en funciones y confiable. Le permite crear diferentes servidores proxy para sus usuarios sin ninguna configuración complicada. Utilizando su interfaz de usuario web incorporada, puede monitorear, modificar y limitar usuarios.
Ejecute el siguiente comando
sudo bash -c " $( curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh ) " @ install
Una vez completada la instalación:
Ctrl+C
/opt/marzban
/opt/marzban/.env
(consulte la sección de configuraciones para ver las variables)/var/lib/marzban
http://YOUR_SERVER_IP:8000/dashboard/
(reemplace YOUR_SERVER_IP con la dirección IP real de su servidor)A continuación, debe crear un administrador sudo para iniciar sesión en el panel de Marzban con el siguiente comando
marzban cli admin create --sudo
¡Eso es todo! Puede iniciar sesión en su panel de control utilizando estas credenciales
Para ver el mensaje de ayuda del script Marzban, ejecute el siguiente comando
marzban --help
Si está ansioso por ejecutar el proyecto utilizando el código fuente, consulte la sección siguiente
Instale xray en su máquina
Puedes instalarlo usando Xray-install
bash -c " $( curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh ) " @ install
Clona este proyecto e instala las dependencias (necesitas 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
Alternativamente, para tener un entorno aislado puedes usar Python Virtualenv
Luego ejecute el siguiente comando para ejecutar los scripts de migración de la base de datos
alembic upgrade head
Si desea utilizar marzban-cli
, debe vincularlo a un archivo en su $PATH
, hacerlo ejecutable e instalar el autocompletado:
sudo ln -s $( pwd ) /marzban-cli.py /usr/bin/marzban-cli
sudo chmod +x /usr/bin/marzban-cli
marzban-cli completion install
Ahora es el momento de configurar
Haga una copia del archivo .env.example
, échele un vistazo y edítelo usando un editor de texto como nano
.
Probablemente desee modificar las credenciales de administrador.
cp .env.example .env
nano .env
Consulta la sección de configuraciones para más información.
Finalmente, inicie la aplicación usando el siguiente comando
python3 main.py
Para iniciar con Linux systemctl (copie el archivo marzban.service a /var/lib/marzban/marzban.service
)
systemctl enable /var/lib/marzban/marzban.service
systemctl start marzban
Para usar con 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;
}
}
o
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;
}
}
De forma predeterminada, la aplicación se ejecutará en http://localhost:8000/dashboard
. Puede configurarlo cambiando las variables de entorno UVICORN_HOST
y UVICORN_PORT
.
Puede establecer las configuraciones a continuación utilizando variables de entorno o colocándolas en un archivo
.env
.
Variable | Descripción |
---|---|
SUDO_NOMBRE DE USUARIO | Nombre de usuario del superusuario |
SUDO_CONTRASEÑA | Contraseña de superusuario |
SQLALCHEMY_DATABASE_URL | URL de la base de datos (documentos de SQLAlchemy) |
UVICORN_HOST | Vincular la aplicación a este host (predeterminado: 0.0.0.0 ) |
UVICORN_PORT | Vincular la aplicación a este puerto (predeterminado: 8000 ) |
UVICORN_UDS | Vincular la aplicación a un socket de dominio UNIX |
UVICORN_SSL_CERTFILE | Archivo de certificado SSL para tener aplicación en https |
UVICORN_SSL_KEYFILE | Archivo de clave SSL para tener aplicación en https |
XRAY_JSON | Ruta del archivo de configuración json de Xray (predeterminado: xray_config.json ) |
XRAY_EXECUTABLE_PATH | Ruta del binario de rayos X (predeterminado: /usr/local/bin/xray ) |
XRAY_ASSETS_PATH | Ruta de los recursos de rayos X (predeterminado: /usr/local/share/xray ) |
XRAY_SUBSCRIPTION_URL_PREFIX | Prefijo de URL de suscripción |
XRAY_FALLBACKS_INBOUND_TAG | Etiqueta del inbound que incluye respaldos, necesaria en el caso de que estés usando respaldos |
XRAY_EXCLUDE_INBOUND_TAGS | Tags de los inbounds que no se deben gestionar e incluir en enlaces por aplicación |
CUSTOM_TEMPLATES_DIRECTORY | Directorio de plantillas personalizadas (predeterminado: app/templates ) |
CLASH_SUBSCRIPTION_TEMPLATE | La plantilla que se utilizará para generar configuraciones de choque (predeterminada: clash/default.yml ) |
SUBSCRIPTION_PAGE_TEMPLATE | La plantilla utilizada para generar la página de información de suscripción (predeterminada: subscription/index.html ). |
HOME_PAGE_TEMPLATE | Plantilla de página señuelo (predeterminada: home/index.html ) |
TELEGRAM_API_TOKEN | Token API del bot de Telegram (obtenga el token de @botfather) |
TELEGRAM_ADMIN_ID | ID numérico de Telegram del administrador (use @userinfobot para encontrar su ID) |
TELEGRAM_PROXY_URL | Ejecute Telegram Bot a través de proxy |
JWT_ACCESS_TOKEN_EXPIRE_MINUTES | Tiempo de caducidad de los tokens de acceso en minutos, 0 se considera infinito (predeterminado: 1440 ) |
DOCUMENTOS | Si los documentos API deben estar disponibles en /docs y /redoc o no (predeterminado: False ) |
DEPURAR | Modo de depuración para desarrollo (predeterminado: False ) |
WEBHOOK_ADDRESS | Dirección de webhook a la que enviar notificaciones. Se enviarán notificaciones de webhook si se estableció este valor. |
WEBHOOK_SECRET | El secreto del webhook se enviará con cada solicitud como x-webhook-secret en el encabezado (predeterminado: None ) |
NUMBER_OF_RECURRENT_NOTIFICATIONS | Cuántas veces reintentar si se detecta un error al enviar una notificación (predeterminado: 3 ) |
RECURRENT_NOTIFICATIONS_TIMEOUT | Tiempo de espera entre cada reintento si se detecta un error al enviar una notificación en segundos (predeterminado: 180 ) |
NOTIFY_REACHED_USAGE_PERCENT | En qué porcentaje de uso enviar la notificación de advertencia (predeterminado: 80 ) |
NOTIFY_DAYS_LEFT | Cuándo enviar una notificación de advertencia sobre el vencimiento (predeterminado: 3 ) |
USERS_AUTODELETE_DAYS | Elimine los usuarios caducados (y opcionalmente limitados) después de tantos días (los valores negativos desactivan esta función, valor predeterminado: -1 ) |
USER_AUTODELETE_INCLUDE_LIMITED_ACCOUNTS | Tiempo para incluir cuentas limitadas en la función de eliminación automática (predeterminado: False ) |
USE_CUSTOM_JSON_DEFAULT | Habilite la configuración JSON personalizada para TODOS los clientes compatibles (predeterminado: False ) |
USE_CUSTOM_JSON_FOR_V2RAYNG | Habilite la configuración JSON personalizada solo para V2rayNG (predeterminado: False ) |
USE_CUSTOM_JSON_FOR_STREISAND | Habilite la configuración JSON personalizada solo para Streisand (predeterminado: False ) |
USE_CUSTOM_JSON_FOR_V2RAYN | Habilite la configuración JSON personalizada solo para V2rayN (predeterminado: False ) |
Marzban proporciona una API REST que permite a los desarrolladores interactuar con los servicios de Marzban mediante programación. Para ver la documentación de la API en Swagger UI o ReDoc, establezca la variable de configuración DOCS=True
y navegue hasta /docs
y /redoc
.
Siempre es una buena idea hacer una copia de seguridad de sus archivos Marzban con regularidad para evitar la pérdida de datos en caso de fallas del sistema o eliminación accidental. Estos son los pasos para hacer una copia de seguridad de Marzban:
/var/lib/marzban
(versiones Docker). Copie todo el directorio /var/lib/marzban
a una ubicación de respaldo de su elección, como un disco duro externo o almacenamiento en la nube./opt/marzban/
.Si sigue estos pasos, puede asegurarse de tener una copia de seguridad de todos sus archivos y datos de Marzban, así como de sus variables de configuración y configuración de Xray, en caso de que necesite restaurarlos en el futuro. Recuerde actualizar sus copias de seguridad periódicamente para mantenerlas actualizadas.
Marzban viene con un bot de Telegram integrado que puede manejar la administración del servidor, la creación y eliminación de usuarios y enviar notificaciones. Este bot se puede habilitar fácilmente siguiendo unos sencillos pasos y proporciona una manera conveniente de interactuar con Marzban sin tener que iniciar sesión en el servidor cada vez.
Para habilitar Telegram Bot:
TELEGRAM_API_TOKEN
en el token API de tu botTELEGRAM_ADMIN_ID
con el ID numérico de su cuenta de Telegram, puede obtener su ID de @userinfobot Marzban viene con una CLI integrada llamada marzban-cli
que permite a los administradores interactuar directamente con ella.
Si ha instalado Marzban usando un script de instalación fácil, puede acceder a los comandos cli ejecutando
marzban cli [OPTIONS] COMMAND [ARGS]...
Para obtener más información, puede leer la documentación de Marzban CLI.
El proyecto Marzban introduce el nodo Marzban, que revoluciona la distribución de infraestructura. Con Marzban-node, puede distribuir su infraestructura en múltiples ubicaciones, desbloqueando beneficios como redundancia, alta disponibilidad, escalabilidad y flexibilidad. Marzban-node permite a los usuarios conectarse a diferentes servidores, ofreciéndoles la flexibilidad de elegir y conectarse a múltiples servidores en lugar de estar limitados a un solo servidor. Para obtener información más detallada e instrucciones de instalación, consulte la documentación oficial de Marzban-node.
Puede configurar una dirección de webhook y Marzban enviará las notificaciones a esa dirección.
las solicitudes se enviarán como una solicitud posterior a la dirección proporcionada por WEBHOOK_ADDRESS
con WEBHOOK_SECRET
como x-webhook-secret
en los encabezados.
Solicitud de ejemplo enviada desde 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}
Los diferentes tipos de acciones son: user_created
, user_updated
, user_deleted
, user_limited
, user_expired
, user_disabled
, user_enabled
Si Marzban le resultó útil y le gustaría apoyar su desarrollo, puede hacer una donación en una de las siguientes redes criptográficas:
TX8kJoDcowQPBFTYHAJR36GyoUKP1Xwzkb
0xFdc9ad32454FA4fc4733270FCc12ddBFb68b83F7
bc1qpys2nefgsjjgae3g3gqy9crsv3h3rm96tlkz0v
DJAocBAu8y6LwhDKUktLAyzV8xyoFeHH6R
EQAVf-7hAXHlF-jmrKE44oBwN7HGQFVBLAtrOsev5K4qR4P8
¡Gracias por su apoyo!
Realizado en [¡Desconocido!] y publicado bajo AGPL-3.0.
¡Nosotros ❤️ colaboradores! Si desea contribuir, consulte nuestras Pautas de contribución y no dude en enviar una solicitud de extracción o abrir un problema. También lo invitamos a unirse a nuestro grupo de Telegram para recibir apoyo o contribuir con orientación.
Consulte los problemas abiertos para ayudar al progreso de este proyecto.
Gracias a todos los contribuyentes que han ayudado a mejorar Marzban:
Hecho con contrib.rocks