Solução unificada resistente à censura de GUI desenvolvida por Xray
Inglês / فارسی / 简体中文 / Русский
Marzban (a palavra persa para "guarda de fronteira" - pronuncia-se /mærz'ban/) é uma ferramenta de gerenciamento de proxy que fornece uma interface de usuário simples e fácil de usar para gerenciar centenas de contas de proxy alimentadas por Xray-core e construídas usando Python e Reactjs.
Marzban é fácil de usar, rico em recursos e confiável. Ele permite criar diferentes proxies para seus usuários sem nenhuma configuração complicada. Usando sua interface da web integrada, você pode monitorar, modificar e limitar usuários.
Execute o seguinte comando
sudo bash -c " $( curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh ) " @ install
Assim que a instalação for concluída:
Ctrl+C
/opt/marzban
/opt/marzban/.env
(consulte a seção de configurações para ver as variáveis)/var/lib/marzban
http://YOUR_SERVER_IP:8000/dashboard/
(substitua YOUR_SERVER_IP pelo endereço IP real do seu servidor)Em seguida, você precisa criar um administrador sudo para fazer login no painel do Marzban com o seguinte comando
marzban cli admin create --sudo
É isso! Você pode fazer login no seu painel usando essas credenciais
Para ver a mensagem de ajuda do script Marzban, execute o seguinte comando
marzban --help
Se você deseja executar o projeto usando o código-fonte, verifique a seção abaixo
Instale o raio X na sua máquina
Você pode instalá-lo usando o Xray-install
bash -c " $( curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh ) " @ install
Clone este projeto e instale as dependências (você precisa do 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 ter um ambiente isolado você pode usar Python Virtualenv
Em seguida, execute o seguinte comando para executar os scripts de migração de banco de dados
alembic upgrade head
Se você quiser usar marzban-cli
, você deve vinculá-lo a um arquivo em seu $PATH
, torná-lo executável e instalar o preenchimento automático:
sudo ln -s $( pwd ) /marzban-cli.py /usr/bin/marzban-cli
sudo chmod +x /usr/bin/marzban-cli
marzban-cli completion install
Agora é hora de configurar
Faça uma cópia do arquivo .env.example
, dê uma olhada e edite-o usando um editor de texto como nano
.
Você provavelmente gostaria de modificar as credenciais de administrador.
cp .env.example .env
nano .env
Verifique a seção de configurações para obter mais informações
Eventualmente, inicie o aplicativo usando o comando abaixo
python3 main.py
Para iniciar com linux systemctl (copie o arquivo marzban.service para /var/lib/marzban/marzban.service
)
systemctl enable /var/lib/marzban/marzban.service
systemctl start marzban
Para usar com 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;
}
}
Por padrão, o aplicativo será executado em http://localhost:8000/dashboard
. Você pode configurá-lo alterando as variáveis de ambiente UVICORN_HOST
e UVICORN_PORT
.
Você pode definir as configurações abaixo usando variáveis de ambiente ou colocando-as no arquivo
.env
.
Variável | Descrição |
---|---|
SUDO_USERNAME | Nome de usuário do superusuário |
SUDO_SENHA | Senha do superusuário |
SQLALCHEMY_DATABASE_URL | URL do banco de dados (documentos do SQLAlchemy) |
UVICORN_HOST | Vincule o aplicativo a este host (padrão: 0.0.0.0 ) |
UVICORN_PORT | Vincule o aplicativo a esta porta (padrão: 8000 ) |
UVICORN_UDS | Vincular aplicativo a um soquete de domínio UNIX |
UVICORN_SSL_CERTFILE | Arquivo de certificado SSL para aplicação em https |
UVICORN_SSL_KEYFILE | Arquivo de chave SSL para aplicação em https |
XRAY_JSON | Caminho do arquivo de configuração json do Xray (padrão: xray_config.json ) |
XRAY_EXECUTABLE_PATH | Caminho do binário do Xray (padrão: /usr/local/bin/xray ) |
XRAY_ASSETS_PATH | Caminho dos ativos do Xray (padrão: /usr/local/share/xray ) |
XRAY_SUBSCRIPTION_URL_PREFIX | Prefixo de URLs de assinatura |
XRAY_FALLBACKS_INBOUND_TAG | Tag da entrada que inclui substitutos, necessária caso você esteja usando substitutos |
XRAY_EXCLUDE_INBOUND_TAGS | Tags dos inbounds que não devem ser gerenciados e incluídos nos links por aplicação |
PERSONALIZADO_TEMPLATES_DIRECTORY | Diretório de modelos personalizados (padrão: app/templates ) |
CLASH_SUBSCRIPTION_TEMPLATE | O modelo que será usado para gerar configurações de conflito (padrão: clash/default.yml ) |
SUBSCRIPTION_PAGE_TEMPLATE | O modelo usado para gerar a página de informações de assinatura (padrão: subscription/index.html ) |
HOME_PAGE_TEMPLATE | Modelo de página chamariz (padrão: home/index.html ) |
TELEGRAMA_API_TOKEN | Token da API do bot do Telegram (obter token de @botfather) |
TELEGRAMA_ADMIN_ID | ID numérico do Telegram do administrador (use @userinfobot para encontrar seu ID) |
TELEGRAMA_PROXY_URL | Execute o Telegram Bot por proxy |
JWT_ACCESS_TOKEN_EXPIRE_MINUTES | Tempo de expiração dos Tokens de Acesso em minutos, 0 considerado infinito (padrão: 1440 ) |
DOCUMENTOS | Se os documentos da API devem estar disponíveis em /docs e /redoc ou não (padrão: False ) |
DEPURAR | Modo de depuração para desenvolvimento (padrão: False ) |
WEBHOOK_ADDRESS | Endereço do webhook para o qual enviar notificações. Notificações de webhook serão enviadas se esse valor for definido. |
WEBHOOK_SECRET | O segredo do webhook será enviado com cada solicitação como x-webhook-secret no cabeçalho (padrão: None ) |
NUMBER_OF_RECURRENT_NOTIFICATIONS | Quantas vezes tentar novamente se for detectado um erro no envio de uma notificação (padrão: 3 ) |
RECURRENT_NOTIFICATIONS_TIMEOUT | Tempo limite entre cada nova tentativa se for detectado um erro no envio de uma notificação em segundos (padrão: 180 ) |
NOTIFY_REACHED_USAGE_PERCENT | Em qual porcentagem de uso enviar a notificação de aviso (padrão: 80 ) |
NOTIFY_DAYS_LEFT | Quando enviar notificação de aviso sobre expiração (padrão: 3 ) |
USERS_AUTODELETE_DAYS | Excluir usuários expirados (e opcionalmente limitados) após tantos dias (valores negativos desativam esse recurso, padrão: -1 ) |
USER_AUTODELETE_INCLUDE_LIMITED_ACCOUNTS | Weather incluirá contas limitadas no recurso de exclusão automática (padrão: False ) |
USE_CUSTOM_JSON_DEFAULT | Habilite a configuração JSON personalizada para TODOS os clientes suportados (padrão: False ) |
USE_CUSTOM_JSON_FOR_V2RAYNG | Habilite a configuração JSON personalizada apenas para V2rayNG (padrão: False ) |
USE_CUSTOM_JSON_FOR_STREISAND | Habilite a configuração JSON personalizada apenas para Streisand (padrão: False ) |
USE_CUSTOM_JSON_FOR_V2RAYN | Habilite a configuração JSON personalizada apenas para V2rayN (padrão: False ) |
Marzban fornece uma API REST que permite aos desenvolvedores interagir com os serviços Marzban de forma programática. Para visualizar a documentação da API no Swagger UI ou ReDoc, defina a variável de configuração DOCS=True
e navegue até /docs
e /redoc
.
É sempre uma boa ideia fazer backup de seus arquivos Marzban regularmente para evitar perda de dados em caso de falhas do sistema ou exclusão acidental. Aqui estão as etapas para fazer backup do Marzban:
/var/lib/marzban
(versões Docker). Copie todo o diretório /var/lib/marzban
para um local de backup de sua escolha, como um disco rígido externo ou armazenamento em nuvem./opt/marzban/
.Seguindo essas etapas, você pode garantir um backup de todos os seus arquivos e dados do Marzban, bem como de suas variáveis de configuração e configuração do Xray, caso precise restaurá-los no futuro. Lembre-se de atualizar seus backups regularmente para mantê-los atualizados.
Marzban vem com um bot Telegram integrado que pode lidar com gerenciamento de servidor, criação e remoção de usuários e envio de notificações. Este bot pode ser facilmente habilitado seguindo algumas etapas simples e fornece uma maneira conveniente de interagir com o Marzban sem ter que fazer login no servidor todas as vezes.
Para ativar o Telegram Bot:
TELEGRAM_API_TOKEN
como o token API do seu botTELEGRAM_ADMIN_ID
como o ID numérico da sua conta do Telegram, você pode obter seu ID em @userinfobot Marzban vem com uma CLI integrada chamada marzban-cli
que permite aos administradores interagir diretamente com ele.
Se você instalou o Marzban usando o script de instalação fácil, você pode acessar os comandos cli executando
marzban cli [OPTIONS] COMMAND [ARGS]...
Para obter mais informações, você pode ler a documentação do Marzban CLI.
O projeto Marzban apresenta o nó Marzban, que revoluciona a distribuição de infraestrutura. Com o nó Marzban, você pode distribuir sua infraestrutura em vários locais, desbloqueando benefícios como redundância, alta disponibilidade, escalabilidade e flexibilidade. O nó Marzban permite que os usuários se conectem a diferentes servidores, oferecendo-lhes a flexibilidade de escolher e conectar-se a vários servidores, em vez de ficarem limitados a apenas um servidor. Para obter informações mais detalhadas e instruções de instalação, consulte a documentação oficial do nó Marzban
Você pode definir um endereço de webhook e o Marzban enviará as notificações para esse endereço.
as solicitações serão enviadas como uma solicitação postal para o endereço fornecido por WEBHOOK_ADDRESS
com WEBHOOK_SECRET
como x-webhook-secret
nos cabeçalhos.
Exemplo de solicitação enviada de 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}
Diferentes tipos de ação são: user_created
, user_updated
, user_deleted
, user_limited
, user_expired
, user_disabled
, user_enabled
Se você achou o Marzban útil e gostaria de apoiar seu desenvolvimento, você pode fazer uma doação em uma das seguintes redes criptográficas:
TX8kJoDcowQPBFTYHAJR36GyoUKP1Xwzkb
0xFdc9ad32454FA4fc4733270FCc12ddBFb68b83F7
bc1qpys2nefgsjjgae3g3gqy9crsv3h3rm96tlkz0v
DJAocBAu8y6LwhDKUktLAyzV8xyoFeHH6R
EQAVf-7hAXHlF-jmrKE44oBwN7HGQFVBLAtrOsev5K4qR4P8
Obrigado pelo seu apoio!
Feito em [Desconhecido!] e publicado sob AGPL-3.0.
Nós ❤️ colaboradores! Se você quiser contribuir, verifique nossas Diretrizes de Contribuição e sinta-se à vontade para enviar uma solicitação pull ou abrir um problema. Também convidamos você a se juntar ao nosso grupo Telegram para suporte ou contribuição de orientação.
Verifique questões em aberto para ajudar no andamento deste projeto.
Obrigado a todos os contribuidores que ajudaram a melhorar o Marzban:
Feito com contrib.rocks