amneziawg-installer is a free, open source networking & connectivity project written in Shell and released under MIT. It has 1,375 GitHub stars, 109 forks and 8 open issues, and was last pushed 10 hours ago. On this registry it ranks #53 of 69 tracked projects in Networking & Connectivity, with 5 head-to-head comparisons available.

What is amneziawg-installer?

amneziawg-installer is a one-command Bash installer that turns a fresh Ubuntu or Debian VPS into a self-hosted AmneziaWG 3.1 VPN server, made for networks that block WireGuard and for operators who want no Docker and no web panel.

What it is

amneziawg-installer is a Shell project under the MIT licence in Infrastructure & Operations / Networking & Connectivity, with 1,375 stars and 109 forks on GitHub. It provisions the AmneziaWG protocol on a clean VPS: the kernel module through DKMS from the Amnezia PPA, the server configuration and packet forwarding, an optional UFW firewall, and two starter clients named my_phone and my_laptop.

The problem it solves is censorship. AmneziaWG is the DPI-bypass descendant of WireGuard, and this installer exists for networks where WireGuard is fingerprinted and blocked. It replaces hand-built WireGuard deployment and the usual need for a Docker stack or a control panel, finishing in three commands, two reboots, and roughly twenty minutes on a cheap VPS. Client material — configuration files, QR codes, and vpn:// import links — lands in /root/awg/.

Key capabilities

  • Installs from one published script: wget -O install_amneziawg.sh https://github.com/bivlked/amneziawg-installer/releases/latest/download/install_amneziawg.sh, then chmod +x and sudo bash ./install_amneziawg.sh.
  • Runs the kernel module natively through DKMS from the Amnezia PPA, with prebuilt modules for part of the ARM targets and a proven 2.0 module built from source on kernels older than 6.7.
  • Picks the protocol generation by default or by flag: AmneziaWG 3.1 for new installations, --protocol=2.0 for routers on stock firmware, Hiddify, and outdated clients.
  • Creates two clients during installation and writes their configs, QR codes, and vpn:// links to /root/awg/; later devices are added with the single add command.
  • Verifies supply chain integrity: a minisign signature on the installer, plus the helper scripts it downloads (awg_common, manage) pulled from its own version tag and checked against embedded SHA256 hashes, with the threat model in docs/SIGNING_DESIGN.md and SECURITY.md.
  • Covers x86_64, ARM64, and ARMv7, including Raspberry Pi and other small boards.

Who uses it and how

  • People on censored networks where WireGuard does not connect and who need the anti-censorship behaviour of AmneziaWG.
  • Single-VPS owners who want a personal VPN with no Linux administration; the README states a three-dollar VPS is enough.
  • Router and legacy-client users, including stock-firmware routers and Hiddify, who install with --protocol=2.0 so older clients can connect.
  • ARM hobbyists and small deployments on Raspberry Pi and similar ARM64 or ARMv7 hardware, where the installer falls back to prebuilt packages or the 2.0 module.
  • Small groups sharing one server: two clients are created up front, and more friends or devices follow one add at a time, each handed over as a QR code or vpn:// link.

Getting started

Download the installer from the latest GitHub release, make it executable, and run it as root. The full deployment guide covering VPS selection, ARM, troubleshooting, and removal is published as INSTALL_VPS.md in English and INSTALL_VPS.ru.md in Russian, with the homepage at https://bivlked.github.io/amneziawg-installer/.

How it compares

AmneziaWG is the variant built to survive blocking that plain WireGuard does not, and this installer is the automated path to running it. Where other clients matter, Hiddify, stock-firmware routers, and long-unupdated apps are served by adding --protocol=2.0 at install time.

When to use it — and when not to

Running it means handing a root script control of a fresh server, and that script removes packages: on Ubuntu it strips snapd along with /snap, /var/snap, and /var/lib/snapd, and everywhere it removes unattended-upgrades, so automatic security updates stop unless another mechanism replaces them; --keep-packages avoids the removal step. The target is a clean Ubuntu 24.04, Ubuntu 26.04, or Debian 13 VPS, while Debian 12 is out of normal vendor support, shared hosting and routers are out of scope, and kernels older than 6.7 or ARM installs fall back to 2.0. Operators who need a web panel, a container-based stack, or a promise that no system packages are touched should look elsewhere; the last push was 2026-10-13 at installer version 6.0.0, so the project is active, but eight open issues mean rough edges remain.

project readme (upstream, from github) — read inline

RU Русский | EN English

Install AmneziaWG 3.1 / 2.0 VPN on Ubuntu and Debian VPS

amneziawg-installer одной командой ставит свой VPN-сервер AmneziaWG на VPS с Ubuntu или Debian: модуль ядра, настройка сервера и клиенты с QR-кодами. Работает там, где WireGuard блокируют. Хватит VPS за $3, знать Linux не нужно.

One-command, self-hosted AmneziaWG 3.1 VPN for Ubuntu 24.04 / 26.04 and Debian 13, with AmneziaWG 2.0 for older clients and routers. Kernel-native DKMS, no Docker, no web panel, runs on any cheap VPS. English README

Project website Ubuntu 24.04 | 26.04 Debian 13 x86_64 | ARM64 | ARMv7 AmneziaWG 3.1 and 2.0 License Version Tests Stars Last commit

В ядре, без Docker и панелей - нет накладных расходов  |  сервер только под VPN, защита из коробки  |  поставил и забыл  |  QR-код или vpn:// в один тап

Факты на 2026-10-13. Установщик 6.0.0. Сроки поддержки ОС проверены по данным вендоров на 2026-08-29.

Для нового сервера Ubuntu 24.04, Debian 13
Тоже поддерживается Ubuntu 26.04
Не для новых серверов Debian 12 - вне обычной поддержки вендора
Архитектуры x86_64, ARM64, ARMv7
Модуль ядра DKMS из PPA Amnezia; на ядрах старее 6.7 (штатный Debian 12) - проверенный модуль 2.0 из исходников; для части ARM - готовые сборки
Профиль конфигурации AmneziaWG 3.1 для новой установки; 2.0 - флагом --protocol=2.0 или автоматически там, где 3.1 не поднять (ядро старее 6.7, ARM); уже работающий сервер остаётся на своём поколении

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

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

Что делает: ставит AmneziaWG (модуль ядра через DKMS или готовый пакет на части ARM-плат; по умолчанию AmneziaWG 3.1, когда нужна 2.0 - в разделе AmneziaWG 3.1 по умолчанию), настраивает сервер и форвардинг, предлагает включить фаервол UFW и создаёт двух клиентов, my_phone и my_laptop. Их конфиги, QR-коды и ссылки vpn:// сохраняются в /root/awg/, как перенести их на телефон - в разделе После установки. Добавить друга или устройство потом - одна команда add. Есть роутер на стоковой прошивке, Hiddify или давно не обновлявшиеся приложения? Добавьте к последней команде --protocol=2.0, почему. 3 команды. 2 перезагрузки по ходу. Около 20 минут до готового VPN. Для чистого Ubuntu/Debian VPS, не роутер и не shared-хостинг. Подробнее →

📘 Полный гайд по развёртыванию: Установка сервера AmneziaWG на VPS - выбор VPS, ARM, troubleshooting, удаление. English version.

🔐 Целостность: установщик скачивается по HTTPS из последнего релиза на GitHub. Проверить его до запуска можно подписью minisign: Проверка подписи. Скрипты, которые он качает сам (awg_common, manage), он берёт с тега своей версии и сверяет с зашитыми в него SHA256-хешами, так что подпись установщика покрывает и их (если не переопределять AWG_BRANCH). Модель угроз - в docs/SIGNING_DESIGN.md, как сообщить об уязвимости - в SECURITY.md.

Что установщик меняет на сервере (прозрачность)

Скрипт работает от root. Ниже основные изменения, которые он вносит в систему.

  • Обновление системы. apt-get upgrade --with-new-pkgs: пакеты он не удаляет, но новое ядро приехать может. Перед обновлением пишет /etc/apt/apt.conf.d/99-amneziawg-lock-timeout (ждать блокировку dpkg до 5 минут) и помечает установленными вручную пакеты, без которых сервер не загрузится или останется без сети (udev, initramfs-tools, openssh-server, netplan.io и другие).
  • Удаление пакетов - после вашего согласия: если снапов на сервере нет, Enter означает «да», а с --yes согласие считается данным; сохранить пакеты можно флагом --keep-packages. Удаляются modemmanager, networkd-dispatcher, unattended-upgrades (обновления безопасности перестают ставиться автоматически), packagekit, udisks2. На Ubuntu ещё snapd вместе с /snap, /var/snap, /var/lib/snapd и lxd-agent-loader. cloud-init с /etc/cloud и /var/lib/cloud удаляется, только если он не управляет сетью.
  • Установка пакетов. curl, wget, gpg, sudo, amneziawg-dkms, amneziawg-tools, wireguard-tools, dkms, build-essential, dpkg-dev, qrencode, заголовки ядра, ufw, fail2ban (на Debian ещё python3-systemd). Если модуль 2.0 собирается из исходников, ставится git; при устаревших заголовках ядра ставится gcc-13. На части ARM вместо сборки ставится готовый пакет модуля из релиза arm-packages.
  • Репозиторий. PPA Amnezia: /etc/apt/sources.list.d/amnezia-ppa.sources (на Debian 12 .list) и ключ /etc/apt/keyrings/amnezia-ppa.gpg. Ключ встроен в установщик, сверяется по полному отпечатку и действует только для этого репозитория.
  • Модуль ядра. amneziawg собирается через DKMS и загружается при старте (/etc/modules-load.d/amneziawg.conf). После обновления ядра модуль пересобирается сам: за это отвечают /usr/local/sbin/amneziawg-ensure-module, apt-хук /etc/apt/apt.conf.d/99-amneziawg-post-kernel и юнит amneziawg-ensure-module.service, журнал - /var/log/amneziawg-ensure-module.log. На ARM с готовым пакетом этой обвязки нет: после смены ядра установщик нужно запустить ещё раз.
  • sysctl, файл /etc/sysctl.d/99-amneziawg-security.conf: форвардинг, выключение IPv6 на хосте (оставить - флаг --allow-ipv6), BBR, буферы по объёму памяти, rp_filter = 2, запрет redirect, SYN cookies, vm.swappiness = 10, net.netfilter.nf_conntrack_max = 65536, kernel.sysrq = 0, kernel.printk = 3 4 1 3.
  • Swap. Если swap меньше 1 ГБ (при памяти до 2 ГБ) или меньше 512 МБ (при большем объёме), создаётся /swapfile со строкой в /etc/fstab.
  • Фаервол. UFW: входящие запрещены, SSH с ограничением частоты на найденном порту (порт можно задать флагом --ssh-port), открыт UDP-порт VPN, правило пересылки awg0 -> внешний интерфейс. Если UFW ещё не включён, установщик спрашивает, включать ли его (с --yes включает сам). Fail2Ban защищает SSH, его настройки в /etc/fail2ban/jail.d/amneziawg.conf. Настройки SSH-сервера установщик не меняет.
  • VPN. Серверный конфиг /etc/amnezia/amneziawg/awg0.conf с правилами iptables в PostUp, сервис awg-quick@awg0, каталог /root/awg/ (ключи, конфиги клиентов, журнал, скрипты управления) с правами 700/600, cron /etc/cron.d/awg-expiry для клиентов со сроком действия.
  • Перезагрузки. Их две: после обновления системы и после установки модуля. После каждой запустите ту же команду снова.
  • Откат: --uninstall убирает своё - модуль, конфиги, sysctl-файлы, кроны, UFW-правило VPN-порта и UFW-правило маршрутизации awg0. UFW отключает и Fail2Ban удаляет только если сам их включал/ставил; если UFW был активен до установки, добавленное правило SSH rate-limit остаётся. Не возвращает: swap и удалённые пакеты; пакеты-зависимости, которые он ставил (dkms, компилятор, заголовки ядра), остаются. По умолчанию, в том числе с --yes, перед удалением создаётся архив /root/awg_uninstall_backup_*.tar.gz с конфигами и приватными ключами; он остаётся на сервере, удалите его сами, когда он станет не нужен.

Флаг --no-tweaks оставляет пакеты, swap, sysctl-hardening, UFW и Fail2Ban как есть. Форвардинг включается всё равно, в файле /etc/sysctl.d/99-amneziawg-forwarding.conf, и там же выключается IPv6 на хосте, если не передать --allow-ipv6; обновление системы идёт как обычно. Что остаётся после удаления - в INSTALL_VPS.ru.md, модель угроз - в docs/SIGNING_DESIGN.md, проверка подписи - в разделе Проверка подписи.

Неинтерактивная установка (для автоматизации)
sudo bash ./install_amneziawg.sh --yes --route-all

Все параметры принимаются автоматически. Подробнее: ADVANCED.md#cli-params-adv

🎯 Выберите свой случай

Ваша ситуация Что добавить
Обычный дешёвый VPS, просто нужен VPN Ничего - команда выше уже всё делает
Мобильный интернет, DPI режет (ТСПУ, Иран, школа или корпоратив) При установке добавьте --mobile - пресет обфускации + порт 443/udp разом (проверенные операторы)
ARM: Raspberry Pi, Oracle Ampere, Hetzner CAX Та же команда - готовые ARM-модули ядра выберутся автоматически (детали)
Доступ другу или гостю на время После установки: sudo bash /root/awg/manage_amneziawg.sh add guest --expires=7d

Зачем это нужно • AmneziaWG 3.x • AWG vs WG • CLI vs панели • Похожие инструменты • Быстрый старт • Что умеет • Операторы • Требования • Хостинг • Установка • Проверка подписи • После установки • Управление • Дополнительно • FAQ • Устранение неполадок • Экосистема • Лицензия

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

AmneziaWG - форк WireGuard с обфускацией трафика. Обфускация делает трафик трудноотличимым от случайного шума для систем DPI, поэтому там, где обычный WireGuard детектируют и блокируют, AmneziaWG обычно продолжает работать.

Этот набор скриптов превращает чистый VPS в готовый VPN-сервер. Не нужны знания Linux - скрипт сам настроит firewall, оптимизирует систему, создаст конфиги и QR-коды для клиентов.

Сервер настраивается под одну задачу - VPN: лишние пакеты убираются, ядро, сеть и swap тюнингуются под железо, включаются firewall и базовая защита. AmneziaWG работает в ядре, поэтому накладных расходов почти нет - быстро и экономно. Поставил один раз для дома или семьи и забыл: добавить друга или новое устройство через месяц - минута, конфиг и QR готовятся одной командой.

Рекомендуемые системы: Ubuntu 24.04 LTS и Debian 13. Ubuntu 26.04 поддерживается: под её ядро 7.0.0-38 модуль из PPA сам не собирается, и с v5.37.1 установщик исправляет его исходник сам, подробности - в известных ограничениях. Debian 12 тоже ставится и работает, но обычная поддержка у него уже закончилась, а Ubuntu 25.10 снята с поддержки совсем и с v6.0.0 не поддерживается - даты в таблице совместимости ниже. Хватит любого дешёвого VPS с 1 ГБ RAM.


🆕 AmneziaWG 3.1 по умолчанию

С версии 6.0.0 новая установка по умолчанию ставит AmneziaWG 3.1: и сервер, и клиентские профили получают параметры третьей линии - шифрование заголовков (HeaderProtectionKey) и добавочный паддинг внутри шифрованной части (ContentPaddingAddition). Команда установки прежняя, флаги не нужны. Пакеты-пустышки Jc, паддинг S1-S4 и маскирующий пакет I1 остаются. H1-H4 в профиле 3.1 стоят на 1-4: тип сообщения теперь прячет шифрование заголовков, и случайные диапазоны больше ничего не скрывают.

Кому нужен --protocol=2.0. Клиент без поддержки 3.1 профиль 3.1 не примет: рукопожатия не будет, а сообщения об ошибке может и не быть. Поэтому, если среди ваших устройств есть такой клиент, ставьте сервер сразу на 2.0:

sudo bash ./install_amneziawg.sh --protocol=2.0

Без поддержки 3.1 пока остаются роутеры на стоковой прошивке (стабильный KeeneticOS, OpenWrt со старым пакетом amneziawg), Hiddify и приложения, которые давно не обновлялись. Какие клиенты понимают 3.1 и с какой версии - в таблице клиентов. Решить лучше до установки: поколение работающего сервера меняется только переустановкой, и все клиентские профили тогда выдаются заново.

Где установщик сам поставит 2.0. На ядрах старее 6.7 (штатный Debian 12 с ядром 6.1), на ARM и там, где установленные утилиты awg или модуль ядра не понимают параметры третьей линии, 3.1 не поднять. Если поколение вы не выбирали, установщик поставит 2.0 сам, объяснит причину в логе и повторит её в итоговом отчёте. Явный --protocol=3.1 на такой машине прерывает установку и называет причину.

Уже работающие серверы остаются на своём поколении: обновление скриптов и manage поколение не меняют. Чтобы перейти с 2.0 на 3.1, нужно снять установку (--uninstall) и поставить заново, все клиентские профили при этом выдаются заново. Обратно с 3.1 на 2.0 - так же: --uninstall (он удаляет сервер и профили 3.1, по умолчанию сохранив копию в бэкап), затем установка с --protocol=2.0 и новые профили для всех клиентов.

Какое поколение стоит на сервере, установщик пишет в итоговом отчёте строкой «Поколение протокола». Версии утилит и загруженного модуля:

awg --version                        # версия утилит
cat /sys/module/amneziawg/version    # версия загруженного модуля

Подробный разбор - что меняется на проводе, что обязано совпадать у сервера и клиента и из чего состоит профиль 3.1 - в ADVANCED.md.


⚖️ AmneziaWG vs WireGuard

WireGuard AmneziaWG 3.1
Обнаружение DPI Детектируется по фиксированным размерам пакетов и magic bytes Трудно зафингерпринтить - случайные заголовки, padding, имитация протоколов
Блокируется в Китай, Россия, Иран, ОАЭ, Туркменистан По фиксированной сигнатуре блокировать нечего - её нет. Остаются блокировки по адресу и UDP-порту: может помочь смена порта или --mobile
Настройка сервера Вручную: ключи, iptables, sysctl, systemd Одна команда, 20 минут, полностью автоматически
Безопасность Сами: UFW, Fail2Ban, sysctl Автоматически: firewall + защита от брутфорса + тюнинг ядра
Управление клиентами Ручное редактирование конфигов, рестарт add/remove/list/stats с hot-reload
Временный доступ Нет --expires=7d с автоматическим удалением
Требования к серверу - Те же - любой VPS за $3-5/мес, 1 ГБ RAM
Потеря скорости Базовая Модуль ядра: шифрование и маскировка выполняются в пространстве ядра, без выхода в userspace

Про скорость: на сервере с одним общим vCPU узким местом становится процессор - шифрование и маскировка выполняются на том же ядре. Диагностика: FAQ в ADVANCED.

Если WireGuard у вас работает и не блокируется - используйте его. Если блокируется или режется - AmneziaWG 3.1 является прямой заменой.


⚙️ CLI-инсталлер vs веб-панели

Задача - поднять VPN на дешёвом VPS за 20 минут. Скрипт не тянет за собой Docker, веб-сервер или базу данных. После установки на сервере работает только AWG и firewall - минимум нагрузки, максимум ресурсов для VPN.

Этот проект (CLI) Веб-панели на Docker
Модуль AWG Kernel module - работает на уровне ядра Userspace в контейнере
Требования к серверу Любой VPS от 512 МБ RAM Нужны PHP/Python, БД, веб-сервер, Docker
Поверхность атаки SSH + UDP-порт VPN + HTTP-панель, база данных, Docker
Установка Одна команда на сервере, 20 минут docker-compose + передача SSH-доступа панели
После перезагрузки Продолжит установку с того же шага Зависит от состояния контейнеров и БД
Веб-интерфейс ❌ Нет, только SSH (управление через скрипт manage) ✅ GUI, управление через браузер
Несколько протоколов Только AmneziaWG WireGuard, OpenVPN, VLESS и другие

Нужен VPN без GUI на выделенном сервере - этот проект. Нужна веб-панель с несколькими протоколами - ищите Docker-решения.


🔧 Сравнение с похожими инструментами

Есть ещё несколько способов поднять AmneziaWG. Каждый выбирает свой компромисс:

Инструмент Способ Кому подходит
Этот установщик SSH + одна bash-команда Headless VPS, single-purpose сервер, без Docker и панели, ARM-prebuilt'ы
wiresock/amneziawg-install SSH + bash, опц. нативная веб-панель и обфускация-прокси (Rust) Нужна веб-панель без Docker или маскировка трафика отдельным сервисом
wg-easy Docker + веб-интерфейс Домашние боксы, на которых уже крутится Docker; нужна панель для клиентов
spcfox/amnezia-wg-easy Docker-форк wg-easy Те, кто уже на wg-easy и хочет именно AmneziaWG вместо обычного WireGuard
Amnezia VPN Десктоп/моб GUI, разворачивает сервер в Docker по SSH Установка кликами без терминала; нужен графический клиент

Быстрый выбор:

  • Часто заводите и меняете клиентов, удобнее мышкой в браузере - веб-панель: wiresock (нативная, без Docker) или wg-easy (Docker). Учтите: панель - это лишний постоянно работающий сервис, открытый порт и расход ресурсов сервера; для режима «поставил и забыл» это ненужная нагрузка.
  • Дешёвый или слабый VPS, ARM (Raspberry Pi, Oracle Ampere) - этот установщик с готовыми prebuilt'ами, без ожидания сборки модуля.
  • Импорт в телефон одним тапом (QR или vpn://), клиенты по сроку (--expires), пресеты под мобильных операторов - этот установщик.
  • Установка мышкой без терминала - десктоп-клиент Amnezia VPN.

Когда этот проект - не лучший выбор:

  • Часто заводите и меняете клиентов и хочется браузерную панель - возьмите wiresock или wg-easy. Здесь панели нет осознанно: если клиенты меняются изредка, постоянно работающая панель только ест ресурсы сервера, а управление и так делается из CLI (manage add/remove/list) по SSH.
  • Нужна устойчивость к активному зондированию (active probing) - маскировка трафика под сторонний протокол (например QUIC или DNS): у wiresock для этого есть отдельный обфускация-прокси (серверную маскировку получает любой стандартный клиент, полная двунаправленная - в связке с их коммерческим клиентом WireSock Secure Connect). Здесь обфускация делается в самом протоколе - параметры I1-I5/CPS AmneziaWG 2.0 - и ориентирована на типовой мобильный DPI, без отдельного прокси-демона и платного клиента.
  • Нужен графический клиент или установка мышкой без терминала - десктоп-клиент Amnezia VPN.

Чем отличается от официального приложения Amnezia?

Официальное приложение Amnezia - официальный графический клиент: вы ставите приложение, указываете сервер, и оно разворачивает серверную часть в Docker по SSH. Удобно, когда нужен только GUI. Этот установщик создан под другую задачу - выжать из одного выделенного VPS максимум как из VPN-сервера. Отсюда и отличия:

  • Без Docker и накладных расходов на него. AmneziaWG ставится модулем ядра, а не в контейнере. Нет постоянного Docker-демона - меньше расход RAM и CPU. На дешёвом VPS это критично, на сервере помощнее тоже не лишнее.
  • Сервер оптимизируется под железо. Скрипт смотрит на RAM и настраивает sysctl-буферы и размер swap, включает BBR - вытягивает из тарифа максимум. Официальное приложение разворачивает контейнеры и сам сервер не оптимизирует и не настраивает.
  • Меньше поверхность атаки. Лишние пакеты и службы вырезаются, на сервере остаётся одна задача - VPN. Сверху UFW deny-all, Fail2Ban, строгие права на файлы и sysctl-хардненинг.
  • Тонкая настройка обфускации. Пресет для мобильных сетей (--preset=mobile), прямой доступ к параметрам AmneziaWG и полевые данные по операторам и DPI - можно подстроить под конкретную сеть или оператора.
  • Headless и автоматизация. Одна SSH-команда, все параметры флагами, управление клиентами из CLI, гости по сроку (--expires), импорт по QR или vpn://, готовые сборки под ARM.

Протокол и стойкость к DPI при этом одинаковые - под капотом тот же протокол AmneziaWG. Код открыт под MIT, это читаемый bash, его можно просмотреть перед запуском, на нём 2000+ автотестов. Ставится тот же upstream AmneziaWG - это автоматизация и тюнинг сервера, а не форк протокола.

Подробное сравнение: amneziawg-installer и официальное приложение Amnezia.


✨ Что умеет

  • Обход блокировок - AmneziaWG 3.1 (или 2.0 для старых клиентов) с обфускацией трафика. DPI не детектирует подключение
  • Одна команда - готовый VPN - от чистого VPS до работающего сервера с клиентскими конфигами и QR-кодами
  • Безопасность из коробки - UFW, Fail2Ban, sysctl hardening, строгие права доступа (600/700)
  • Удобное управление - добавление/удаление клиентов, временные клиенты с авто-удалением, статистика, бэкапы
  • Широкая поддержка ОС - Ubuntu 24.04, 26.04 и Debian 13; Debian 12 для переноса уже работающего сервера
  • x86_64 и ARM - облачные VPS, Raspberry Pi 3/4/5, ARM64-серверы (AWS Graviton, Oracle Ampere, Hetzner)
  • Оптимизация для мобильных сетей - --preset=mobile для Tele2, Yota, Мегафон и других операторов с DPI-блокировками. Тонкая настройка через --jc, --jmin, --jmax (подробнее)
  • Опциональный dual-stack IPv6 - флаг --allow-ipv6-tunnel добавляет IPv6 внутри туннеля рядом с IPv4 (по умолчанию выключено, подробнее)
Все возможности
  • Нативная генерация ключей и конфигов через awg - без Python и внешних зависимостей
  • Hardware-aware оптимизация: swap и сетевые буферы на основе характеристик сервера
  • DKMS - автоматическая пересборка модуля ядра при обновлении
  • vpn:// URI для импорта в Amnezia Client одним тапом (.vpnuri файлы)
  • Статистика трафика по клиентам (stats, stats --json)
  • Временные клиенты с авто-удалением (--expires=1h, 7d, 4w и др.)
  • Диагностический отчёт (--diagnostic) и полная деинсталляция (--uninstall)
  • Логирование всех действий в /root/awg/
  • Возобновление установки после перезагрузки - скрипт продолжит с нужного шага
  • Выбор порта, подсети, режима IPv6, маршрутизации и изоляции клиентов (--isolation=on|off). Поддержка --endpoint для серверов за NAT

📡 С какими операторами проверено

Установщик настраивает обфускацию AmneziaWG под мобильные сети с DPI: --mobile включает мобильный пресет и порт 443/udp одним флагом. Если VPN нестабилен через мобильный интернет, на новом сервере ставьте сразу с --mobile. На уже работающем это переустановка с --force --mobile: параметры обфускации и порт поменяются, и всем клиентам придётся перевыпустить конфиги через regen. Если рукопожатие на мобильной сети не проходит вовсе, сначала прочитайте разбор. Ниже - рабочие конфигурации по отчётам пользователей из issues и discussions (не гарантия: блокировки и параметры операторов меняются со временем):

  • Yota - Москва, --preset=mobile
  • Tele2 - Москва (--preset=mobile); Красноярск (--preset=mobile; в майскую волну 2026 заработал I1=)
  • Таттелеком / Летай - Татарстан, --preset=mobile
  • Мегафон - регионы, --preset=mobile + удалить параметр I1
  • Билайн - дефолтный preset, флаги не нужны
  • Домашний/проводной интернет - дефолт, как правило, «из коробки»

Вашего оператора нет в списке? Попробуйте --preset=mobile. Не помогло - заведите тред в Discussions или Issues, добавлю в список.

Полная таблица операторских параметров (Jc, Jmin, Jmax, I1) - в ADVANCED.md → FAQ «через мобильную сеть». Точечная настройка через --jc/--jmin/--jmax - в ADVANCED.md → Presets.


🖥️ Требования

  • ОС: Чистая установка Ubuntu Server 24.04 LTS / Ubuntu 26.04 / Debian 13 Minimal. Debian 12 установщик тоже поддерживает, но для НОВОГО сервера его брать не стоит - см. таблицу совместимости
  • Доступ: Права root (через sudo)
  • Интернет: Стабильное подключение
  • Ресурсы: 512 МБ ОЗУ минимум, рекомендуется 1 ГБ (комфортно 2+ ГБ); минимум ~2 ГБ диска (рекомендуется 3+ ГБ)
  • SSH: Доступ по SSH

Совместимость ОС:

ОС Наш выбор Поддержка от вендора Примечание
Ubuntu 24.04 LTS ✅ выбор по умолчанию до 2029-05-31 Обкатана лучше всех. HWE-ядро 7.0.0-38 поддерживается с v5.37.1: исходник модуля из PPA установщик исправляет сам (подробнее)
Debian 13 (trixie) ✅ выбор по умолчанию до 2028-08-09 Протестировано. PPA через маппинг codename на noble, DEB822
Ubuntu 26.04 ⚠️ временно с оговоркой до 2031-05-29 Под ядро 7.0.0-38 модуль из PPA сам не собирается, с v5.37.1 установщик исправляет его исходник сам (подробнее). Установщик проверяет, отвечает ли PPA для кодового имени выпуска, и если нет, сам переключается на noble (с v5.13.0)
Debian 12 (bookworm) ⚠️ для миграции обычная закончилась 2026-07-11, Debian LTS до 2028-06-30 Работает и протестировано, обновления безопасности идут через Debian LTS. PPA через маппинг codename на focal. Для нового сервера лучше Debian 13
Ubuntu 25.10 (questing) ❌ не поддерживается с v6.0.0 закончилась 2026-07-01, продления нет Выпуск снят с поддержки, обновлений безопасности для него не выходит. Установщик предупредит о непроверенном выпуске и спросит подтверждение. Перейдите на 26.04 LTS (do-release-upgrade, затем снова запустите установщик последней версии) или переустановите на 24.04 LTS

Поддержка архитектур (v5.10.0+):

Архитектура Статус Платформы
x86_64 (amd64) ✅ Полная поддержка Все облачные VPS
ARM64 (aarch64) ✅ Поддержка Raspberry Pi 3/4/5, AWS Graviton, Oracle Ampere, Hetzner
ARMv7 (armhf) ✅ Поддержка Raspberry Pi 3/4 (32-bit)

На ARM установщик загружает готовые модули ядра при наличии, и автоматически переключается на DKMS-сборку если нужно.

⚠️ Нестандартный порт SSH: Установщик обычно определяет SSH-порт автоматически. Если SSH на нестандартном порту или автодетект недоступен, запускайте с --ssh-port=ВАШ_ПОРТ (несколько портов - списком через запятую). Как дополнительная консервативная страховка можно заранее выполнить sudo ufw allow ВАШ_ПОРТ/tcp до запуска установки.

Клиенты:

  • Android: WG Tunnel (профиль 3.1 с версии 5.6.0) или лёгкий AmneziaWG (профиль 3.1 с 3.1.4 в Google Play). Импорт QR-кодом имя.png; почему они - какой клиент выбрать
  • Все платформы: Amnezia VPN - полнофункциональный VPN-клиент: профиль 3.1 с версии 5.0.1.5, профиль 2.0 с 4.8.12.7. Импорт через vpn:// URI
  • Windows: AmneziaWG - легковесный tunnel manager: профиль 3.1 с версии 3.1.0, профиль 2.0 с 2.0.0. Импорт через .conf файлы

Полная таблица совместимости клиентов →


🚀 Рекомендация хостинга

Для стабильной работы VPN-сервера с высокой пропускной способностью важен надежный хостинг с хорошим каналом.

На что смотреть при выборе VPS под VPN:

  • IP-адреса, не помеченные как датацентровые - меньше риск блокировок по диапазону.
  • Большой или неограниченный трафик и канал от 1 Гбит/с.
  • Поддержка нужной ОС (Ubuntu 24.04 LTS, 26.04 или Debian 13; Debian 12 тоже работает) и root-доступ.

Опробовал и рекомендую FreakHosting. В частности, их линейка BUDGET VPS предлагает отличное соотношение цены и качества. Это партнёрская ссылка: при заказе по ней я получаю небольшой процент, для вас цена та же.

Их IP-адреса не идентифицируются, как адреса датацентров и не попадают под блокировки по признаку «IP принадлежит хостинг-провайдеру» (в отличие, например, от Azure и некоторых крупных облаков).

  • Рекомендуемый тариф: BVPS-2
  • Характеристики: 2 vCPU, 2 GB RAM, 40 GB NVMe SSD.
  • Ключевое преимущество: порт 10 Gbps с неограниченным трафиком. Идеально для VPN!
  • Цена: Всего €25 в год (около 2200 руб.; на момент проверки, цена может меняться).

Этой конфигурации более чем достаточно для комфортной работы AmneziaWG с большим количеством подключений и высоким трафиком.


🔧 Установка (Рекомендуемый способ)

Установка AmneziaWG на Ubuntu или Debian сводится к трём командам: скачать скрипт, запустить с sudo и ответить на несколько вопросов. Этот метод гарантирует корректную работу интерактивных запросов и цветного вывода в вашем терминале.

  1. Подключитесь к чистому серверу (Ubuntu 24.04 / Ubuntu 26.04 / Debian 13) по SSH.

    Совет: После создания сервера подождите 5-10 минут, чтобы завершились все фоновые процессы инициализации системы, прежде чем запускать установку.

  2. Скачайте скрипт:

    wget -O install_amneziawg.sh https://github.com/bivlked/amneziawg-installer/releases/latest/download/install_amneziawg.sh
    # или: curl -fLo install_amneziawg.sh https://github.com/bivlked/amneziawg-installer/releases/latest/download/install_amneziawg.sh
    

    На минимальном Debian curl может отсутствовать (wget обычно есть) - используйте wget. Сам curl установщик доставит на шаге 1.

  3. Сделайте его исполняемым:

    chmod +x install_amneziawg.sh
    
  4. Запустите с sudo:

    sudo bash ./install_amneziawg.sh
    

    (Вы также можете передать параметры командной строки, см. sudo bash ./install_amneziawg.sh --help или ADVANCED.md#install-cli-adv)

    English version: Для вывода на английском используйте install_amneziawg_en.sh:

    wget -O install_amneziawg_en.sh https://github.com/bivlked/amneziawg-installer/releases/latest/download/install_amneziawg_en.sh
    sudo bash ./install_amneziawg_en.sh
    

    Английская версия функционально идентична; только сообщения и логи на английском. После перезагрузки продолжайте тем же файлом: sudo bash ./install_amneziawg_en.sh

  5. Начальная настройка: Скрипт интерактивно запросит:

    • UDP порт: Порт для подключения клиентов (1-65535). По умолчанию: 39743.

    • Подсеть туннеля: Внутренняя сеть для VPN. По умолчанию: 10.9.9.1/24.

    • Отключение IPv6: рекомендуется (Y). Речь об IPv6 на самом сервере; попадёт ли в туннель IPv6 вашего устройства, решает режим маршрутизации, см. IPv6 устройства, ::/0 и локальная сеть.

    • Режим маршрутизации: Определяет, какой трафик пойдет через VPN. По умолчанию 1 (весь трафик, 0.0.0.0/0) - привычная клиентам форма полного туннеля. Режим 2 (Список Amnezia+DNS) оставляет частные сети (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) вне туннеля, но часть клиентов считает такой список раздельной маршрутизацией и ведёт себя иначе.

    • Изоляция клиентов: Блокировать ли трафик между клиентами внутри VPN. По умолчанию включена (Y) - клиенты не видят друг друга; неинтерактивно: --isolation=on|off.

    • Имя сервера: Под этим именем сервер появится в приложении Amnezia при импорте vpn://. По умолчанию AWG Server; неинтерактивно: --server-name=ИМЯ.

    • Удаление лишних пакетов: скрипт покажет список (snapd, unattended-upgrades и другие) и спросит, удалять ли их. Оставить - ответ n или флаг --keep-packages.

    Параметры обфускации (для 3.1 вместе с ключом защиты заголовков) генерируются автоматически - никаких действий не требуется.

  6. Перезагрузки: Потребуется ДВЕ перезагрузки. Скрипт запросит подтверждение [y/N]. Введите y и нажмите Enter.

  7. Продолжение: После каждой перезагрузки снова запустите скрипт той же командой:

    sudo bash ./install_amneziawg.sh
    

    Скрипт продолжит с нужного шага, прежние вопросы не повторяются. Если UFW ещё не включён, в третьем запуске будет один новый вопрос: «Включить UFW? [y/N]». Ответьте y: по Enter фаервол не включается, и сервер остаётся без него. С --yes UFW включается без вопроса.

  8. Завершение: После второй перезагрузки и третьего запуска скрипта вы увидите сообщение: Установка и настройка AmneziaWG 3.1 УСПЕШНО ЗАВЕРШЕНА! (или 2.0, если сервер поставлен на неё) и строку «Поколение протокола» с причиной, если установщик выбрал 2.0 сам.


🔏 Проверка подписи (необязательно, лучше до запуска)

Установщик подписан ключом minisign, который хранится у автора офлайн и в GitHub Actions не попадает. Подписи есть у релизов начиная с v5.29.0.

sudo apt install minisign
BASE="https://github.com/bivlked/amneziawg-installer/releases/latest/download"
wget -O install_amneziawg.sh         "$BASE/install_amneziawg.sh"
wget -O install_amneziawg.sh.minisig "$BASE/install_amneziawg.sh.minisig"

minisign -V -P RWQXfpABHIpZPttqrwYrQNHRTk/iLIz4cVh9KkRwAElHP+CoW/NPEysN \
  -m install_amneziawg.sh -x install_amneziawg.sh.minisig

Ожидаемый ответ: Signature and comment signature verified, а строкой ниже Trusted comment: amneziawg-installer vX.Y.Z install_amneziawg.sh. Тег в этой строке должен совпадать с последним релизом на странице релизов, а имя - с файлом, который вы скачали. Если проверка не прошла, скачайте оба файла заново: между двумя закачками мог выйти новый релиз. Не прошла повторно - не запускайте.

Ключ сверяйте целиком. Публичный ключ проекта: RWQXfpABHIpZPttqrwYrQNHRTk/iLIz4cVh9KkRwAElHP+CoW/NPEysN. Он же лежит в KEYS.txt в корне репозитория и в каждом подписанном релизе (с v5.29.0). 3E598A1C01907E17 - идентификатор ключа, а не отпечаток: чужой ключ может нести тот же идентификатор, поэтому сверять по нему нельзя. Сохраните ключ у себя и в следующий раз берите его из своей копии.

Что покрывает подпись. Вы проверяете сам установщик. Скрипты, которые он качает потом (awg_common.sh, manage_amneziawg.sh), он сверяет с SHA256-хешами, зашитыми в него, так что подписанный установщик покрывает и их, если не переопределять AWG_BRANCH. Не покрыты подписью:

  • готовые ARM-пакеты модуля из релиза arm-packages: хеш лежит рядом с ними и защищает только от битой закачки;
  • пакеты из PPA Amnezia: их проверяет apt по ключу PPA;
  • скрипты, заменённые вручную: для них повторите команду выше с их именами.

⚠️ Чего проверка не даёт. Если ключ скопирован с этой же страницы в тот же заход, проверка защищает от подмены по пути, но не от взлома самого аккаунта: кто подменит скрипт, подменит и эту страницу. Смысл проверки появляется, когда ключ у вас сохранён с прошлого раза.

📦 После установки

Где найти файлы клиентов:

Файл Путь Назначение
.conf /root/awg/имя.conf Конфигурация для импорта в клиент
.png /root/awg/имя.png QR-код этого же .conf для клиентов AmneziaWG
.vpnuri /root/awg/имя.vpnuri vpn:// URI для Amnezia Client
.vpnuri.png /root/awg/имя.vpnuri.png QR-код ссылки vpn:// для приложения Amnezia VPN

Скачать конфиг на компьютер:

scp root@IP_СЕРВЕРА:/root/awg/my_phone.conf .
Импорт в WG Tunnel или AmneziaWG на Android, в AmneziaWG на iPhone
  1. Скачайте QR-код конфига: scp root@IP_СЕРВЕРА:/root/awg/my_phone.png .
  2. Откройте файл на экране компьютера
  3. На телефоне: «+» → пункт импорта по QR-коду
Импорт в Amnezia VPN (телефон) через vpn:// URI
  1. На сервере выполните: cat /root/awg/my_phone.vpnuri
  2. Скопируйте текст и отправьте себе (Telegram, почта и т.д.)
  3. На телефоне: Amnezia VPN → «Добавить VPN» → «Вставить из буфера»
Импорт в Amnezia VPN через QR-код ссылки
  1. Скачайте QR-код ссылки: scp root@IP_СЕРВЕРА:/root/awg/my_phone.vpnuri.png .
  2. Откройте файл на экране компьютера
  3. На телефоне: Amnezia VPN → «Добавить VPN» → «Сканировать QR-код»

Если сканер Amnezia VPN код не распознаёт (так было на Android с версией 5.0.3), считайте его обычной камерой телефона, скопируйте текст vpn://... и вставьте в Amnezia VPN, как в способе выше.

Файл my_phone.png без vpnuri в имени - это QR-код самого .conf для клиента AmneziaWG, в Amnezia VPN его не сканируйте.

Импорт в AmneziaWG for Windows
  1. Скачайте .conf файл на компьютер через scp или sftp
  2. AmneziaWG → Import tunnel(s) from file → выберите .conf файл

Другие файлы на сервере:

  • Конфигурация сервера: /etc/amnezia/amneziawg/awg0.conf
  • Настройки скрипта: /root/awg/awgsetup_cfg.init
  • Скрипт управления: /root/awg/manage_amneziawg.sh
  • Общие функции: /root/awg/awg_common.sh
  • Данные истечения клиентов: /root/awg/expiry/
  • Логи: /root/awg/*.log

👥 Управление клиентами (manage_amneziawg.sh)

Скрипт manage_amneziawg.sh для управления пользователями скачивается автоматически.

Использование:

sudo bash /root/awg/manage_amneziawg.sh <команда> [аргументы]

Полный список - ... help или ADVANCED.md#manage-commands-adv.

Повседневные команды:

Команда Аргументы Описание Перезапуск?
add [имя2 ...] [--expires=ВРЕМЯ] [--allowed-ips=СПИСОК] Добавить клиента(ов) (опц. с истечением и индивид. маршрутами) Нет (авто)
remove [имя2 ...] Удалить клиента(ов) Нет (авто)
list [-v] [--json] Список клиентов (-v детали, --json машиночитаемый с client_ipv6 и expires_at) Нет
show Статус awg show Нет
stats [--json] Статистика трафика по клиентам Нет

Обслуживание и восстановление:

Команда Аргументы Описание Перезапуск?
regen [имя ...] [--reset-routes] Переген. файлы (всех/указанных) Нет
modify Изменить параметр клиента Нет
backup Создать резервную копию Нет
restore [файл] Восстановить из резервной копии Нет
check Проверка состояния сервера Нет
diagnose [--carrier=ИМЯ] Диагностика (опц. под оператора) Нет
repair-module Пересобрать модуль ядра (DKMS) Да
restart Перезапуск сервиса AmneziaWG -

💡 Примечание: Команды add и remove автоматически применяют изменения через awg syncconf - перезапуск сервиса не требуется.

🤖 Для скриптов и ботов: с v5.21.0 почти все команды управления (от add до repair-module) понимают --json и отвечают одним JSON-объектом, даже если что-то пошло не так - вывод можно спокойно разбирать из своего скрипта или бота. list --json и stats --json, как и раньше, отдают простые массивы. Формат и строгий режим подтверждений AWG_STRICT_CONFIRM=1 расписаны в ADVANCED.md → JSON-интерфейс, а готовый Telegram-бот на этом интерфейсе уже есть - awgram.

📌 Краткая справка

# Установка (русский)
wget -O install_amneziawg.sh https://github.com/bivlked/amneziawg-installer/releases/latest/download/install_amneziawg.sh
sudo bash ./install_amneziawg.sh          # Запуск (+ 2 перезагрузки)

# Установка (English)
wget -O install_amneziawg_en.sh https://github.com/bivlked/amneziawg-installer/releases/latest/download/install_amneziawg_en.sh
sudo bash ./install_amneziawg_en.sh       # Запуск (+ 2 перезагрузки)

# Управление клиентами
sudo bash /root/awg/manage_amneziawg.sh add my_phone       # Добавить
sudo bash /root/awg/manage_amneziawg.sh add my_iphone --psk  # +PresharedKey (Shadowrocket iOS/macOS)
sudo bash /root/awg/manage_amneziawg.sh remove my_phone    # Удалить
sudo bash /root/awg/manage_amneziawg.sh list                # Список
sudo bash /root/awg/manage_amneziawg.sh list --json         # Список в JSON (для скриптов)
sudo bash /root/awg/manage_amneziawg.sh regen               # Перегенерация

# Временный клиент (7 дней)
sudo bash /root/awg/manage_amneziawg.sh add guest --expires=7d

# Статистика трафика
sudo bash /root/awg/manage_amneziawg.sh stats
sudo bash /root/awg/manage_amneziawg.sh stats --json

# Обслуживание
sudo bash /root/awg/manage_amneziawg.sh check               # Диагностика
sudo bash /root/awg/manage_amneziawg.sh backup               # Бэкап
sudo bash /root/awg/manage_amneziawg.sh restart              # Перезапуск

ℹ️ Дополнительная информация

Более подробную информацию о деталях конфигурации, настройках безопасности, параметрах AmneziaWG 2.0 и 3.1, дополнительных командах управления, технических деталях и ответах на другие вопросы вы можете найти в файле ADVANCED.md.

Историю изменений смотрите в CHANGELOG.md.

Планы развития и приоритеты - в docs/ROADMAP.md.

Каскад из двух серверов с раздельным выходом российского и зарубежного трафика (split-tunnel) - в CASCADE.md.

Выборочная маршрутизация российского сегмента через Cloudflare WARP по BGP-фиду, если сервер один - в WARP-RU.md.


❓ FAQ (Основные вопросы)

В разделе: установка и обновление, подключение клиентов, мобильные сети, выбор хостинга и перенос, безопасность и параметры. Разверните нужный вопрос ниже.

В: Будет ли работать после обновления ядра? О: На обычной DKMS-установке да: модуль пересобирается при следующей загрузке, проверка - dkms status. На ARM с готовым модулем нет: после смены ядра туннель сам не поднимется. Штатный способ починки - запустить установщик ещё раз (sudo bash ./install_amneziawg.sh --force), он заново поставит модуль под новое ядро; это полный цикл с двумя перезагрузками.
В: Как полностью удалить AmneziaWG? О: Скачайте скрипт установки (если его нет) и запустите: sudo bash ./install_amneziawg.sh --uninstall.
В: Клиенты не подключаются, что делать? О: 1. Проверьте статус: sudo bash /root/awg/manage_amneziawg.sh check. 2. Проверьте фаервол: sudo ufw status verbose. 3. Проверьте конфиг клиента. 4. Проверьте логи: sudo journalctl -u awg-quick@awg0 -n 50. 5. Убедитесь, что клиент понимает поколение сервера (строка «Поколение протокола» в итоговом отчёте установщика): для 3.1 нужны Amnezia VPN >= 5.0.1.5 или AmneziaWG >= 3.1.0 для Windows, >= 3.1.4 для Android и iOS, для 2.0 - Amnezia VPN >= 4.8.12.7 или AmneziaWG >= 2.0.0.
В: Handshake проходит, но трафик не идёт - что не так? О: Частая причина - ловушка с AllowedIPs при ручной правке. Если хотите пинговать сервер или заходить на него по SSH по внутреннему IP (10.9.9.1 в подсети по умолчанию), добавьте в AllowedIPs клиента подсеть туннеля (по умолчанию 10.9.9.0/24, или вашу, если меняли --subnet). Иначе клиент не маршрутизирует трафик к серверу даже изнутри тоннеля. Режим --route-all (полный туннель 0.0.0.0/0, по умолчанию) покрывает подсеть автоматически; режим --route-amnezia (Amnezia List) и --route-custom= - нет, добавьте вручную. Подробнее - в ADVANCED.md → AllowedIPs.

Отдельно от режима маршрутизации: по умолчанию клиенты изолированы друг от друга на сервере (правило FORWARD awg0→awg0 DROP), даже если оба в одном режиме. Чтобы устройства видели друг друга внутри VPN, ставьте --isolation=off при установке - сервер снимает блокировку, а подсеть туннеля сама добавляется в AllowedIPs клиентов. Подробнее - в ADVANCED.md → Изоляция клиентов.
В: Можно сделать так, чтобы российский трафик шёл напрямую, а остальное - через заграницу? О: Да, через каскад из двух серверов: клиент подключается к серверу-входу (лучше в РФ), российский трафик уходит в интернет напрямую с него, остальное - через второй сервер за границей. Деление на стороне сервера, на клиенте ничего особого настраивать не нужно. Пошаговая инструкция - в CASCADE.md.
В: Можно ли использовать с AWG 1.x клиентами? О: Нет. Ни профиль 3.1, ни профиль 2.0 клиенты AWG 1.x не понимают: клиент должен поддерживать поколение сервера - 3.1 по умолчанию или 2.0, если сервер поставлен на неё. Для AWG 1.x используйте ветку legacy/v4.
В: Ошибка импорта конфига «Неверный ключ: s3» - что делать? О: Вы используете устаревшую версию amneziawg-windows-client (версии 2.0.0+, которая поддерживает AWG 2.0; для сервера 3.1 нужна версия 3.1.0 или новее. Альтернатива - Amnezia VPN >= 4.8.12.7, а для 3.1 >= 5.0.1.5.
В: Как обновить скрипты до новой версии? О: Переустановка сервера не нужна: достаточно заменить два скрипта в /root/awg/. Скачайте их во временную папку, проверьте подпись и только потом замените (нужен minisign: sudo apt install minisign). Прямой wget -O поверх рабочего файла при сбое скачивания оставил бы пустой файл.
  cd "$(mktemp -d)"
  KEY=RWQXfpABHIpZPttqrwYrQNHRTk/iLIz4cVh9KkRwAElHP+CoW/NPEysN
  M=manage_amneziawg.sh C=awg_common.sh   # английская версия: M=manage_amneziawg_en.sh C=awg_common_en.sh
  ok=1 tag=
  for f in "$M" "$C"; do
    wget -q -O "$f"         "https://github.com/bivlked/amneziawg-installer/releases/latest/download/$f" \
      && wget -q -O "$f.minisig" "https://github.com/bivlked/amneziawg-installer/releases/latest/download/$f.minisig" \
      && out=$(minisign -V -P "$KEY" -m "$f" -x "$f.minisig") \
      && t=$(printf '%s\n' "$out" | sed -n "s/^Trusted comment: amneziawg-installer \(v[0-9.]*\) $f\$/\1/p") \
      && [ -n "$t" ] && [ "${tag:-$t}" = "$t" ] || { echo "НЕ ПРОВЕРЕН: $f"; ok=0; break; }
    tag=$t
  done
  [ "$ok" = 1 ] && { old=$(sudo sed -n 's/^SCRIPT_VERSION="\(.*\)"/v\1/p' /root/awg/manage_amneziawg.sh) && [ -n "$old" ] \
    || { echo "НЕ ПРОВЕРЕН: не удалось прочитать установленную версию из /root/awg/manage_amneziawg.sh"; ok=0; }; }
  [ "$ok" = 1 ] && [ "$(printf '%s\n' "$old" "$tag" | sort -V | tail -1)" != "$tag" ] \
    && { echo "НЕ ПРОВЕРЕН: релиз $tag старше установленного $old"; ok=0; }
  [ "$ok" = 1 ] && { sudo install -m 700 "$M" /root/awg/manage_amneziawg.sh \
    && sudo install -m 700 "$C" /root/awg/awg_common.sh && echo "Установлен проверенный релиз $tag" || echo "НЕ УСТАНОВЛЕН до конца: запустите блок ещё раз"; }
  
Если скрипт напечатал «НЕ ПРОВЕРЕН», рабочие файлы не тронуты; «НЕ УСТАНОВЛЕН до конца» значит, что заменены не оба файла, и блок нужно запустить ещё раз. Если установленный `manage` старше v5.7.0, строки версии в нём нет и блок откажет: такой сервер обновляйте новым установщиком с `--force`. Блок принимает только пару файлов из одного релиза и не старше уже установленного, поэтому подменённая ссылка на последний релиз не откатит скрипты на старые подписанные версии. Номер проверенного релиза он печатает: сверьте его со страницей релизов.

С v5.21.0 пара скриптов защищена от рассинхрона: обновили manage, а awg_common забыли (или наоборот), и версии разошлись - скрипт остановится и покажет, какими командами докачать вторую половину, вместо странных ошибок посреди работы.
В: Какое максимальное количество клиентов? О: Подсеть /24 по умолчанию позволяет до 253 клиентов (.2 - .254), что достаточно для большинства сценариев. Нужно больше - укажите более широкую маску через --subnet (например, /16).
В: Какой хостинг подходит? О: Любой VPS с Ubuntu 24.04 LTS / Ubuntu 26.04 / Debian 13 (Debian 12 тоже поддержан, но обычная поддержка у него кончилась - см. таблицу совместимости), root-доступом и от 512 МБ RAM (рекомендуется 1 ГБ). Беру хостинги с незаблокированными IP и неограниченным трафиком. См. рекомендацию ниже.
В: Как перенести VPN на другой сервер? О: 1. Создайте бэкап: sudo bash /root/awg/manage_amneziawg.sh backup. 2. Скопируйте архив из /root/awg/backups/ на новый сервер. 3. Установите AmneziaWG на новом сервере. 4. Восстановите: sudo bash /root/awg/manage_amneziawg.sh restore (интерактивный выбор из списка, или укажите полный путь к архиву). 5. Перегенерируйте конфиги с новым IP: sudo bash /root/awg/manage_amneziawg.sh regen.
В: Как создать временного клиента? О: sudo bash /root/awg/manage_amneziawg.sh add guest --expires=7d. Форматы: 1h, 12h, 1d, 7d, 30d, 4w. Cron проверяет каждые 5 минут и автоматически удаляет истёкших клиентов.
В: Что такое файлы .vpnuri? О: Файлы .vpnuri содержат vpn:// URI для импорта конфигурации в Amnezia Client одним тапом. Скопируйте содержимое файла → откройте Amnezia Client → «Добавить VPN» → «Вставить из буфера».
В: Не подключается Shadowrocket на iOS/macOS - нужен PresharedKey О: С v5.11.1 добавлен флаг --psk для команды add: sudo bash /root/awg/manage_amneziawg.sh add my_iphone --psk. В файле клиента появится строка PresharedKey = ... совпадающая с серверным [Peer]. Для уже созданных клиентов: пересоздать с флагом (remove + add --psk) или вручную - сгенерировать ключ один раз (PSK=$(awg genpsk)) и вставить одно и то же значение в обе стороны (серверный [Peer] клиента и клиентский [Peer] сервера); если значения различаются - handshake не пройдёт. regen сохраняет существующий PSK через rotation. Подробнее - в ADVANCED.md.
В: iPhone подключается, но через ~10 секунд трафик пропадает О: Исправлено в v5.16.1 (Issue #42, спасибо @LiaNdrY). Тогдашний режим маршрутизации по умолчанию (mode 2, «Список Amnezia+DNS») начинался с 0.0.0.0/5 - на iOS этот блок ломал весь список маршрутов, и туннель вставал примерно через 10 секунд. На уже установленном сервере проще всего поставить в конфиге iOS-клиента AllowedIPs = 0.0.0.0/0 (обычная переустановка с --force сохранённый список не меняет). Точечная правка с сохранением split-tunnel - в ADVANCED.md.
В: Почему порт 39743? О: Это случайный порт из верхнего диапазона, выбранный как дефолт. Можно изменить при установке: --port=N (любой порт 1-65535). На мобильных сетях, где оператор режет незнакомые порты, часто выручает 443/udp - его ставит флаг --mobile вместе с пресетом обфускации.
В: Нужен ли Perl на сервере? О: Perl используется опционально для генерации vpn:// URI (.vpnuri файлов). Если Perl отсутствует, .conf файлы создаются как обычно - ими можно пользоваться через импорт файла или QR-код. На Ubuntu и Debian Perl установлен по умолчанию.
В: Можно ли управлять сервером из своих скриптов или Telegram-бота? О: Да. С v5.21.0 команды управления принимают флаг --json и отвечают одним JSON-объектом даже при сбое - его спокойно разберёт любой скрипт (list/stats отдают JSON-массивы давно). Формат обещаю не ломать: новые поля могут появляться, существующие не переименовываются. Для запусков без человека есть --yes, а строгий режим AWG_STRICT_CONFIRM=1 заставляет команды вроде remove отказаться, если --yes забыли, вместо молчаливого согласия. Разбор формата - в ADVANCED.md → JSON-интерфейс. Живой пример - Telegram-бот awgram, он работает ровно через этот интерфейс.
В: Безопасно ли запускать скрипт повторно? Придётся ли перевыпускать конфиги клиентам? О: Да, безопасно, и перевыпускать не придётся. Повторная установка поверх уже работающего сервиса требует флага --force (или AWG_FORCE_REINSTALL=1) - без него скрипт сообщит, что AmneziaWG уже установлен, и ничего не тронет. С --force серверный конфиг пересоздаётся, но серверные ключи и параметры обфускации берутся существующие, а [Peer]-блоки переносятся из прежнего конфига. Клиенты сохраняются все, включая дефолтные my_phone и my_laptop: цикл создания пропускает тех, кто уже есть в конфиге. Выданные файлы и QR-коды остаются валидными.

Оговорка одна: если передать --mobile, --preset, --jc, --jmin или --jmax, весь набор Jc/S/H/I1 сгенерируется заново, а --port (и --mobile, который ставит 443) меняет порт. В обоих случаях старые конфиги перестанут подключаться, их придётся перевыпустить через regen и раздать снова. --endpoint меняет адрес только в заново выпущенных конфигах: старые сохраняют прежний и работают, пока он ведёт на сервер, а новый получат после regen. При обычном обновлении эти флаги не указывайте.

И чаще всего --force не нужен вовсе: чтобы получить новые команды управления, достаточно обновить два скрипта на сервере (вопрос выше). Заново прогонять установщик стоит, только когда менялся он сам.
В: AmneziaWG не подключается через мобильный интернет, а на Wi-Fi работает - что делать? О: Чаще всего дело либо в порте, который глушит оператор, либо в форме маскирующего пакета I1. Различить их помогает сервер: во время попытки подключения посмотрите sudo tcpdump -ni any udp и sudo awg show.
  • Пакетов от телефона нет вовсе: проверьте адрес и порт в Endpoint, фаервол и не заблокирован ли адрес хостера. Если дело в порте, попробуйте --mobile (мобильный пресет и порт 443/udp); на работающем сервере это переустановка с --force и перевыпуск всех конфигов.
  • Пакеты приходят, но endpoint у пира не меняется: не совпадают S1-S4 или H1-H4 на сервере и клиенте.
  • endpoint меняется, счётчик принятого растёт, а latest handshake пустой: это I1. С v5.33.0 новые установки получают его в форме DNS-ответа сами, а в старых профилях I1 правят в .conf клиента, сервер трогать не нужно.
Разбор с готовой строкой - в ADVANCED.md → Рукопожатие на мобильном интернете, частые случаи собраны в обсуждении #38.
В: Почему конфиг AmneziaWG подсвечен жёлтым в приложении Amnezia? О: Это не ошибка: жёлтым приложение Amnezia помечает конфигурации второй линии AmneziaWG. Их выдают серверы 2.0: поставленные до версии 6.0.0, с --protocol=2.0 или там, где установщик выбрал 2.0 сам. Сама по себе метка не говорит, что с соединением что-то не так, и переделывать из-за неё ничего не нужно. Подробнее - в FAQ ADVANCED.md.
В: С включённым AmneziaWG пропадает локальная сеть или не открываются сайты по IPv6 - это нормально? О: Да, так работает полный туннель, режим по умолчанию: весь трафик устройства, включая IPv6, уходит в VPN. По умолчанию IPv6 в туннеле дальше не идёт, и устройство переходит на IPv4. Останется ли доступной локальная сеть, решает клиент: AmneziaWG для Windows её отрезает. Если домашние устройства нужны при включённом VPN, переключите сервер в режим «Amnezia»: переустановка с --force --route-amnezia, затем sudo bash /root/awg/manage_amneziawg.sh regen --reset-routes, чтобы новый режим дошёл до уже выданных профилей. У режима есть своя цена, она описана в ADVANCED.md → IPv6 устройства и локальная сеть.
В: Можно ли поставить AmneziaWG на Synology NAS? О: Этим установщиком нет: на проверенном DS918+ с DSM 7.4.1 ядро 4.4, модулю нужно 5.15 и выше, а собрать его на самой коробке нечем. Сам AmneziaWG на Synology поднимается вручную через userspace-реализацию, пошагово - в ADVANCED.md → AmneziaWG на Synology NAS.
В: После обновления AmneziaWG перестал подключаться - что проверить? О: Посмотрите, что именно обновлялось. Если установщик запускали повторно с флагами, которые меняют параметры обфускации или порт, выданные конфиги нужно перевыпустить, какие это флаги - в вопросе «Безопасно ли запускать скрипт повторно?» выше. На ARM с готовым модулем после обновления ядра запустите установщик ещё раз. Если после обновления приложения Amnezia конфиг стал жёлтым, это не ошибка (вопрос выше). В остальных случаях начните с sudo bash /root/awg/manage_amneziawg.sh check.

Больше ответов и решений см. в ADVANCED.md.


🛠️ Устранение неполадок

  1. Логи: /root/awg/install_amneziawg.log, /root/awg/manage_amneziawg.log
  2. Статус сервиса: sudo systemctl status awg-quick@awg0
  3. Статус AmneziaWG: sudo awg show
  4. Статус UFW: sudo ufw status verbose
  5. Диагностический отчет: sudo bash ./install_amneziawg.sh --diagnostic Подробное описание содержимого отчета см. в ADVANCED.md.

🌐 Экосистема

Клиенты

Какой клиент выбрать? На Android - WG Tunnel или лёгкий AmneziaWG: по нашей проверке 13 октября 2026 оба переподключаются меньше чем за секунду и не теряют туннель при переходе с Wi-Fi на мобильную сеть. На iPhone, Mac и Windows - лёгкий AmneziaWG для вашей платформы (импорт .conf; iPhone и Mac в проверке не участвовали). Amnezia VPN (для сервера 3.1 >= 5.0.1.5, для 2.0 >= 4.8.12.7) работает на всех платформах и принимает ссылку vpn://; в российском App Store его нет.

Клиент Платформа AWG 3.1 AWG 2.0 Тип Примечание
Amnezia VPN Windows, macOS, Linux, Android, iOS ✅ >= 5.0.1.5 ✅ >= 4.8.12.7 Официальный Полнофункциональный, vpn:// URI; на Android после выключения Wi-Fi туннель не восстановился без перезапуска приложения (5.0.3, 13 окт 2026); в российском App Store нет
AmneziaWG Windows ✅ >= 3.1.0 ✅ >= 2.0.0 Официальный Легковесный tunnel manager, импорт .conf
AmneziaWG Android ✅ >= 3.1.4 в Google Play ✅ >= 2.0.0 Официальный Рекомендуется для Android. Легковесный tunnel manager, импорт .conf и QR
AmneziaWG iOS, macOS ✅ >= 3.1.4 ✅ Официальный Легковесный tunnel manager, импорт .conf; есть в российском App Store
WG Tunnel Android ✅ >= 5.6.0 ✅ Сторонний, FOSS Рекомендуется для Android. Auto-tunneling, split tunnel; Google Play, IzzyOnDroid
WG Tunnel Desktop Windows, Linux, macOS ✅ v2 ✅ Сторонний, FOSS Тот же движок, что у Android-версии
VeilBox Windows, macOS не проверено ✅ Сторонний, FOSS Также поддерживает VLESS

Версии с поддержкой 3.1 взяты из заметок к выпускам на 12 октября 2026. Полная таблица совместимости клиентов →

Инструменты настройки

Проект Описание
Junker Веб-генератор подписей AmneziaWG от @spatiumstas - для ручной настройки без установочного скрипта
Any-Tech-ARCHITECT Веб-генератор параметров обфускации от @Vadim-Khristenko - подбор и проверка значений с матрицей совместимости клиентов (GitHub)

Прошивки для роутеров

Проект Платформа Описание
AWG Manager Keenetic (Entware) Веб-интерфейс для управления AWG-туннелями на роутерах Keenetic
AmneziaWG for Merlin ASUS (Asuswrt-Merlin) Аддон AWG 2.0 с веб-интерфейсом, GeoIP/GeoSite маршрутизация

Управление сервером

Проект Платформа Описание
amneziawg-manager macOS Нативный GUI, управляет сервером по SSH через штатный manage - без веб-панели и демонов
awgram Telegram Бот на Rust: добавление/удаление клиентов, статистика, бэкап - через штатный manage
amneziawg-installer-tg-bot Telegram Бот на Python, работает на самом сервере: клиенты кнопками, гостевой доступ со сроком, статистика, бэкап - через штатный manage
amneziawg_dns_adblock Сервер Блокировка рекламы и трекеров в DNS для клиентов VPN от @Cueuler: Blocky на адресе туннеля, ставится поверх готовой установки, нужен полный туннель (--route-all). Файла лицензии нет, автор разрешил свободное использование в обсуждении #237

📰 Упоминания

📖 Гайды и туториалы

📰 Статьи и обзоры

📋 Каталоги и подборки

💬 Форумы и сообщества


📝 Лицензия и Автор

  • Автор скриптов: @bivlked - GitHub
  • Лицензия: MIT - свободное ПО с открытым исходным кодом (см. LICENSE)

Проект пригодился - поставьте ⭐. Так его проще найти другим.

↑ К началу

Frequently asked questions

Is amneziawg-installer free to use?

amneziawg-installer is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does amneziawg-installer do?

Install your own AmneziaWG 3.1 VPN server on a fresh Ubuntu or Debian VPS with one command. Made for networks that block WireGuard. No Docker, QR-code import, 2

What is amneziawg-installer written in?

amneziawg-installer is primarily written in Shell. Its source is publicly available at https://github.com/bivlked/amneziawg-installer, and it has 1,375 GitHub stars.