Унифицированное устойчивое к цензуре решение с графическим интерфейсом на базе Xray
Английский / فارسی / 简体中文 / Русский
Marzban (персидское слово, означающее «пограничник» — произносится /mærz'ban/) — это инструмент управления прокси, который предоставляет простой и удобный пользовательский интерфейс для управления сотнями учетных записей прокси, работающий на базе Xray-core и созданный с использованием Python. и Реактджс.
Marzban удобен в использовании, многофункциональен и надежен. Он позволяет вам создавать разные прокси для ваших пользователей без какой-либо сложной настройки. Используя встроенный веб-интерфейс, вы можете отслеживать, изменять и ограничивать пользователей.
Запустите следующую команду
sudo bash -c " $( curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh ) " @ install
После завершения установки:
Ctrl+C
/opt/marzban
/opt/marzban/.env
(переменные см. в разделе конфигураций)./var/lib/marzban
http://YOUR_SERVER_IP:8000/dashboard/
(замените ВАШ_СЕРВЕР_IP фактическим IP-адресом вашего сервера)Далее вам необходимо создать администратора sudo для входа в панель управления Marzban с помощью следующей команды:
marzban cli admin create --sudo
Вот и все! Вы можете войти в свою панель управления, используя эти учетные данные.
Чтобы просмотреть справочное сообщение сценария Marzban, выполните следующую команду
marzban --help
Если вы хотите запустить проект, используя исходный код, проверьте раздел ниже.
Установите Xray на свой компьютер
Вы можете установить его с помощью Xray-install.
bash -c " $( curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh ) " @ install
Клонируйте этот проект и установите зависимости (вам нужен 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
Альтернативно, чтобы иметь изолированную среду, вы можете использовать Python Virtualenv.
Затем выполните следующую команду, чтобы запустить сценарии миграции базы данных.
alembic upgrade head
Если вы хотите использовать marzban-cli
, вам следует связать его с файлом в $PATH
, сделать его исполняемым и установить автодополнение:
sudo ln -s $( pwd ) /marzban-cli.py /usr/bin/marzban-cli
sudo chmod +x /usr/bin/marzban-cli
marzban-cli completion install
Теперь пришло время настройки
Сделайте копию файла .env.example
, просмотрите и отредактируйте его с помощью текстового редактора, например nano
.
Вероятно, вам захочется изменить учетные данные администратора.
cp .env.example .env
nano .env
Проверьте раздел конфигураций для получения дополнительной информации.
В конце концов запустите приложение, используя команду ниже
python3 main.py
Для запуска с помощью Linux systemctl (скопируйте файл marzban.service в /var/lib/marzban/marzban.service
)
systemctl enable /var/lib/marzban/marzban.service
systemctl start marzban
Для использования с 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;
}
}
или
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;
}
}
По умолчанию приложение будет запущено по адресу http://localhost:8000/dashboard
. Вы можете настроить его, изменив переменные среды UVICORN_HOST
и UVICORN_PORT
.
Вы можете установить параметры ниже, используя переменные среды или поместив их в файл
.env
.
Переменная | Описание |
---|---|
SUDO_USERNAME | Имя суперпользователя |
SUDO_PASSWORD | Пароль суперпользователя |
SQLALCHEMY_DATABASE_URL | URL-адрес базы данных (документация SQLAlchemy) |
UVICORN_HOST | Привязать приложение к этому хосту (по умолчанию: 0.0.0.0 ) |
UVICORN_PORT | Привязать приложение к этому порту (по умолчанию: 8000 ). |
УВИКОРН_УДС | Привязка приложения к сокету домена UNIX |
UVICORN_SSL_CERTFILE | Файл сертификата SSL для приложения по https |
UVICORN_SSL_KEYFILE | Файл ключей SSL для использования приложения по https |
XRAY_JSON | Путь к файлу конфигурации json Xray (по умолчанию: xray_config.json ) |
XRAY_EXECUTABLE_PATH | Путь к двоичному файлу Xray (по умолчанию: /usr/local/bin/xray ) |
XRAY_ASSETS_PATH | Путь к ресурсам Xray (по умолчанию: /usr/local/share/xray ) |
XRAY_SUBSCRIPTION_URL_PREFIX | Префикс URL-адресов подписки |
XRAY_FALLBACKS_INBOUND_TAG | Тег входящего трафика, включающий резервные варианты, необходим в случае, если вы используете резервные варианты. |
XRAY_EXCLUDE_INBOUND_TAGS | Теги входящих сообщений, которыми не следует управлять и включать в ссылки приложением. |
CUSTOM_TEMPLATES_DIRECTORY | Каталог настраиваемых шаблонов (по умолчанию: app/templates ). |
CLASH_SUBSCRIPTION_TEMPLATE | Шаблон, который будет использоваться для создания конфигураций конфликтов (по умолчанию: clash/default.yml ). |
SUBSCRIPTION_PAGE_TEMPLATE | Шаблон, используемый для создания страницы информации о подписке (по умолчанию: subscription/index.html ). |
HOME_PAGE_TEMPLATE | Шаблон страницы-приманки (по умолчанию: home/index.html ) |
ТЕЛЕГРАММ_API_ТОКЕН | Токен API бота Telegram (получить токен от @botfather) |
TELEGRAM_ADMIN_ID | Числовой идентификатор администратора в Telegram (используйте @userinfobot, чтобы найти свой идентификатор) |
TELEGRAM_PROXY_URL | Запуск Telegram-бота через прокси |
JWT_ACCESS_TOKEN_EXPIRE_MINUTES | Срок действия токенов доступа в минутах, 0 считается бесконечным (по умолчанию: 1440 ). |
ДОКС | Должны ли документы API быть доступны в /docs и /redoc или нет (по умолчанию: False ) |
ОТЛАЖИВАТЬ | Режим отладки для разработки (по умолчанию: False ) |
WEBHOOK_ADDRESS | Адрес вебхука для отправки уведомлений. Уведомления веб-перехватчика будут отправляться, если установлено это значение. |
ВЕБХУК_СЕКРЕТ | Секрет Webhook будет отправляться с каждым запросом как x-webhook-secret в заголовке (по умолчанию: None ). |
NUMBER_OF_RECURRENT_NOTIFICATIONS | Сколько раз повторять попытку, если при отправке уведомления обнаружена ошибка (по умолчанию: 3 ) |
RECURRENT_NOTIFICATIONS_TIMEOUT | Тайм-аут между каждой повторной попыткой, если при отправке уведомления обнаружена ошибка, в секундах (по умолчанию: 180 ). |
NOTIFY_REACHED_USAGE_PERCENT | При каком проценте использования отправлять предупреждающее уведомление (по умолчанию: 80 ) |
NOTIFY_DAYS_LEFT | Когда отправлять предупреждение об истечении срока действия (по умолчанию: 3 ) |
USERS_AUTODELETE_DAYS | Удалить пользователей с истекшим сроком действия (и, возможно, ограниченных пользователей) по истечении этого количества дней (отрицательные значения отключают эту функцию, по умолчанию: -1 ) |
USER_AUTODELETE_INCLUDE_LIMITED_ACCOUNTS | Weather включит функцию автоматического удаления в ограниченные учетные записи (по умолчанию: False ). |
USE_CUSTOM_JSON_DEFAULT | Включить пользовательскую конфигурацию JSON для ВСЕХ поддерживаемых клиентов (по умолчанию: False ). |
USE_CUSTOM_JSON_FOR_V2RAYNG | Включить пользовательскую конфигурацию JSON только для V2rayNG (по умолчанию: False ) |
USE_CUSTOM_JSON_FOR_STREISAND | Включить пользовательскую конфигурацию JSON только для Стрейзанд (по умолчанию: False ) |
USE_CUSTOM_JSON_FOR_V2RAYN | Включить пользовательскую конфигурацию JSON только для V2rayN (по умолчанию: False ) |
Marzban предоставляет REST API, который позволяет разработчикам программно взаимодействовать со службами Marzban. Чтобы просмотреть документацию по API в Swagger UI или ReDoc, установите переменную конфигурации DOCS=True
и перейдите к /docs
и /redoc
.
Всегда полезно регулярно создавать резервные копии файлов Marzban, чтобы предотвратить потерю данных в случае сбоя системы или случайного удаления. Вот шаги для резервного копирования Marzban:
/var/lib/marzban
(версии Docker). Скопируйте весь каталог /var/lib/marzban
в выбранное вами место резервной копии, например на внешний жесткий диск или в облачное хранилище./opt/marzban/
.Выполнив эти шаги, вы можете быть уверены, что у вас есть резервная копия всех ваших файлов и данных Marzban, а также переменных конфигурации и конфигурации Xray на случай, если вам понадобится их восстановить в будущем. Не забывайте регулярно обновлять резервные копии, чтобы поддерживать их актуальность.
Marzban поставляется со встроенным ботом Telegram, который может управлять сервером, создавать и удалять пользователей, а также отправлять уведомления. Этого бота можно легко включить, выполнив несколько простых шагов, и он обеспечивает удобный способ взаимодействия с Marzban без необходимости каждый раз заходить на сервер.
Чтобы включить Telegram-бот:
TELEGRAM_API_TOKEN
в токен API вашего ботаTELEGRAM_ADMIN_ID
в числовой идентификатор вашей учетной записи Telegram, вы можете получить свой идентификатор от @userinfobot Marzban поставляется со встроенным интерфейсом командной строки marzban-cli
, который позволяет администраторам напрямую взаимодействовать с ним.
Если вы установили Marzban с помощью сценария простой установки, вы можете получить доступ к командам cli, запустив
marzban cli [OPTIONS] COMMAND [ARGS]...
Для получения дополнительной информации вы можете прочитать документацию Marzban CLI.
Проект Marzban представляет узел Marzban, который производит революцию в распределении инфраструктуры. С помощью узла Marzban вы можете распределить свою инфраструктуру по нескольким местам, открывая такие преимущества, как резервирование, высокая доступность, масштабируемость и гибкость. Marzban-node дает пользователям возможность подключаться к различным серверам, предлагая им возможность выбирать и подключаться к нескольким серверам вместо того, чтобы ограничиваться только одним сервером. Более подробную информацию и инструкции по установке можно найти в официальной документации узла Marzban.
Вы можете установить адрес веб-перехватчика, и Marzban будет отправлять уведомления на этот адрес.
запросы будут отправлены как почтовый запрос на адрес, указанный WEBHOOK_ADDRESS
с WEBHOOK_SECRET
как x-webhook-secret
в заголовках.
Пример запроса, отправленного из 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}
Различные типы действий: user_created
, user_updated
, user_deleted
, user_limited
, user_expired
, user_disabled
, user_enabled
Если вы нашли Marzban полезным и хотите поддержать его развитие, вы можете сделать пожертвование в одной из следующих криптосетей:
TX8kJoDcowQPBFTYHAJR36GyoUKP1Xwzkb
0xFdc9ad32454FA4fc4733270FCc12ddBFb68b83F7
bc1qpys2nefgsjjgae3g3gqy9crsv3h3rm96tlkz0v
DJAocBAu8y6LwhDKUktLAyzV8xyoFeHH6R
EQAVf-7hAXHlF-jmrKE44oBwN7HGQFVBLAtrOsev5K4qR4P8
Спасибо за вашу поддержку!
Сделано в [Неизвестно!] и опубликовано под AGPL-3.0.
Мы ❤️ соавторы! Если вы хотите внести свой вклад, ознакомьтесь с нашими Правилами участия и смело отправляйте запрос на включение или открывайте проблему. Мы также приглашаем вас присоединиться к нашей группе в Telegram для получения поддержки или предоставления рекомендаций.
Проверьте открытые проблемы, чтобы помочь развитию этого проекта.
Спасибо всем участникам, которые помогли улучшить Marzban:
Сделано с помощью contrib.rocks