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

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

  • Существующий сервер Linux (не менее 1ГБ ОЗУ)

Оглавление:

  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)

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

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)

Комментарии (8)


  1. ZL0V0N
    04.11.2023 16:22
    +1

    Доброго времени суток. Подскажите как данный VPN на keenetic интегрировать?


    1. Andrevich Автор
      04.11.2023 16:22

      Как сервер на keenetic? или keenetic как клиент прокси? конкретный способ будет зависеть от выбранного протокола, в целом с помощью entware и нужных пакетов для конкретного протокола, я к сожалению не большой знаток ZyXEL Keenetic


      1. ZL0V0N
        04.11.2023 16:22

        Конечно сделать кинетик клиентом и раздавать потом по локалке доступ кому куда надо


  1. Ivanov86
    04.11.2023 16:22
    +1

    Что лучше Marzban или 3X-UI? Или полные аналоги?


    1. ASD2003ru
      04.11.2023 16:22

      Ставил 3X-UI на vps с 1CPU. Гораздо медленнее чем чистый shadowsock и cloak+shadowsock. Если нужно только для себя то смысл таких комбайнов.


      1. Ivanov86
        04.11.2023 16:22

        У меня сейчас 3X-UI на vps с 1CPU (Официальный репозиторий 3X-UI: https://github.com/MHSanaei/3x-ui ), поэтому и интересуюсь есть ли смысл перейти на Marzban


        1. Andrevich Автор
          04.11.2023 16:22

          И то и то оболочка для xray-core, если работает и устраивает, то замена вам особо ничего не даст, в плане производительности точно


  1. Erbosha
    04.11.2023 16:22

    В latest ветке нету такого способа подключения нодов.

    Инструкции для dev ветки.

    https://github.com/Gozargah/Marzban/commits/master

    https://github.com/Gozargah/Marzban/commits/dev