Свой VPN-сервер AmneziaWG 2.0 / 3.0 одной командой

Превратите чистый VPS с Ubuntu или Debian в self-hosted VPN с обходом DPI и блокировок. Без Docker, без веб-панели, без знаний Linux.

На серверах со свежим ядром ставится модуль третьей линии, а профиль конфигурации остаётся 2.0: он одинаков на сервере и у клиентов, поэтому уже выданные конфиги работают без правок. Проверить, что стоит у вас

$ wget -O install_amneziawg.sh https://github.com/bivlked/amneziawg-installer/releases/latest/download/install_amneziawg.sh
$ chmod +x install_amneziawg.sh
$ sudo bash ./install_amneziawg.sh

Берите актуальную версию со страницы релизов. Три команды, две перезагрузки, около двадцати минут до готового VPN.

Лицензия MIT Ubuntu и Debian x86_64 и ARM64 Без зависимостей в рантайме 1100+ автотестов

Что это даёт

AmneziaWG - это WireGuard с обфускацией трафика, поэтому для DPI handshake уже не выглядит как обычный VPN. Скрипт настраивает весь сервер за вас.

Вы даёте команду свежему VPS по SSH. Она ставит модуль ядра AmneziaWG, закрывает firewall, включает форвардинг, оптимизирует систему под одну задачу и создаёт первого клиента. В конце вы получаете QR-код и vpn-ссылку для импорта в Amnezia Client в одно касание. Добавить ещё устройство потом - одна команда.

Возможности

Всё, что нужно небольшому VPN-серверу, с разумными настройками по умолчанию и без правки конфигов вручную.

Обход DPI

Полная обфускация AmneziaWG 2.0: мусорные пакеты, маскировка заголовков (H1-H4), паддинг (S1-S4) и пакеты сокрытия I1-I5.

Защита по умолчанию

Firewall UFW с deny-all и лимитом на SSH, Fail2Ban, строгие права на файлы и hardening через sysctl.

Управление клиентами

Добавление, удаление, список и перегенерация. QR-коды, vpn-ссылки для импорта в одно касание и гостевые конфиги с датой истечения.

IPv6

В профиле по умолчанию IPv6 устройства уходит в туннель и там глохнет, наружу со своим адресом он не выходит. Пока такой VPN включён, ресурсы только по IPv6 недоступны, и локальная сеть по IPv6 тоже; по IPv4 она остаётся доступной. Нужен рабочий IPv6 в туннеле - --allow-ipv6-tunnel при нативном IPv6 на сервере.

ARM и Raspberry Pi

Готовые модули ядра для Raspberry Pi 3, 4 и 5, Hetzner CAX, Oracle Ampere A1 и AWS Graviton.

Переживает перезагрузки

Машина состояний с возобновлением после ребута. После обновления ядра DKMS сам собирает модуль под новое ядро, а на ARM с готовым модулем его ставит повторный запуск установщика.

Понимает скрипты и ботов

Почти все команды управления понимают --json и отвечают одним объектом даже при сбое (list и stats отдают массив). На этом уже работает сторонний Telegram-бот.

Мобильные операторы

Флаг --mobile включает профиль под сотовые сети и, если порт не задан явно, берёт 443/udp: нестандартные UDP-порты у операторов часто не проходят.

Быстрый старт

От чистого VPS до работающего VPN за три шага.

  1. Арендуйте чистый VPS с Ubuntu или Debian и подключитесь по SSH под root.

  2. Запустите команду выше. Скрипт сам перезагрузит сервер, когда нужно. После ребута запустите её снова - она продолжит с того места, где остановилась.

  3. Отсканируйте QR-код или откройте vpn-ссылку в Amnezia Client. Готово, вы подключены.

Для автоматизации тот же скрипт принимает --yes --route-all и любой другой параметр флагом. Полный гайд покрывает выбор VPS, нюансы ARM, диагностику и удаление.

Поддерживаемые системы

Проверено на чистых минимальных серверных установках. Обновления ядра обрабатываются автоматически через DKMS, а на ARM-серверах с готовой сборкой модуль возвращает команда repair-module.

Ubuntu 24.04 LTS Debian 13 trixie Ubuntu 26.04 Ubuntu 25.10 Debian 12 bookworm

Для нового сервера: Ubuntu 24.04 LTS или Debian 13 - выбор по умолчанию, Ubuntu 26.04 тоже подойдёт.

Ubuntu 25.10 и Debian 12 ставятся и работают, но для нового сервера их лучше не брать. У Ubuntu 25.10 поддержка закончилась 1 июля 2026, и обновлений безопасности не выходит вообще никаких: это промежуточный выпуск, продлевать его не будут. У Debian 12 обычная поддержка кончилась 11 июля 2026, обновления безопасности идут через Debian LTS до 30 июня 2028.

Рассчитано на скромный бюджет: 1 vCPU, от 512 МБ памяти, 5 ГБ диска. И amd64, и arm64.

Почему обычный bash-скрипт

Работает как модуль ядра, и между вами и туннелем нет ничего лишнего.

Веб-панель оправдана только если вы постоянно заводите и меняете клиентов. У большинства VPN-сервер настраивается один раз и забывается, так что bash-подход держит след минимальным и спокойно работает на самом дешёвом VPS. Модуль в ядре быстрее, чем туннель в userspace, и нет ничего лишнего, что нужно патчить. Если вам всё же хочется UI или другой компромисс - в сравнении в README честно написано, когда другой инструмент подойдёт лучше. А чем он отличается от официального приложения Amnezia - на отдельной странице.

Частые вопросы

Что такое AmneziaWG?
Форк WireGuard от команды Amnezia. Обычный WireGuard можно узнать по первому же пакету: у него фиксированная сигнатура. AmneziaWG её убирает - шлёт отдельные junk-пакеты, добавляет паддинг к сообщениям протокола, подставляет вместо фиксированных идентификаторов значения из настраиваемых диапазонов и может прятать рукопожатие за маскирующим пакетом I1. Распознать соединение становится труднее, но гарантий против любого оператора это не даёт. Установщик поднимает такой сервер модулем ядра, поэтому потеря скорости минимальная.
Это бесплатно?
Да, установщик бесплатный: открытый код под лицензией MIT. Платите только за VPS - от 3 до 5 долларов в месяц.
Нужны ли знания Linux?
Нет, знания Linux не нужны: вы вставляете одну команду в SSH на чистом VPS. Скрипт сам ставит модуль ядра, настраивает firewall и форвардинг, создаёт первого клиента и печатает QR-код и vpn-ссылку.
Какой VPS выбрать?
Чистый VPS с Ubuntu или Debian, 1 vCPU и от 512 МБ памяти. Скрипт рассчитан на отдельный VPS, а не на домашний роутер или shared-хостинг. Отдельно проверьте, даёт ли хостер аварийную консоль и работает ли она: это самый простой путь назад, если SSH перестал отвечать - после перезагрузки или из-за правила фаервола. Если её нет, вернуться получится намного дольше: через поддержку, откат из снапшота или переустановку. И если SSH у вас на нестандартном порту, укажите его при установке флагом --ssh-port=ПОРТ. Установщик определяет порт и сам, но при установке с --yes подтверждения не будет, и проверить его окажется некому.
Обходит ли DPI и блокировки?
AmneziaWG 2.0 добавляет обфускацию поверх WireGuard и сопротивляется DPI, который применяют ТСПУ в России, а также в Иране, Китае и в школьных и корпоративных сетях. Гарантии против каждого оператора нет, но протокол даёт настройки обфускации, которые проходят сегодня.
Какую версию AmneziaWG ставит установщик - 2.0 или 3.0?
Решает версия ядра, а не название дистрибутива. Если на сервере ядро 6.7 или новее, модуль приезжает из официального PPA, и это модуль третьей линии - так выходит на свежих образах Ubuntu 24.04 и новее и Debian 13. Какая линия работает у вас, отвечает одна команда на сервере: cat /sys/module/amneziawg/version. На ядрах старее 6.7 ставится закреплённый модуль 2.0, собранный из исходника: третья линия там не валидирована, поэтому мы держим вторую сознательно. ARM-серверы, для которых у нас есть готовая сборка, получают её и тоже остаются на 2.0. Конфигурации при этом одинаковые - параметры 2.0 Jc/Jmin/Jmax, S1-S4, H1-H4 и маскирующий пакет I1; новые возможности третьей линии установщик не включает, поэтому ранее выданные конфиги менять не нужно.
Работает ли на ARM и Raspberry Pi?
Да, готовые модули ARM64 покрывают Raspberry Pi 3, 4 и 5, Hetzner CAX, Oracle Ampere A1 и AWS Graviton. Та же команда выберет нужный.
Как обновиться на новую версию?
Скачайте скрипт нового релиза на тот же сервер и запустите его с флагом --force. Ключи сервера, клиенты и настройки обфускации переживают переустановку. После обновления ядра DKMS сам собирает модуль под новое ядро. На ARM с готовым модулем повторный запуск установщика ставит модуль под текущее ядро.
Можно ли управлять из скрипта или бота?
Да, почти все команды управления принимают --json и отвечают одним JSON-объектом даже тогда, когда команда завершилась ошибкой - разбирать ответ можно всегда. Исключения: list и stats отдают массив, а show и diagnose флага не понимают. Новые поля со временем появляются, существующие я не переименовываю. Для запусков без человека есть --yes, а с AWG_STRICT_CONFIRM=1 команда вроде удаления клиента откажется работать, если --yes забыли, вместо молчаливого согласия. На этом интерфейсе уже работает сторонний Telegram-бот awgram.
AmneziaWG не подключается, хотя обычный WireGuard работает?
Чаще всего это рассинхрон обфускации или версий, а не сеть. Если на том же сервере обычный WireGuard поднимается, а AmneziaWG нет, сверьте на сервере и клиенте параметры секции [Interface]. Совпадать обязаны S1-S4 и H1-H4: приёмник срезает этот паддинг и проверяет эти заголовки, поэтому любое расхождение здесь означает, что пакет отброшен и хендшейк не сойдётся. В 2.0 H1-H4 задаются диапазонами - диапазоны должны быть одинаковыми на обеих сторонах. А Jc/Jmin/Jmax и маскирующие пакеты 2.0 I1-I5 совпадать не обязаны: это отдельные пакеты-обманки, вторая сторона их отбрасывает, а узел без I1 просто не шлёт их вовсе. Регистр у I1-I5 при этом важен: только верхний. Сверьте и версии: старые сборки amneziawg-tools не понимают 2.0. Полный разбор - в подробном руководстве по диагностике.