В данной статье рассмотрим установку и настройку (VPN) сервера Marzban, настройка конфигураций клиентов и настройка дополнительных нод (масштабирование)
Понадобятся:
Существующий сервер Linux (не менее 1ГБ ОЗУ)
Оглавление:
Кратко о Marzban
Установка Marzban
Настройка клиентской конфигурации
Настройка дополнительных нод
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)
Несколько языков
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 пользователя-администратора
3. Настройка клиентской конфигурации
Переходим в панель администратора:
Вводим ваш логин и пароль
Далее нужно создать новую конфигурацию пользователя
Можно задать имя пользователя, лимит трафика и срок сброса лимита, дата истечения конфигурации и примечание
Можно добавить как все конфигурации разом, так и выбрать только нужные вам, для XTLS-Reality оставляем только Vless.
Для копирования ссылки на подписку на конфигурации - первая кнопка (красный), для копирования созданных конфигураций - вторая (синий), для просмотра 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 ботом:
Бот не русифицирован, имеет следующий функционал:
Добавление пользователей вручную и по шаблону
перезагрузка 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
Также рекомендую статьи по другим решениям для настройки прокси сервера 3X-UI: Shadowsocks-2022 & XRay (XTLS) сервер с простой настройкой и приятным интерфейсом / Хабр (habr.com) и Bleeding-edge обход блокировок с полной маскировкой: настраиваем сервер и клиент XRay с XTLS-Reality быстро и просто / Хабр (habr.com)