Установка серверной части AmneziaWG на Ubuntu/Debian VPS

В прошлой статье мы разобрали, как AmneziaWG обманывает DPI с помощью шумовых пакетов, мимикрии под QUIC и шифрования заголовков. Теперь — практика. Будем поднимать сервер. Хорошая новость: вам не нужен мощный VPS. AmneziaWG работает на модуле ядра Linux, а значит, потребляет минимум ресурсов. Хватит самого дешёвого сервера за 2–4 $ в месяц с 1 vCPU и 512 МБ ОЗУ. Если планируете подключать много клиентов или гонять 4K-видео — берите 1 ГБ ОЗУ для комфорта. Что понадобится VPS с Ubuntu 24.04 LTS, Ubuntu 22.04 или Debian 12/13. Поддерживаются и другие версии, но на этих всё проверено. Доступ по SSH с правами root (или sudo). 2 ГБ свободного места на диске — минимум. Лучше 3+. 15–20 минут времени. 💡 Важно: В отличие от Marzban, для AmneziaWG не нужен домен, SSL-сертификат или reverse-proxy. Сервер работает на уровне ядра и общается с клиентами напрямую по UDP. Это одновременно и проще, и безопаснее — меньше поверхности для атаки. Шаг 1. Подготовка сервера ...

🤖 Marzban + WireGuard: автоматизация VPN-сервиса

 Мы настроили WireGuard вручную. Помните этот процесс? Генерация ключей, редактирование конфигов, копирование файлов... Теперь представьте, что у вас не один клиент, а сотня. И каждому нужно выдать конфигурацию, объяснить, как подключиться, и следить за трафиком. Вручную это превращается в бесконечный цикл монотонных операций. Пора это автоматизировать.


🚀 Вместо введения: почему ручная настройка — это тупик

В прошлой статье мы разобрали, как поднять WireGuard на сервере: сгенерировать ключи, прописать AllowedIPs, открыть порт в UFW. Это работает — но только пока клиентов один-два. Когда их становится десять, двадцать, сто, вы начинаете тратить часы на рутину: создать пользователя, сгенерировать пару ключей, добавить [Peer] в конфиг сервера, перезапустить интерфейс, отправить конфиг клиенту, объяснить, как его импортировать.

И тут на сцену выходит Marzban — панель управления, которая берёт всю эту рутину на себя. Вы создаёте пользователя в веб-интерфейсе, нажимаете кнопку — и Marzban сам генерирует ключи, добавляет пира, формирует конфиг и выдаёт ссылку-подписку с QR-кодом.

💡 Важно: Marzban изначально создавался для Xray-протоколов (VLESS, VMess, Trojan, Shadowsocks). WireGuard подключается через отдельные ноды или через маршрутизацию WARP. Мы разберём оба подхода.


🧠 Часть 1. Что такое Marzban и как он устроен

Архитектура

Marzban — это веб-приложение, написанное на Python (бэкенд, FastAPI) и React (фронтенд). В основе лежит Xray-core — движок для проксирования, который умеет работать с множеством протоколов, включая WireGuard как outbound (исходящее соединение).

Панель состоит из нескольких компонентов:

📋 Компоненты Marzban и их назначение

Компонент Назначение
Marzban (панель) Веб-интерфейс и API для управления пользователями
Marzban-node Отдельный сервер или сервис, который предоставляет VPN-подключения
MySQL База данных для хранения пользователей, трафика и статистики
Xray-core Движок, который обрабатывает трафик

Таблица обновлена в рамках серии статей о WireGuard и Marzban

Ключевая особенность Marzban — поддержка множества нод. Вы можете держать панель на одном сервере, а ноды (серверы, через которые идёт трафик) — на других. Это позволяет масштабироваться горизонтально: добавили сервер, подключили ноду — и у вас новый узел для клиентов.

Зачем это нужно

Представьте, что у вас 100 клиентов. Каждому нужно:

  • Создать учётную запись
  • Выдать конфигурацию
  • Установить лимит трафика (например, 50 ГБ)
  • Установить срок действия (например, 30 дней)
  • Отслеживать, кто активен

Вручную это часы работы. С Marzban — минуты. Вы создаёте пользователя в панели, указываете лимиты, нажимаете «Создать» — и Marzban сам генерирует ключи, добавляет пира, формирует конфиг и выдаёт ссылку-подписку.


📋 Часть 2. Что понадобится

📋 Что понадобится для установки Marzban

Компонент Требования
Сервер (VPS) Ubuntu 22.04 / Debian 12, минимум 1 CPU, 1 ГБ RAM, 10 ГБ диска
Домен Например, panel.example.com - для доступа к панели
Docker Установим по ходу
Caddy Для HTTPS и reverse proxy
Базовые знания Linux Умение работать в командной строке

Таблица обновлена в рамках серии статей о WireGuard и Marzban


🐳 Часть 3. Установка Marzban

Шаг 1. Подготовка сервера

Подключитесь к серверу по SSH и обновите систему:

ssh root@ваш_сервер

apt update && apt upgrade -y

Шаг 2. Установка Docker

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

Проверьте:

docker --version

docker compose version

Шаг 3. Установка Marzban

Создайте директорию и запустите официальный скрипт установки:

mkdir -p /opt/marzban && cd /opt/marzban

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

По умолчанию установщик использует SQLite. Если вы хотите MySQL, добавьте флаг     --database mysql 

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

Скрипт задаст несколько вопросов:

  • Домен для панели — введите ваш домен (например, panel.example.com)
  • Порт для панели — оставьте по умолчанию (8000)

После установки Marzban запустится автоматически. 

Проверьте

marzban status

Вы должны увидеть, что контейнеры marzban и marzban-mysql работают.

Шаг 4. Создание администратора

marzban cli admin create --sudo

Введите логин и пароль. Запомните их — они понадобятся для входа в панель.

Шаг 5. Настройка Caddy для панели

Откройте Caddyfile:

nano /etc/caddy/Caddyfile

Добавьте блок:

panel.example.com {

    reverse_proxy localhost:8000

}

Перезагрузите Caddy:

systemctl reload caddy

Теперь панель доступна по адресу https://panel.example.com.


🔌 Часть 4. Настройка WireGuard-ноды

Marzban работает с нодами — это отдельные серверы или сервисы, которые предоставляют VPN-подключения. Для WireGuard нам нужно добавить отдельную ноду.

Шаг 1. Установка Marzban-node

На том же сервере (или на отдельном) установите Marzban-node:

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

Шаг 2. Генерация сертификата

Marzban и Marzban-node общаются через защищённое соединение. Сгенерируйте сертификат:

mkdir -p /var/lib/marzban-node

openssl req -x509 -nodes -newkey rsa:2048 \

  -keyout /var/lib/marzban-node/ssl_key.pem \

  -out /var/lib/marzban-node/ssl_cert.pem \

  -days 365 -subj "/CN=marzban-node"

Шаг 3. Подключение ноды к панели

В панели Marzban:

  1. Перейдите в раздел «Ноды» (Nodes)
  2. Нажмите «Добавить ноду»
  3. Введите имя ноды и адрес
  4. Скопируйте сгенерированный сертификат

На сервере вставьте сертификат в конфигурацию Marzban-node:

nano /opt/marzban-node/docker-compose.yml

Убедитесь, что в SERVICE_PROTOCOL: "REST" и указан правильный порт. Перезапустите ноду:

marzban-node restart

Через несколько секунд в панели появится статус «Connected».


👤 Часть 5. Добавление клиента через панель

Теперь самое интересное — создание пользователя без единой команды в терминале.

Шаг 1. Создание пользователя

В панели Marzban:

  1. Перейдите в раздел «Пользователи» (Users)
  2. Нажмите «Добавить пользователя»
  3. Заполните поля:
    • Имя пользователя — например, ivan
    • Лимит трафика — например, 50 GB
    • Срок действия — например, 30 дней
    • Протокол — выберите WireGuard
  4. Нажмите «Создать»

Шаг 2. Получение конфигурации

После создания пользователя Marzban автоматически сгенерирует:

  • Ссылку на подписку (subscription link) — пользователь может добавить её в приложение
  • QR-код — для быстрого подключения с телефона
  • Конфигурационный файл — для ручного импорта

Шаг 3. Генерация QR-кода

В карточке пользователя нажмите на иконку QR-кода. Откроется изображение, которое можно:

  • Показать пользователю для сканирования
  • Скачать и отправить в Telegram
  • Распечатать

Как это работает для клиента:

  1. Пользователь открывает приложение WireGuard на телефоне
  2. Нажимает «Добавить туннель» → «Сканировать QR-код»
  3. Наводит камеру на код — туннель создаётся автоматически
  4. Подключается одним нажатием

🌐 Часть 6. Интеграция с Caddy: единый домен для всего

Если у вас уже есть Caddy, можно сделать так, чтобы всё работало через один домен:

  • Панель → panel.example.com
  • Подписки → vpn.example.com/sub/...
  • API → vpn.example.com/api/...

Шаг 1. Настройка Caddyfile

Откройте Caddyfile:

nano /etc/caddy/Caddyfile

Добавьте блок для Marzban API:

vpn.example.com {

    # API Marzban для подписок

    handle /sub/* {

        reverse_proxy localhost:8000

    }

    handle /api/* {

        reverse_proxy localhost:8000

    }

    # Основной сайт

    root * /opt/vpn-service/static

    file_server

}

📋 Сравнение: ручная настройка vs Marzban

Критерий Ручная настройка WireGuard Marzban + WireGuard
Создание клиента 5–10 минут вручную 30 секунд через панель
Генерация QR-кода Сторонние сервисы Автоматически
Управление подписками Нет Встроено
Статистика трафика Нет Есть
Ограничение по трафику Вручную через iptables Автоматически
Срок действия Вручную Автоматически
Интеграция с Telegram Нет Есть
Множество нод Вручную Поддерживается
Сложность настройки Низкая Средняя

Таблица обновлена в рамках серии статей о WireGuard и Marzban

Перезагрузите Caddy:

systemctl reload caddy

Шаг 2. Проверка

Откройте в браузере ссылку на подписку (её вы получили при создании пользователя). Она должна открыться и показать конфигурацию.


📊 Часть 7. Сравнительная таблица: ручная настройка vs Marzban


🎯 Часть 8. Что мы узнали?

Marzban превращает WireGuard из «набора команд» в полноценный сервис:

  • Автоматизация — создание клиентов за 30 секунд вместо 10 минут
  • Удобство — QR-коды и подписки для мобильных устройств
  • Контроль — статистика трафика, лимиты, сроки действия
  • Масштабируемость — можно добавить сотни клиентов без рутины
  • Гибкость — завтра можно добавить VLESS+Reality для обхода DPI

Главный вывод: если вы планируете продавать VPN-подписки, Marzban — это то, что сэкономит вам часы работы каждый день.


🔜 Что дальше?

В следующей статье мы разберём генерацию QR-кодов и настройку подписок более подробно: как автоматизировать выдачу конфигураций, как настроить обновление подписок и как интегрировать это с Telegram-ботом для удобства пользователей.

Оставайтесь на связи! 🚀


📚 Источники

Материалы подготовлены на основе открытых источников:

  1. GitHub — Gozargah/Marzban — официальный репозиторий панели
  2. Marzban Documentation — официальная документация
  3. GitHub — Marzban-scripts — скрипты установки
  4. GitHub — marz-warp — автоматическая настройка WARP для Marzban
  5. Pikabu — обзоры и инструкции по Marzban
  6. Linux.org.ru — обсуждение Double VPN на Marzban и WireGuard
  7. GitHub Issue #1969 — интеграция Marzban с Caddy через reverse proxy

 

Комментарии

Популярные сообщения

🧬 ChaCha20 и Curve25519: Криптография под капотом WireGuard

Немного о том, зачем это нужно.

🔌 L2TP: протокол, который объединил лучшее от двух миров

⚡ ИИ-помощник (на OpenRouter)

Спросите про VPN, протоколы или настройку серверов.