Marzban — веб-панель и REST-API поверх Xray-core для управления прокси-учётками и нодами. Поддерживает VLESS, VMess, Trojan, Shadowsocks, множественные протоколы у одного пользователя, подписки, мульти-нодовую схему (Marzban-node), TLS и REALITY.
Быстрый старт: устанавливаем Marzban на чистый Debian/Ubuntu
0) Подготовка сервера (UFW, hostname)
sudo apt update && sudo apt -y full-upgrade
sudo apt install -y curl wget ca-certificates ufw lsb-release
sudo hostnamectl set-hostname panel.example.com
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp comment 'SSH'
sudo ufw allow 80,443/tcp comment 'Web/SSL'
sudo ufw --force enable
1) Marzban установка (рекомендованный автоскрипт, Docker)
Команда поставит Docker, создаст marzban-CLI, сложит данные в /var/lib/marzban, файлы стека — в /opt/marzban, и запустит панель на :8000.
sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install
marzban cli admin create --sudo
# Панель: http://203.0.113.10:8000/dashboard/
Где что лежит и как править .env: см. раздел «Installation».
Включаем SSL для панели и подписок (два рабочих способа)
Чтобы подписки и панель Marzban открывались по https, используйте один из вариантов из официальных гайдов.
Caddy (самый простой — сам выдаст сертификат)
В /opt/marzban/docker-compose.yml добавьте сервис caddy (пример в доке).
Создайте /opt/marzban/Caddyfile:
panel.example.com {
reverse_proxy unix//var/lib/marzban/marzban.socket
}
В .env пропишите:
UVICORN_UDS=/var/lib/marzban/marzban.socket
XRAY_SUBSCRIPTION_URL_PREFIX=https://panel.example.com
Перезапуск:
marzban restart
SSL включится автоматически, панель и подписка будут доступны по https.
Uvicorn c готовым сертификатом (acme.sh)
Выпустите сертификат (standalone через acme.sh) прямо в путь Marzban:
apt install -y curl socat
curl https://get.acme.sh | sh -s [email protected]
mkdir -p /var/lib/marzban/certs
~/.acme.sh/acme.sh --issue --force --standalone -d panel.example.com \
--fullchain-file "/var/lib/marzban/certs/panel.example.com.cer" \
--key-file "/var/lib/marzban/certs/panel.example.com.cer.key"
Укажите SSL-файлы и префикс подписки в /opt/marzban/.env:
UVICORN_PORT=443
UVICORN_SSL_CERTFILE=/var/lib/marzban/certs/panel.example.com.cer
UVICORN_SSL_KEYFILE=/var/lib/marzban/certs/panel.example.com.cer.key
XRAY_SUBSCRIPTION_URL_PREFIX=https://panel.example.com
Перезапуск:
marzban restart
Готово: панель и подписка по https.
Если хотите разнести домены панели и подписки — в .env используйте свой XRAY_SUBSCRIPTION_URL_PREFIX (порт указывать обязательно, если не 443).
«Панель Marzban»: базовая работа и где править конфиги
Главные настройки ядра Xray — в Core Settings (панель → Core Settings). Тут описываются Inbounds — какие протоколы слушать, на каких портах, TLS/REALITY и т. д.
Готовые «рецепты» инбаундов (VLESS REALITY, VLESS WS/TLS, gRPC, SplitHTTP и пр.) приведены в «Xray Inbounds». Путь к сертификатам, пример тега, короткий shortId/ключи REALITY — там.
Чтобы включить подписки, достаточно иметь валидный SSL и (при необходимости) проставить XRAY_SUBSCRIPTION_URL_PREFIX в .env.
Настройка VLESS в Marzban: два практических варианта
Вариант 1. VLESS + REALITY (невидимый HTTPS-трафик без своего серта)
1. Сгенерируйте ключи и shortId в контейнере (или на хосте):
docker exec marzban-marzban-1 xray x25519
openssl rand -hex 8
2.В Core Settings добавьте VLESS TCP REALITY (пример из дока). Задайте:
port: 443
dest/serverNames: реальный TLS-хост (например, google.com:443 / www.cloudflare.com)
privateKey: из шага выше
shortIds: из openssl rand -hex 8
Пошаговый пример и пояснения полей — в официальном разделе Core Settings/Inbounds.
publicKey можно не прописывать — Marzban сгенерирует его из privateKey.
Вариант 2. VLESS + WS + TLS (классика под свой домен)
1. Выпустите SSL для домена (см. выше).
2. В Core Settings добавьте VLESS WS TLS (порт 443, path: "/", в tlsSettings.certificates укажите файлы в /var/lib/marzban/certs/...). Пример блоков VLESS XHTTP/HTTPUpgrade/SplitHTTP/WS TLS — в «Xray Inbounds».
После сохранения перезапустите ядро (кнопка Restart/Xray в панели). Клиентские ссылки/QR появятся в карточке пользователя и в Subscription.
Marzban протоколы: что доступно «из коробки»
VLESS (TCP/REALITY, TLS: WS/HTTPUpgrade/SplitHTTP/XHTTP, gRPC и др.)
VMess, Trojan, Shadowsocks — добавляются как инбаунды в Core Settings, после чего становятся доступны для пользователей/подписок. Обширные примеры JSON — в «Xray Inbounds».
Если в выпадающем списке протоколов что-то «пропало» — просто проверьте, что соответствующий Inbound есть в конфиге ядра (после рестарта всё появится).
Подписки (все конфиги одним URL)
1. Убедитесь, что SSL активирован (см. шаги выше).
2. Если домен подписки отличный от домена панели — пропишите XRAY_SUBSCRIPTION_URL_PREFIX=https://sub.example.com:443 в .env и marzban restart.
3. Дальше подписка генерится автоматически для каждого пользователя (через панель/бот/CLI). 
Marzban сервер + ноды (Marzban-node) — масштабируемся
Чтобы распределить нагрузку и иметь сервера в разных регионах, поднимайте Marzban-node и подключайте к панели:
Установка Marzban-node на рабочей ноде
# Быстрая установка/обновление (рекомендовано доками)sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban-node.sh)" @ install
Дальше в панели: Nodes → Add New Marzban Node → Show Certificate — скопируйте клиентский сертификат на ноду (обычно /var/lib/marzban-node/ssl_client_cert.pem) и запустите ноду. Полный гайд — в «Marzban node».
Полезные твики и диагностика
Открываем порты и проверяем службы
sudo ufw allow 8000/tcp # если панель без обратного прокси
sudo ufw allow 443/tcp # TLS/REALITY/панель под SSL
sudo ss -ltnup | grep -E ':8000|:443'
Логи и статус
marzban logs # логи панели (Docker)
journalctl -u docker -e --no-pager
Нужна marzban установка под ключ или настройка vless marzban (REALITY/WS+TLS), интеграция Marzban-node по регионам, выпуск и автопродление SSL, подписки, Telegram-бот, мониторинг и бэкапы? HSTQ развернёт, укрепит и сопроводит вашу панель Marzban на проде.
Короткий чеклист команд
# 1) Установка панелиsudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install
marzban cli admin create --sudo # логин в http://IP:8000/dashboard/
# 2) SSL (быстро через Caddy)
# Caddyfile: panel.example.com { reverse_proxy unix//var/lib/marzban/marzban.socket }echo 'UVICORN_UDS=/var/lib/marzban/marzban.socket
XRAY_SUBSCRIPTION_URL_PREFIX=https://panel.example.com' | sudo tee -a /opt/marzban/.env
marzban restart
# 3) VLESS REALITY: x25519 + shortId и добавьте inbound в Core Settingsdocker exec marzban-marzban-1 xray x25519
openssl rand -hex 8
# 4) Нодаsudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban-node.sh)" @ install