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
В ядре, без Docker и панелей - нет накладных расходов | сервер только под VPN, защита из коробки | поставил и забыл | QR-код или vpn:// в один тап
Факты на 2026-10-22. Установщик 6.1.1. Сроки поддержки ОС проверены по данным вендоров на 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
Что получится (на x86_64 с Ubuntu 24.04 / 26.04 или Debian 13): сервер AmneziaWG 3.1, настроенный под VPN (форвардинг, тюнинг ядра) и защищённый (фаервол UFW, если согласитесь), и два готовых клиента, my_phone и my_laptop: их конфиги, QR-коды и ссылки vpn:// лежат в /root/awg/. 3 команды, 2 перезагрузки по ходу (при каждом вопросе о перезагрузке ответьте y, после каждой запустите последнюю команду снова), около 20 минут. Для чистого Ubuntu/Debian VPS, не роутер и не shared-хостинг. Подробнее →
Подключить устройство. Нужен клиент с поддержкой 3.1: на Android - WG Tunnel или AmneziaWG, на iPhone - AmneziaWG (отсканируйте QR my_phone.png), на Mac - AmneziaWG (импорт .conf), на Windows - AmneziaWG (импорт my_laptop.conf), на любой платформе - Amnezia VPN (ссылка vpn://), на Linux - через awg-quick. Как забрать файлы с сервера - в разделе После установки; новое устройство потом - одна команда add.
Есть роутер на стоковой прошивке, Hiddify или давно не обновлявшиеся приложения? Добавьте к последней команде --protocol=2.0, почему. На ARM и на штатном Debian 12 установщик сам поставит 2.0.
📘 Полный гайд по развёртыванию: Установка сервера 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` для клиентов со сроком действия.
- **Перезагрузки.** Их две: после обновления системы и после установки модуля (установщик спрашивает, ответьте `y`). После каждой запустите ту же команду снова.
- **Откат**: `--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](https://github.com/bivlked/amneziawg-installer/blob/HEAD/INSTALL_VPS.ru.md#uninstall), модель угроз - в [docs/SIGNING_DESIGN.md](https://github.com/bivlked/amneziawg-installer/blob/HEAD/docs/SIGNING_DESIGN.md#threat-model), провер