Установка серверной части 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. Подготовка сервера ...

📱 QR-коды и подписки: как подключать клиентов за 30 секунд

 В прошлой статье мы настроили Marzban и добавили первого клиента через панель. Но настоящая магия начинается, когда клиент получает доступ к своему VPN-профилю в один клик — без ручного ввода ключей, без копирования конфигов, без объяснений «скачай файл, открой приложение, импортируй...».

Сегодня мы разберём, как работает система подписок в Marzban, как генерируются QR-коды и как сделать так, чтобы подключение к вашему VPN занимало ровно 30 секунд.


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

Раньше для подключения к VPN нужно было:

  1. Получить файл конфигурации от администратора
  2. Скачать его на устройство
  3. Открыть VPN-клиент
  4. Импортировать файл вручную
  5. Проверить, что всё работает

Если администратор менял сервер — процедура повторялась заново. А если у клиента было три устройства? Умножьте всё на три.

Система подписок решает эту проблему раз и навсегда. Клиент получает одну ссылку, которая автоматически обновляется при любых изменениях на сервере. Добавили новый сервер? Клиент просто нажимает «Обновить подписку» — и всё работает.

А QR-код — это тот же принцип, но ещё проще. Клиент открывает приложение, сканирует код камерой — и туннель создаётся автоматически. Никаких файлов, никаких настроек.


🧠 Часть 1. Как устроена система подписок в Marzban

Архитектура подписки

Когда вы создаёте пользователя в Marzban, панель автоматически генерирует ссылку-подписку. Она выглядит так:

https://{XRAY_SUBSCRIPTION_URL_PREFIX}/{XRAY_SUBSCRIPTION_PATH}/{JWT_TOKEN}/{KEY}

Разберём каждую часть:

📋 Элементы ссылки-подписки в Marzban

Элемент Что это Пример
XRAY_SUBSCRIPTION_URL_PREFIX Домен для подписок https://panel.example.com
XRAY_SUBSCRIPTION_PATH Префикс пути (по умолчанию sub) sub
JWT_TOKEN Токен аутентификации eyJhbGciOiJIUzI1NiIs...
KEY Дополнительные параметры /info, /usage, /clash

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

Полная ссылка выглядит так:

https://panel.example.com/sub/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.../info

💡 Важно: Ссылка-подписка работает только по HTTPS. Если у вас нет SSL-сертификата, подписка не будет работать. Именно поэтому мы настраивали Caddy для панели в прошлой статье.

Что такое JWT-токен

JWT (JSON Web Token) — это закодированный «паспорт» пользователя. Он содержит:

json

{

  "sub": "username",

  "access": "subscription",

  "iat": 1621357861

}

  • sub — имя пользователя
  • access — уровень доступа (subscription)
  • iat — время выдачи токена

Токен генерируется автоматически каждый раз, когда вы открываете страницу подписки. Его нельзя предустановить или отредактировать — это гарантирует безопасность.

Что получает клиент

Когда клиент открывает ссылку-подписку в браузере, Marzban показывает специальную страницу с:

  • QR-кодом для быстрого подключения
  • Ссылками для импорта в популярные приложения
  • Инструкциями для каждой платформы
  • Информацией о подписке: срок действия, использованный трафик, лимиты

Эта страница называется subscription page.


📊 Часть 2. Что умеет стандартная страница подписки

Стандартная страница Marzban уже неплохо справляется со своей задачей. Вот что она показывает:

📋 Функции стандартной страницы подписки

Функция Описание
QR-код Автоматически сгенерированный код для сканирования
Ссылки для импорта Deep links для iOS, Android, Windows, macOS
Инструкции Пошаговые руководства для каждой ОС
Статистика Использованный трафик, оставшиеся дни
Копирование Кнопка для копирования ссылки в буфер обмена

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

Но стандартная страница выглядит довольно просто. Если вы хотите брендированную страницу с вашим логотипом, цветами и инструкциями — её можно заменить на кастомный шаблон.


🎨 Часть 3. Установка кастомной страницы подписки

Шаг 1. Выбор шаблона

В сообществе Marzban есть несколько готовых шаблонов. Вот самые популярные:

📋 Популярные шаблоны страниц подписки

Шаблон Особенности Ссылка
Marzbanner Bootstrap CSS, QR-код, инструкции для всех ОС GitHub
x0sina/marzban-sub Поддержка 3 языков, привлекательный дизайн GitHub
ryabkov82/marzban-sub-page Один файл, все стили и скрипты встроены GitHub
shayannjn/Marzban-template Одно-кликовое QR-кодирование, мульти-ОС GitHub

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

Шаг 2. Установка шаблона

Рассмотрим установку на примере Marzbanner (рекомендую для начала):

1. Создайте директорию для шаблонов:

sudo mkdir -p /var/lib/marzban/templates/subscription/

2. Скачайте шаблон:

sudo wget -N -P /var/lib/marzban/templates/subscription/ 

https://raw.githubusercontent.com/streletskiy/marzban-sub-page/main/index.html

3. Активируйте кастомный шаблон:

Откройте файл /opt/marzban/.env:

sudo nano /opt/marzban/.env

Добавьте (или раскомментируйте) строки:

CUSTOM_TEMPLATES_DIRECTORY="/var/lib/marzban/templates/"

SUBSCRIPTION_PAGE_TEMPLATE="subscription/index.html"

4. Перезапустите Marzban:

marzban restart

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

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


🔗 Часть 4. Как работает QR-код

Что закодировано в QR-коде

QR-код на странице подписки содержит deep link — специальную ссылку, которая открывает VPN-клиент и автоматически добавляет подписку.

Например, для V2RayNG (Android) deep link выглядит так:

v2rayng://install-sub?url=https://panel.example.com/sub/TOKEN&name=MyVPN

Для Streisand (iOS):

streisand://import/https://panel.example.com/sub/TOKEN#MyVPN

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

  1. Клиент открывает страницу подписки на телефоне
  2. Видит QR-код
  3. Открывает VPN-клиент (V2RayNG, Streisand, Hiddify и т.д.)
  4. Нажимает «Добавить подписку» → «Сканировать QR-код»
  5. Наводит камеру на код
  6. Подписка добавляется автоматически
  7. Клиент нажимает «Подключиться» — и всё работает

Время подключения: 30 секунд. Реально.

Поддерживаемые клиенты

Marzban поддерживает deep links для огромного количества приложений. Вот основные:

📋 Поддерживаемые клиенты и Deep Links

Платформа Клиент Deep Link
Android V2RayNG v2rayng://install-sub?url=...
Android Hiddify hiddify://install-config/?url=...
Android NekoBox nekobox://install-sub?url=...
iOS Streisand streisand://import/...
iOS Shadowrocket sub://...
iOS V2Box v2box://install-sub?url=...
iOS Sing-box sing-box://import-remote-profile?url=...
Windows Hiddify hiddify://install-config/?url=...
Windows NekoRay sn://subscription?url=...
macOS ClashX clashx://install-config?url=...

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

📊 Часть 5. Сравнение: ручное подключение vs подписка

📋 Сравнение: ручное подключение vs подписка + QR-код

Критерий Ручное подключение Подписка + QR-код
Время подключения 5–10 минут 30 секунд
Нужен файл конфига Да Нет
Ручной ввод ключей Да Нет
Обновление при смене сервера Вручную Автоматически
Поддержка нескольких устройств Нужно настраивать каждое Одна ссылка для всех
Удобство для клиента Сложно Максимально просто

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


🛠 Часть 6. Продвинутая настройка: кастомизация страницы подписки

Добавление логотипа и цветов

Откройте файл шаблона:

nano /var/lib/marzban/templates/subscription/index.html

Найдите секцию с CSS-переменными или цветами. Например, в Marzbanner:

css

:root {

  --primary-color: #38bdf8;

  --background-color: #0b1120;

}

Замените значения на свои. Сохраните файл и перезапустите Marzban:

marzban restart

Добавление ссылки на Telegram-бота

В шаблоне найдите место, где выводится контакт поддержки. Обычно это:

html

<a href="https://t.me/yourID">Поддержка</a>

Замените yourID на имя вашего Telegram-бота или аккаунта.

Настройка языков

Многие шаблоны поддерживают мультиязычность. Например, в x0sina/marzban-sub можно изменить язык по умолчанию, отредактировав тег <select> в конце HTML-файла.


📌 Часть 7. Что мы узнали?

  • Система подписок в Marzban позволяет клиенту подключаться за 30 секунд.
  • QR-код содержит deep link, который автоматически импортирует подписку в VPN-клиент.
  • JWT-токен обеспечивает безопасность — ссылка генерируется автоматически и не может быть подделана.
  • Кастомные шаблоны позволяют заменить стандартную страницу на брендированную с логотипом и инструкциями.
  • Поддерживается огромное количество клиентов — от V2RayNG до Streisand.

🔜 Что дальше?

В следующей статье мы разберём интеграцию Marzban с Caddy: как настроить reverse proxy, чтобы панель, подписки и API работали через один домен с автоматическим HTTPS. А пока — подключайте клиентов за 30 секунд! 🚀


📚 Источники

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

  1. Marzban Documentation — Subscription
  2. GitHub — Akiyamov/marzban-sub-page — шаблон страницы подписки
  3. GitHub — x0sina/marzban-sub — мультиязычный шаблон
  4. GitHub — ryabkov82/marzban-sub-page — однофайловый шаблон
  5. DeepWiki — Marzban Docs — Client Integration
  6. DeepWiki — Marzban Docs — Supported Clients
  7. Marzban Docs (sm1ky) — Подписки
  8. GitHub — Gozargah/Marzban — официальный репозиторий

 

Комментарии

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

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

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

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

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

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