Устанавливаем и настраиваем прокси-сервер Marzban
В данной статье рассмотрим установку и настройку (VPN) сервера Marzban, настройка конфигураций клиентов и настройка дополнительных нод (масштабирование)
Понадобятся:
- Существующий сервер Linux (не менее 1ГБ ОЗУ)
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 или домен/суб-домен)
На этом инструкция окончена.
