Устанавливаем и настраиваем Marzban

В данной статье рассмотрим установку и настройку (VPN) сервера Marzban, настройка конфигураций клиентов и настройка дополнительных нод (масштабирование)

Понадобятся:

Оглавление:

  1. Кратко о Marzban

  2. Установка Marzban

  3. Настройка клиентской конфигурации

  4. Настройка дополнительных нод

1. Кратко о Marzban

Marzban (Персидское слово «Пограничник» — произносится /mærz’ban/) — это инструмент управления прокси-серверами, который предоставляет простой и удобный пользовательский интерфейс для управления сотнями учетных записей прокси на базе Xray-core и созданный с использованием Python и ReactJS. Проект имеет русскоязычную документацию.

  • Готовый Web UI

  • REST API бэкэнд

  • Поддержка [множества узлов] (для распределения инфраструктуры и масштабируемости)

  • Поддержка протоколов Vmess (TCP, Websocket),  VLESS (Reality),  Trojan и Shadowsocks (не 2022)

  • Возможность активации нескольких протоколов для каждого пользователя

  • Несколько пользователей на одном inbound

  • Несколько inbound на одном порту (поддержка fallbacks)

  • Ограничения на основе количества трафика и срока действия

  • Ограничение трафика по периодам (например выдавать трафик на день, неделю и т. д.)

  • Поддержка ссылок-подписок совместимых с V2ray (такие как V2RayNG, OneClick, Nekoray, и др.),  Clash и ClashMeta

  • Автоматическая генерация Ссылок и QRcode

  • Мониторинг ресурсов сервера и использования трафика

  • Настраиваемые конфигурации xray

  • Поддержка TLS и REALITY

  • Встроенный Telegram Bot (на английском, в dev версии)

  • Встроенный Command Line Interface (CLI)

  • Несколько языков

  • Поддержка Нескольких администраторов (WIP)

2. Установка Marzban

В установке будем опираться на официальную документацию.

Установка master версии производится командой:

sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install

Когда установка будет завершена:

  • Вы увидите логи, которые можно остановить, нажав Ctrl+C или закрыв терминал.

  • Файлы Marzban будут размещены по адресу /opt/marzban.

  • Файл конфигурации будет размещен по адресу /opt/marzban/.env

  • Файлы с данными будут размещены по адресу /var/lib/marzban.

  • Вы можете получить доступ к панели управления, введя в адресной строке http://YOUR_SERVER_IP:8000/dashboard/ (заменив YOUR_SERVER_IP на актуальный IP адрес вашего сервера).

Далее, Вам нужно создать главного администратора для входа в панель управления Marzban, выполнив следующую команду:

marzban cli admin create --sudo

На этом этапе уже можно пользоваться панелью администратора, но для работы подписок, нод и безопасного доступа по https нужно произвести следующие действия:

Файлы сертификатов должны быть доступны по адресу /var/lib/marzban/certs, чтобы Marzban мог получить к ним доступ.

Прежде чем приступить к получению SSL-сертификата, вы должны настроить DNS-записи домена.

Получаем сертификат с acme.sh:

Для начала необходимо установить socat и cron (cron обычно уже установлен, поэтому команда проверит наличие)

apt install cron socat

Устанавливаем acme.sh

EMAIL = Ваш email

curl https://get.acme.sh | sh -s email=EMAIL

Создаем директорию для сертификатов

mkdir -p /var/lib/marzban/certs/

Получаем сертификат

Введите ваш домен или субдомен в поле DOMAIN

~/.acme.sh/acme.sh --set-default-ca --server letsencrypt  --issue --standalone -d DOMAIN \
--key-file /var/lib/marzban/certs/key.pem \
--fullchain-file /var/lib/marzban/certs/fullchain.pem

В случае, если вам необходимо получить сертификаты для ваших поддоменов, команда получения сертификата будет выглядеть так

~/.acme.sh/acme.sh --set-default-ca --server letsencrypt --issue --standalone \
-d DOMAIN \
-d SUBDOMAIN1.DOMAIN \
-d SUBDOMAIN2.DOMAIN \
--key-file /var/lib/marzban/certs/key.pem \
--fullchain-file /var/lib/marzban/certs/fullchain.pem

Проверить список выпущенных сертификатов:

~/.acme.sh/acme.sh --list

Далее добавляем сертификаты SSL в Marzban

При включении SSL в Marzban, панель управления и ссылка на подписку будут доступны через https.

Во всех примерах ниже вы можете найти файлы docker-compose.ymlи .envпо пути /opt/marzban‍‍‍, а xray_config.jsonпо пути /var/lib/marzban

Marzban запускается по умолчанию с помощьюUvicorn , он же позволяет вам определять файлы сертификатов SSL.

После создания файлов сертификатов SSL установите в файле .env следующие переменные .

YOUR_DOMAIN — ваш домен или субдомен

nano /opt/marzban/.env

Изменяем в нем следующие переменные

UVICORN_PORT = 443
UVICORN_SSL_CERTFILE = "/var/lib/marzban/certs/fullchain.pem"
UVICORN_SSL_KEYFILE = "/var/lib/marzban/certs/key.pem"
XRAY_SUBSCRIPTION_URL_PREFIX = https://YOUR_DOMAIN

Теперь панель управления Marzban будет доступна на вашем домене или субдомене по https. Вы можете получить доступ к панели управления, введя в адресной строке https://YOUR_DOMAIN/dashboard/ 

Поскольку master версия имеет xray 1.8.1 (актуальный 1.8.4) не имеет русского языка и рабочего telegram бота, лучше сразу перейти на версию dev

Переход на версию для разработчиков (dev):

cd /opt/marzban
nano docker-compose.yml

Измените третью строку с marzban:latest на marzban:dev и сохраните изменения

выполните обновление

marzban update 

Для добавления Telegram бота:

nano /opt/marzban/.env

Убираем # перед TELEGRAM_API_TOKEN и TELEGRAM_ADMIN_ID и вносим данные, для Telegram_API_TOKEN берем данные вашего бота из Tg@BotFather, для TELEGRAM_ADMIN_ID из TG@userinfobot или иного источника, где можно узнать ID пользователя-администратора

c0056471df595f0ca0fc70231e92c4aa.png

3. Настройка клиентской конфигурации

Переходим в панель администратора:

fcb6688f8fbfa94966b2bb185e69bc46.png

Вводим ваш логин и пароль

Далее нужно создать новую конфигурацию пользователя

9aecbb025190e4f33e4fc3369eb84d63.png

Можно задать имя пользователя, лимит трафика и срок сброса лимита, дата истечения конфигурации и примечание

5b80c5cadc95d07abe29f89c6aa808a8.png

Можно добавить как все конфигурации разом, так и выбрать только нужные вам, для XTLS-Reality оставляем только Vless.

912003e255f97d69860451b834a4a790.png

Для копирования ссылки на подписку на конфигурации — первая кнопка (красный), для копирования созданных конфигураций — вторая (синий), для просмотра QR-кодов подписки и конфигураций — третья кнопка (оранжевый)

Детальные настройки Inbounds описаны в Wiki проекта

Рекомендуемые клиенты для устройств:

iOS:
Streisand (iOS 14+)
Shadowrocket (iOS 11+)
FoXray (iOS 16+)

Android:
v2rayNG
Hiddify-Next
NekoBox

Windows:
Hiddify-Next
NekoRay
v2rayN

macOS:
Hiddify-Next
Foxray
V2Box

Работа с Telegram ботом:

Бот не русифицирован, имеет следующий функционал:

6216f5bed5c1caaaab4a657114c4f9c8.png

  • Добавление пользователей вручную и по шаблону

  • перезагрузка xray

  • внесение изменений во все конфигурации пользователей

  • информация о созданных пользователях

  • информация о системе

4. Настройка дополнительных нод

Marzban Node — это приложение на Python, предоставляющее сервис для управления экземпляром ядра Xray. Оно использует RPyC для удаленных вызовов процедур и Docker для контейнеризации. Приложение разработано с учетом требований безопасности и использует самоподписанные SSL-сертификаты для связи между сервисом и его клиентами.

Получение ключа

Открываем настройка узлов и переходим в меню добавление нового узла.

Скачиваем сертификат в файловую систему вашего устройства по нажатию на кнопку скачать сертификат

или, как еще один вариант, вы можете нажать значок просмотреть и скопировать полученное значение.

Теперь переходим на наш узел.

Настройка узла

Обновляем сервер

sudo apt-get update && sudo apt-get upgrade

Устанавливаем curl, socat и git

apt install socat -y && apt install curl socat -y && apt install git -y

Клонируем репозиторий

git clone https://github.com/Gozargah/Marzban-node

Входим в рабочую папку узла

cd Marzban-node

Устанавливаем Docker

curl -fsSL https://get.docker.com | sh

Теперь нам необходимо разместить ключ центальной панели на узле, для этого мы можем скопировать ранее полученный ключ по пути /var/lib/marzban-node/ssl_client_cert.pem

если Вы скопировали значение ключа ранее просто вставив его в нужный файл.

nano /var/lib/marzban-node/ssl_client_cert.pem

После этого, теперь, Вы сможете запустить узел.

docker compose up -d

Теперь вернемся в основную панель

#Настройка панели

Открываем настройки узлов

Заполняем данные узла:

  • Name — Имя узла;

  • Adress — IP адрес/домен/поддомен узла.

  • Port — Оставляем по умолчанию, если не изменяли их.

Оставляем галку, если хотим добавить узел в качестве нового хоста во все входящие

Жмем Добавить узел

Если Вы не нажали галку добавить узел в качестве нового хоста во все входящие, Вы всегда сможете добавить узел в любой inbound, после ее подключения, просто указав ее адрес (IP или домен/суб-домен)

На этом инструкция окончена.

Проект имеет активное сообщество в Telegram https://t.me/gozargah_marzban

© Habrahabr.ru