Свой VPN-сервер AmneziaWG 3.1 одной командой

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

Новая установка по умолчанию ставит AmneziaWG 3.1. Роутерам, чья прошивка ещё не поддерживает 3.1 (например, стабильная KeeneticOS), Hiddify и давно не обновлявшимся приложениям нужен 2.0: добавьте --protocol=2.0. На ARM и на ядре старше 6.7 установщик сам ставит 2.0, а уже работающий сервер остаётся на своей версии. Что ставится и как вернуться на 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 Без Docker и веб-панели 2000+ автотестов

Что это даёт

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

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

Возможности

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

Обход DPI

AmneziaWG 3.1 по умолчанию: шифрование заголовков и добавочный паддинг поверх мусорных пакетов, паддинга S1-S4 и маскирующего пакета I1. Профиль 2.0, где заголовки маскируются (H1-H4), а не шифруются, включается одним флагом.

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

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

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

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

IPv6

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

ARM и Raspberry Pi

Готовые модули ядра для Raspberry Pi и для Ubuntu 24.04 и Debian 12/13 на ARM64-серверах (Hetzner CAX, Oracle Ampere A1, AWS Graviton), а где пакета нет - сборка через DKMS. ARM-серверы получают профиль 2.0.

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

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

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

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

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

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

Как установить AmneziaWG 3.1 на свой сервер

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

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

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

  3. Заберите файлы клиента с сервера из /root/awg/ (как это сделать, показано в README), затем добавьте их в приложение: WG Tunnel или AmneziaWG на Android, AmneziaWG на iPhone (QR-код или файл .conf), AmneziaWG на Mac и Windows (файл .conf) (почему эти). Amnezia VPN вместо этого принимает ссылку vpn://. Для сервера 3.1 приложение должно поддерживать 3.1: какие поддерживают.

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

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

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

Ubuntu 24.04 LTS Debian 13 trixie Ubuntu 26.04 Debian 12 bookworm

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

Debian 12 ставится и работает, но для нового сервера его лучше не брать. У Debian 12 обычная поддержка кончилась 11 июля 2026, обновления безопасности идут через Debian LTS до 30 июня 2028. К тому же на его штатном ядре 6.1 ставится AmneziaWG 2.0, а не 3.1. Ubuntu 25.10 с версии 6.0.0 не поддерживается: у неё закончилась поддержка от Canonical.

Рассчитано на скромный бюджет: 1 vCPU, от 512 МБ памяти, от 2 ГБ свободного места на диске (лучше 3 ГБ). И amd64, и arm64.

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

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

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

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

Что такое AmneziaWG?
Форк WireGuard от команды Amnezia. Обычный WireGuard можно узнать по первому же пакету: у него фиксированная сигнатура. AmneziaWG её убирает - шлёт отдельные junk-пакеты, добавляет паддинг к сообщениям протокола, подставляет вместо фиксированных идентификаторов значения из настраиваемых диапазонов и может прятать рукопожатие за маскирующим пакетом I1. Распознать соединение становится труднее, но гарантий против любого оператора это не даёт. Установщик поднимает такой сервер модулем ядра, поэтому потеря скорости минимальная.
Как установить AmneziaWG 3.1 на свой сервер?
Установить AmneziaWG 3.1 на свой сервер можно двумя командами установщика amneziawg-installer: возьмите чистый VPS на x86_64 с Ubuntu 24.04, 26.04 или Debian 13 и запустите его под root. Скачайте скрипт из последнего релиза командой wget -O install_amneziawg.sh https://github.com/bivlked/amneziawg-installer/releases/latest/download/install_amneziawg.sh и запустите его: sudo bash ./install_amneziawg.sh. Понадобятся две перезагрузки: на вопрос «Перезагрузить сейчас?» ответьте y, затем подключитесь снова и повторите вторую команду. Профиль 3.1 ставится по умолчанию, модулем ядра и без Docker; на ARM и на штатном Debian 12 установщик сам поставит 2.0. Другой путь - официальное приложение Amnezia VPN: оно подключается к серверу по SSH и разворачивает AmneziaWG в Docker, а клиентами вы управляете из приложения. Чем подходы отличаются, разобрано на странице сравнения.
Это бесплатно?
Да, установщик бесплатный: открытый код под лицензией MIT. Платите только за VPS - от 3 до 5 долларов в месяц.
Нужны ли знания Linux?
Нет, знания Linux не нужны: вы вставляете одну команду в SSH на чистом VPS. Скрипт сам ставит модуль ядра, настраивает firewall и форвардинг и создаёт двух клиентов. Их конфиги и QR-коды сохраняются на сервере в /root/awg/, а как перенести их на телефон, показано в README.
Какой VPS выбрать?
Чистый VPS с Ubuntu или Debian, 1 vCPU и от 512 МБ памяти. Скрипт рассчитан на отдельный VPS, а не на домашний роутер или shared-хостинг. Отдельно проверьте, даёт ли хостер аварийную консоль и работает ли она: это самый простой путь назад, если SSH перестал отвечать - после перезагрузки или из-за правила фаервола. Если её нет, вернуться получится намного дольше: через поддержку, откат из снапшота или переустановку. И если SSH у вас на нестандартном порту, укажите его при установке флагом --ssh-port=ПОРТ. Установщик определяет порт и сам, но при установке с --yes подтверждения не будет, и проверить его окажется некому.
Обходит ли DPI и блокировки?
AmneziaWG добавляет обфускацию поверх WireGuard и сопротивляется DPI, который применяют ТСПУ в России, а также в Иране, Китае и в школьных и корпоративных сетях. Новая установка получает профиль 3.1, где заголовки пакетов ещё и шифруются. Гарантии против каждого оператора нет, но протокол даёт настройки обфускации, которые проходят сегодня.
Какую версию AmneziaWG ставит установщик - 3.1 или 2.0?
Установщик ставит AmneziaWG 3.1, если вашему серверу и клиентам не нужен 2.0. Профиль 3.1 новая установка получает на x86_64 с ядром 6.7 или новее: шифрование заголовков (HeaderProtectionKey) и добавочный паддинг поверх обфускации 2.0. На ядре старше 6.7 (штатный Debian 12) и на ARM установщик сам ставит 2.0 и объясняет причину в итоговом отчёте. Клиентам без поддержки 3.1, например роутерам на стабильной KeeneticOS, Hiddify и давно не обновлявшимся приложениям, нужен сервер, поставленный с --protocol=2.0. Уже работающий сервер после обновлений остаётся на своей версии. Обычно сменить её - это --uninstall, новая установка и новые профили для всех клиентов; восстановление бэкапа, снятого на другом поколении, тоже её меняет, с предупреждением заранее.
Работает ли на ARM и Raspberry Pi?
Да. Готовые модули ядра есть для Raspberry Pi и для Ubuntu 24.04 и Debian 12/13 на ARM64-серверах вроде Hetzner CAX, Oracle Ampere A1 и AWS Graviton; если пакета под ваше ядро нет, установщик собирает модуль через DKMS. Та же команда выберет нужный путь. ARM-серверы пока получают профиль AmneziaWG 2.0: третья версия на ARM не замерялась.
Как обновиться на новую версию?
Скачайте скрипт нового релиза на тот же сервер и запустите его с флагом --force. Ключи сервера, клиенты и настройки обфускации переживают переустановку, и версия протокола тоже: сервер 2.0 остаётся на 2.0. После обновления ядра 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 это диапазоны, в профиле 3.1 - 1-4. Серверу 3.1 нужен ещё одинаковый HeaderProtectionKey у каждого клиента: без него или с другим ключом хендшейка нет, и ошибки часто тоже нет. А Jc/Jmin/Jmax, маскирующие пакеты I1-I5 и ContentPaddingAddition совпадать не обязаны: пакеты-обманки вторая сторона отбрасывает, а узел без I1 просто не шлёт их вовсе. Регистр у I1-I5 при этом важен: только верхний. Сверьте и версии: приложение без поддержки 3.1 к серверу 3.1 не подключится, а старые сборки amneziawg-tools не понимают 2.0. Полный разбор - в подробном руководстве по диагностике.