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

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

$ wget -O install_amneziawg.sh https://raw.githubusercontent.com/bivlked/amneziawg-installer/v5.21.2/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 2.0 через DKMS, закрывает 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 dual-stack

Опциональная двухстековая маршрутизация, по умолчанию выключена и включается одним флагом, когда нужно.

ARM и Raspberry Pi

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

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

Машина состояний с возобновлением после ребута и авто-починка DKMS, которая пересобирает модуль после обновления ядра.

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

Почти все команды управления понимают --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.

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

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

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

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

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

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

Это бесплатно?
Да. Установщик с открытым кодом под лицензией MIT. Платите только за VPS - от 3 до 5 долларов в месяц.
Нужны ли знания Linux?
Нет. Вы вставляете одну команду в SSH на чистом VPS. Скрипт сам ставит модуль ядра, настраивает firewall и форвардинг, создаёт первого клиента и печатает QR-код и vpn-ссылку.
Какой VPS выбрать?
Чистый VPS с Ubuntu или Debian, 1 vCPU и от 512 МБ памяти. Скрипт рассчитан на отдельный VPS, а не на домашний роутер или shared-хостинг.
Обходит ли DPI и блокировки?
AmneziaWG 2.0 добавляет обфускацию поверх WireGuard и сопротивляется DPI, который применяют ТСПУ в России, а также в Иране, Китае и в школьных и корпоративных сетях. Гарантии против каждого оператора нет, но протокол даёт настройки обфускации, которые проходят сегодня.
Работает ли на ARM и Raspberry Pi?
Да. Готовые модули ARM64 покрывают Raspberry Pi 3, 4 и 5, Hetzner CAX, Oracle Ampere A1 и AWS Graviton. Та же команда выберет нужный.
Как обновиться на новую версию?
Скачайте скрипт нового релиза на тот же сервер и запустите его с флагом --force. Ключи сервера, клиенты и настройки обфускации переживают переустановку. После обновления ядра модуль DKMS пересобирается автоматически при следующей загрузке.
Можно ли управлять из скрипта или бота?
Да. Почти все команды управления принимают --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. Полный разбор - в подробном руководстве по диагностике.