brainstate

bivlked/amneziawg-installer · source

Snapshot 0 · 2026-11-04T12:47:27Z · Shell · MIT

Content fingerprintd48c1f6e17f7b749677c4029b53e9181b6bd2e9824806eb59890876c67b304ab

GitHub description at capture

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.0 on request for routers.

README at capture

<a id="top"></a>
<p align="center">
  <b>RU</b> Русский | <b>EN</b> <a href="README.en.md">English</a>
</p>

<p align="center">
  <img src="logo.jpg" alt="AmneziaWG 3.1 / 2.0 VPN installer for Ubuntu, Debian, Raspberry Pi and ARM64 VPS" width="600">
</p>

<h1 align="center">Install AmneziaWG 3.1 / 2.0 VPN on Ubuntu and Debian VPS</h1>

<p align="center"><em>amneziawg-installer одной командой ставит свой VPN-сервер AmneziaWG на VPS с Ubuntu или Debian: модуль ядра, настройка сервера и клиенты с QR-кодами. Работает там, где WireGuard блокируют. Хватит VPS за $3, знать Linux не нужно.</em></p>
<p align="center"><em>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.</em> <a href="README.en.md">English README</a></p>

<p align="center">
  <a href="https://bivlked.github.io/amneziawg-installer/ru/"><img src="https://img.shields.io/badge/Website-bivlked.github.io-3ddc97" alt="Project website"></a>
  <img src="https://img.shields.io/badge/Ubuntu-24.04_|_26.04-orange" alt="Ubuntu 24.04 | 26.04">
  <img src="https://img.shields.io/badge/Debian-13-A81D33" alt="Debian 13">
  <img src="https://img.shields.io/badge/Architecture-x86__64_|_ARM64_|_ARMv7-green" alt="x86_64 | ARM64 | ARMv7">
  <img src="https://img.shields.io/badge/AmneziaWG-3.1_&#124;_2.0-blueviolet" alt="AmneziaWG 3.1 and 2.0">
  <a href="https://github.com/bivlked/amneziawg-installer/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="License"></a>
  <a href="https://github.com/bivlked/amneziawg-installer/releases"><img src="https://img.shields.io/badge/Installer_Version-6.1.2-blue" alt="Version"></a>
  <a href="https://github.com/bivlked/amneziawg-installer/actions/workflows/test.yml"><img src="https://github.com/bivlked/amneziawg-installer/actions/workflows/test.yml/badge.svg" alt="Tests"></a>
  <a href="https://github.com/bivlked/amneziawg-installer/stargazers"><img src="https://img.shields.io/github/stars/bivlked/amneziawg-installer?style=flat" alt="Stars"></a>
  <img src="https://img.shields.io/github/last-commit/bivlked/amneziawg-installer" alt="Last commit">
  <a href="https://deepwiki.com/bivlked/amneziawg-installer"><img src="docs/badges/deepwiki.svg" alt="Ask DeepWiki"></a>
</p>

<p align="center">
  <b>В ядре, без Docker и панелей - нет накладных расходов</b> &nbsp;|&nbsp; <b>сервер только под VPN, защита из коробки</b> &nbsp;|&nbsp; <b>поставил и забыл</b> &nbsp;|&nbsp; <b>QR-код или vpn:// в один тап</b>
</p>

<a id="facts"></a>
<!-- facts:begin -->
<!-- Собирается scripts/update-facts-block.sh из данных репозитория.
     Руками не править: check-docs-consistency.sh сверит блок с источниками. -->
**Факты на 2026-11-03.** Установщик 6.1.2. Сроки поддержки ОС проверены по данным вендоров на 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); уже работающий сервер остаётся на своём поколении |
<!-- facts:end -->

<a id="quickstart"></a>
## 🚀 Быстрый старт

```bash
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-хостинг. [Подробнее →](#ustanovka)
>
> **Подключить устройство.** Нужен клиент с поддержкой 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](ADVANCED.md#linux-client-adv). Как забрать файлы с сервера - в разделе [После установки](#posle-ustanovki); новое устройство потом - одна команда `add`.
>
> Есть роутер на стоковой прошивке, Hiddify или давно не обновлявшиеся приложения? Добавьте к последней команде `--protocol=2.0`, [почему](#awg3). На ARM и на штатном Debian 12 установщик сам поставит 2.0.

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

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

<details>
<summary><strong>Что установщик меняет на сервере (прозрачность)</strong></summary>

Скрипт работает от 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`. Отдельное правило в таблице `raw` отбрасывает входящие TCP-пакеты с IP-опциями ([защита от CVE-2026-98432](ADVANCED.md#ipopts-guard-adv)): его держат `/usr/local/sbin/amneziawg-ipopts-guard` и юнит `amneziawg-ipopts-guard.service`, с `--no-tweaks` оно не ставится. **Настройки 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`, правило против CVE-2026-98432 с его юнитом. 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](INSTALL_VPS.ru.md#uninstall), модель угроз - в [docs/SIGNING_DESIGN.md](docs/SIGNING_DESIGN.md#threat-model), проверка подписи - в разделе [Проверка подписи](#proverka-podpisi).
</details>

<details>
<summary><strong>Неинтерактивная установка (для автоматизации)</strong></summary>

```bash
sudo bash ./install_amneziawg.sh --yes --route-all
```

Все параметры принимаются автоматически. Подробнее: [ADVANCED.md#cli-params-adv](ADVANCED.md#cli-params-adv)
</details>

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

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

---

<p align="center">
  <a href="#zachem">Зачем это нужно</a> •
  <a href="#awg3">AmneziaWG 3.x</a> •
  <a href="#sravnenie">AWG vs WG</a> •
  <a href="#cli-vs-panel">CLI vs панели</a> •
  <a href="#similar-tools">Похожие инструменты</a> •
  <a href="#quickstart">Быстрый старт</a> •
  <a href="#vozmozhnosti">Что умеет</a> •
  <a href="#operatory">Операторы</a> •
  <a href="#trebovaniya">Требования</a> •
  <a href="#recomend-hosting">Хостинг</a> •
  <a href="#ustanovka">Установка</a> •
  <a href="#proverka-podpisi">Проверка подписи</a> •
  <a href="#posle-ustanovki">После установки</a> •
  <a href="#upravlenie">Управление</a> •
  <a href="#dopolnitelno">Дополнительно</a> •
  <a href="#faq-main">FAQ</a> •
  <a href="#nepoladki">Устранение неполадок</a> •
  <a href="#ekosistema">Экосистема</a> •
  <a href="#licenziya">Лицензия</a>
</p>

<a id="zachem"></a>
## 💡 Зачем это нужно

[AmneziaWG](https://github.com/amnezia-vpn) - форк WireGuard с обфускацией трафика. Обфускация делает трафик трудноотличимым от случайного шума для систем DPI, поэтому там, где обычный WireGuard детектируют и блокируют, AmneziaWG обычно продолжает работать.

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

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

Нужен чистый VPS на x86_64 с Ubuntu 24.04 / 26.04 или Debian 13: на них ставится AmneziaWG 3.1. Хватит любого дешёвого VPS, от 512 МБ RAM (комфортно от 1 ГБ). Остальные системы, архитектуры и сроки поддержки - в [Требованиях](#trebovaniya).

---

<a id="awg3"></a>
## 🆕 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:

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

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

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

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

Какое поколение стоит на сервере, установщик пишет в итоговом отчёте строкой «Поколение протокола», а позже его покажет `sudo bash /root/awg/manage_amneziawg.sh check` (строка «Поколение протокола установки»). Версии утилит и загруженного модуля:

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

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

---

<a id="sravnenie"></a>
## ⚖️ AmneziaWG vs WireGuard

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

> Про скорость: на сервере с одним общим vCPU узким местом становится процессор - шифрование и маскировка выполняются на том же ядре. Диагностика: [FAQ в ADVANCED](ADVANCED.md#faq-advanced-adv).

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

---

<a id="cli-vs-panel"></a>
## ⚙️ 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-решения.

---

<a id="similar-tools"></a>
## 🔧 Сравнение с похожими инструментами

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

| Инструмент | Способ | Кому подходит |
|---|---|---|
| **Этот установщик** | SSH + одна bash-команда | Headless VPS, single-purpose сервер, без Docker и панели, ARM-prebuilt'ы |
| **[wiresock/amneziawg-install](https://github.com/wiresock/amneziawg-install)** | SSH + bash, опц. нативная веб-панель и обфускация-прокси (Rust) | Нужна веб-панель без Docker или маскировка трафика отдельным сервисом |
| **[wg-easy](https://github.com/wg-easy/wg-easy)** | Docker + веб-интерфейс | Домашние боксы, на которых уже крутится Docker; нужна панель для клиентов. AmneziaWG там экспериментальный (`EXPERIMENTAL_AWG=true` и модуль ядра на хосте); третья линия есть только в ветке master с 9 сентября 2026, в выпуске v15.4.0 её нет |
| **[Amnezia VPN](https://amnezia.org/)** | Десктоп/моб 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). Здесь обфускация делается в самом протоколе - шифрование заголовков и паддинг AmneziaWG 3.1 плюс маскирующий пакет `I1` - и ориентирована на типовой мобильный 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](https://bivlked.github.io/amneziawg-installer/ru/compare/).

---

<a id="vozmozhnosti"></a>
## ✨ Что умеет

* **Обход блокировок** - 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); на ARM ставится AmneziaWG 2.0
* **Оптимизация для мобильных сетей** - `--preset=mobile` для Tele2, Yota, Мегафон и других операторов с DPI-блокировками. Тонкая настройка через `--jc`, `--jmin`, `--jmax` ([подробнее](ADVANCED.md#presets-adv))
* **Опциональный dual-stack IPv6** - флаг `--allow-ipv6-tunnel` добавляет IPv6 внутри туннеля рядом с IPv4 (по умолчанию выключено, [подробнее](ADVANCED.md#ipv6-tunnel-adv))

<details>
<summary><strong>Все возможности</strong></summary>

* Нативная генерация ключей и конфигов через `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
</details>

---

<a id="operatory"></a>
## 📡 С какими операторами проверено

Установщик настраивает обфускацию AmneziaWG под мобильные сети с DPI: `--mobile` включает мобильный пресет и порт 443/udp одним флагом. Если VPN нестабилен через мобильный интернет, на новом сервере ставьте сразу с `--mobile`. На уже работающем это переустановка с `--force --mobile`: параметры обфускации и порт поменяются, и всем клиентам придётся перевыпустить конфиги через `regen`. Если рукопожатие на мобильной сети не проходит вовсе, сначала прочитайте [разбор](ADVANCED.md#no-hs-mobile-adv). Ниже - рабочие конфигурации по отчётам пользователей из issues и discussions, собранным на серверах 2.0 (не гарантия: блокировки и параметры операторов меняются со временем). Пресеты и `I1` в профиле 3.1 задаются так же; результатами на 3.1 делитесь в [Discussions](https://github.com/bivlked/amneziawg-installer/discussions). Конфигурации из отчётов:

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

Вашего оператора нет в списке? Попробуйте `--preset=mobile`. Не помогло - заведите тред в [Discussions](https://github.com/bivlked/amneziawg-installer/discussions) или [Issues](https://github.com/bivlked/amneziawg-installer/issues), добавлю в список.

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

---

<a id="trebovaniya"></a>
## 🖥️ Требования

* **ОС:** **Чистая** установка **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 поддерживается: исходник модуля из PPA установщик исправляет сам ([подробнее](ADVANCED.md#kernel-70-backport-adv)) |
| Debian 13 (trixie) | ✅ выбор по умолчанию | до 2028-08-09 | Протестировано. PPA через маппинг codename на noble, DEB822 |
| Ubuntu 26.04 | ✅ поддерживается | до 2031-05-29 | PPA публикует пакеты под неё (`resolute`). Под ядро 7.0.0-38 модуль из PPA сам не собирается, установщик исправляет его исходник сам ([подробнее](ADVANCED.md#kernel-70-backport-adv)) |
| 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 |

**Поддержка архитектур:**

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

> На ARM установщик загружает готовые модули ядра при наличии и автоматически переключается на DKMS-сборку, если нужно. Профиль 3.1 на ARM пока не выдаётся: установщик сам ставит 2.0, клиентам нужна поддержка 2.0.

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

**Клиенты:**
* **Android:** [WG Tunnel](https://github.com/wgtunnel/android) (профиль 3.1 с версии **5.6.0**) или лёгкий [AmneziaWG](https://github.com/amnezia-vpn/amneziawg-android) (профиль 3.1 с **3.1.4** в Google Play). Импорт QR-кодом `имя.png`; почему они - [какой клиент выбрать](#ekosistema)
* **Все платформы:** [Amnezia VPN](https://github.com/amnezia-vpn/amnezia-client/releases) - полнофункциональный VPN-клиент: профиль 3.1 с версии **5.0.1.5**, профиль 2.0 с **4.8.12.7**. Импорт через `vpn://` URI
* **iPhone, iPad, Mac:** [AmneziaWG](https://apps.apple.com/app/amneziawg/id6478942365) (профиль 3.1 с версии **3.1.4**, на октябрь 2026 есть и в российском App Store). На iPhone и iPad импорт QR-кодом `имя.png` или файлом `имя.conf`, на Mac - файлом `имя.conf`
* **Windows:** [AmneziaWG](https://github.com/amnezia-vpn/amneziawg-windows-client/releases) - легковесный tunnel manager: профиль 3.1 с версии **3.1.0**, профиль 2.0 с **2.0.0**. Импорт через `.conf` файлы
* **Linux, в том числе сервер без графики:** `awg-quick` из `amneziawg-tools` - [подключение Linux-машины как клиента](ADVANCED.md#linux-client-adv)

> [Какие клиенты понимают 3.1, полная таблица →](ADVANCED.md#client-gen-adv)

---

<a id="recomend-hosting"></a>
## 🚀 Рекомендация хостинга

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

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

Опробовал и рекомендую [**FreakHosting**](https://freakhosting.com/clientarea/aff.php?aff=392). В частности, их линейка **BUDGET VPS** предлагает отличное соотношение цены и качества. Это партнёрская ссылка: при заказе по ней я получаю небольшой процент, для вас цена та же.

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

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

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

---

<a id="ustanovka"></a>
## 🔧 Установка (Рекомендуемый способ)

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

1.  **Подключитесь** к **чистому** серверу (Ubuntu 24.04 / Ubuntu 26.04 / Debian 13) по SSH.
    > **Совет:** После создания сервера подождите 5-10 минут, чтобы завершились все фоновые процессы инициализации системы, прежде чем запускать установку.

2.  **Скачайте скрипт:**
    ```bash
    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.  **Сделайте его исполняемым:**
    ```bash
    chmod +x install_amneziawg.sh
    ```
4.  **Запустите с `sudo`:**
    ```bash
    sudo bash ./install_amneziawg.sh
    ```
    *(Вы также можете передать параметры командной строки, см. `sudo bash ./install_amneziawg.sh --help` или [ADVANCED.md#install-cli-adv](ADVANCED.md#install-cli-adv))*

    > **English version:** Для вывода на английском используйте `install_amneziawg_en.sh`:
    > ```bash
    > 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` и локальная сеть](ADVANCED.md#client-ipv6-adv).
    * **Режим маршрутизации:** Определяет, какой трафик пойдет через 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.  **Продолжение:** После каждой перезагрузки **снова запустите скрипт** той же командой:
    ```bash
    sudo bash ./install_amneziawg.sh
    ```
    Скрипт продолжит с нужного шага, прежние вопросы не повторяются. Если UFW ещё не включён, в третьем запуске будет один новый вопрос: «Включить UFW? [y/N]». Ответьте `y`: по Enter фаервол не включается, и сервер остаётся без него. С `--yes` UFW включается без вопроса.

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

---

<a id="proverka-podpisi"></a>
## 🔏 Проверка подписи (необязательно, лучше до запуска)

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

```bash
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`. Тег в этой строке должен совпадать с последним релизом на [странице релизов](https://github.com/bivlked/amneziawg-installer/releases), а имя - с файлом, который вы скачали. Если проверка не прошла, скачайте оба файла заново: между двумя закачками мог выйти новый релиз. Не прошла повторно - не запускайте.

**Ключ сверяйте целиком.** Публичный ключ проекта: `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;
- скрипты, заменённые вручную: для них повторите команду выше с их именами.

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

<a id="posle-ustanovki"></a>
## 📦 После установки

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

| Файл | Путь | Назначение |
|------|------|------------|
| `.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 |

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

```bash
scp root@IP_СЕРВЕРА:/root/awg/my_phone.conf .
```

<details>
<summary><strong>Импорт в WG Tunnel или AmneziaWG на Android, в AmneziaWG на iPhone</strong></summary>

1. Скачайте QR-код конфига: `scp root@IP_СЕРВЕРА:/root/awg/my_phone.png .`
2. Откройте файл на экране компьютера
3. На телефоне: «+» → пункт импорта по QR-коду
</details>

<details>
<summary><strong>Импорт в Amnezia VPN (телефон) через vpn:// URI</strong></summary>

1. На сервере выполните: `cat /root/awg/my_phone.vpnuri`
2. Скопируйте текст и отправьте себе (Telegram, почта и т.д.)
3. На телефоне: Amnezia VPN → «Добавить VPN» → «Вставить из буфера»
</details>

<details>
<summary><strong>Импорт в Amnezia VPN через QR-код ссылки</strong></summary>

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 его не сканируйте.
</details>

<details>
<summary><strong>Импорт в AmneziaWG for Windows</strong></summary>

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

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

* Конфигурация сервера: `/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`

---

<a id="upravlenie"></a>
## 👥 Управление клиентами (`manage_amneziawg.sh`)

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

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

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

Полный список - `... help` или [ADVANCED.md#manage-commands-adv](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]`             | Статистика трафика по клиентам |       Нет     |
| `qr`      | `<имя> [--vpn]`        | QR-код клиента прямо в терминале (`--vpn` - QR ссылки `vpn://`) |       Нет     |

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

| Команда   | Аргументы              | Описание                     | Перезапуск? |
| :-------- | :--------------------- | :--------------------------- | :-----------: |
| `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-интерфейс](ADVANCED.md#json-api-adv), а готовый Telegram-бот на этом интерфейсе уже есть - [awgram](#ekosistema).

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

```bash
# Установка (русский)
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              # Перезапуск
```

---

<a id="dopolnitelno"></a>
## ℹ️ Дополнительная информация

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

Историю изменений смотрите в **[CHANGELOG.md](CHANGELOG.md)**.

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

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

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

---

<a id="faq-main"></a>
## ❓ FAQ (Основные вопросы)

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

<details>
  <summary><strong>В: Как установить AmneziaWG 3.1 на свой сервер?</strong></summary>
  <b>О:</b> На чистом VPS на x86_64 с Ubuntu 24.04, 26.04 или Debian 13 - тремя командами из <a href="#quickstart">быстрого старта</a>: скачать <code>install_amneziawg.sh</code> из последнего релиза и запустить его через <code>sudo bash</code>. Профиль 3.1 ставится по умолчанию, модулем ядра и без Docker; на ARM и на штатном Debian 12 установщик сам поставит 2.0, а когда ещё он так делает - <a href="#awg3">в разделе про 3.1</a>. Понадобятся две перезагрузки: при каждом вопросе «Перезагрузить сейчас?» ответьте <code>y</code>, а после каждой перезагрузки подключитесь снова и повторите последнюю команду. Другой путь - официальное приложение Amnezia VPN, оно разворачивает сервер в Docker; чем подходы отличаются - <a href="#similar-tools">в сравнении</a>.
</details>

<details>
  <summary><strong>В: Будет ли работать после обновления ядра?</strong></summary>
  <b>О:</b> На обычной DKMS-установке да: модуль пересобирается при следующей загрузке, проверка - <code>dkms status</code>. На ARM с готовым модулем нет: после смены ядра туннель сам не поднимется. Штатный способ починки - запустить установщик ещё раз (<code>sudo bash ./install_amneziawg.sh --force</code>), он заново поставит модуль под новое ядро; это полный цикл с двумя перезагрузками.
</details>

<details>
  <summary><strong>В: Как полностью удалить AmneziaWG?</strong></summary>
  <b>О:</b> Скачайте скрипт установки (если его нет) и запустите: <code>sudo bash ./install_amneziawg.sh --uninstall</code>.
</details>

<details>
  <summary><strong>В: Клиенты не подключаются, что делать?</strong></summary>
  <b>О:</b> 1. Проверьте статус: <code>sudo bash /root/awg/manage_amneziawg.sh check</code>. 2. Проверьте фаервол: <code>sudo ufw status verbose</code>. 3. Проверьте конфиг клиента. 4. Проверьте логи: <code>sudo journalctl -u awg-quick@awg0 -n 50</code>. 5. Убедитесь, что клиент понимает поколение сервера (строка «Поколение протокола» в итоговом отчёте установщика или «Поколение протокола установки» в выводе <code>check</code>): для 3.1 нужны Amnezia VPN <b>>= 5.0.1.5</b>, AmneziaWG <b>>= 3.1.0</b> для Windows и <b>>= 3.1.4</b> для Android и iOS или WG Tunnel <b>>= 5.6.0</b> на Android, для 2.0 - Amnezia VPN <b>>= 4.8.12.7</b> или AmneziaWG <b>>= 2.0.0</b>.
</details>

<details>
  <summary><strong>В: Почему у меня поставился AmneziaWG 2.0, а не 3.1?</strong></summary>
  <b>О:</b> Профиль 3.1 установщик выдаёт только на x86_64 с ядром 6.7 и новее, это сознательная осторожность для платформ, которые ещё не проверены замером. Поэтому на ARM (Raspberry Pi, Oracle Ampere, Hetzner CAX) и на штатном Debian 12 (ядро 6.1) он сам ставит 2.0. Ещё он переходит на 2.0, если установленные утилиты <code>awg</code> или модуль ядра не понимают параметры 3.1 (или останавливается и говорит, что исправить). Причину он пишет в итоговом отчёте. Чтобы получить 3.1, нужен сервер на x86_64 с Ubuntu 24.04 / 26.04 или Debian 13. Если сервер был поставлен до версии 6.0.0, он остаётся на 2.0 и после обновления: переход - это <code>--uninstall</code> и новая установка с новыми профилями для всех клиентов. Сначала заберите резервную копию с сервера: <code>--uninstall</code> стирает <code>/root/awg/</code>. Подробнее - в <a href="ADVANCED.md#awg3-fallback-adv">ADVANCED.md</a>.
</details>

<details>
  <summary><strong>В: Как подключить к VPN Linux-машину, в том числе сервер без графики?</strong></summary>
  <b>О:</b> Через <code>awg-quick</code> из <code>amneziawg-tools</code>: положите файл клиента как <code>/etc/amnezia/amneziawg/awg0.conf</code> и поднимите туннель командой <code>sudo awg-quick up awg0</code>. Для профиля 3.1 модуль (или amneziawg-go) и утилиты на клиенте тоже должны поддерживать 3.1. Пошагово - в <a href="ADVANCED.md#linux-client-adv">ADVANCED.md → Подключение Linux-машины как клиента</a>.
</details>

<details>
  <summary><strong>В: Handshake проходит, но трафик не идёт - что не так?</strong></summary>
  <b>О:</b> Частая причина - ловушка с <code>AllowedIPs</code> при ручной правке. Если хотите пинговать сервер или заходить на него по SSH по внутреннему IP (<code>10.9.9.1</code> в подсети по умолчанию), добавьте в <code>AllowedIPs</code> клиента <b>подсеть туннеля</b> (по умолчанию <code>10.9.9.0/24</code>, или вашу, если меняли <code>--subnet</code>). Иначе клиент не маршрутизирует трафик к серверу даже изнутри тоннеля. Режим <code>--route-all</code> (полный туннель <code>0.0.0.0/0</code>, по умолчанию) покрывает подсеть автоматически; режим <code>--route-amnezia</code> (Amnezia List) и <code>--route-custom=</code> - нет, добавьте вручную. Подробнее - в <a href="ADVANCED.md#allowedips-adv">ADVANCED.md → AllowedIPs</a>.
  <br><br>
  Отдельно от режима маршрутизации: по умолчанию клиенты изолированы друг от друга на сервере (правило <code>FORWARD awg0→awg0 DROP</code>), даже если оба в одном режиме. Чтобы устройства видели друг друга внутри VPN, ставьте <code>--isolation=off</code> при установке - сервер снимает блокировку, а подсеть туннеля сама добавляется в <code>AllowedIPs</code> клиентов. Подробнее - в <a href="ADVANCED.md#client-isolation-adv">ADVANCED.md → Изоляция клиентов</a>.
</details>

<details>
  <summary><strong>В: Можно сделать так, чтобы российский трафик шёл напрямую, а остальное - через заграницу?</strong></summary>
  <b>О:</b> Да, через каскад из двух серверов: клиент подключается к серверу-входу (лучше в РФ), российский трафик уходит в интернет напрямую с него, остальное - через второй сервер за границей. Деление на стороне сервера, на клиенте ничего особого настраивать не нужно. Пошаговая инструкция - в <a href="CASCADE.md">CASCADE.md</a>.
</details>

<details>
  <summary><strong>В: Можно ли использовать с AWG 1.x клиентами?</strong></summary>
  <b>О:</b> Нет. Ни профиль 3.1, ни профиль 2.0 клиенты AWG 1.x не понимают: клиент должен поддерживать поколение сервера - 3.1 по умолчанию или 2.0, если сервер поставлен на неё. Для AWG 1.x используйте ветку <a href="https://github.com/bivlked/amneziawg-installer/tree/legacy/v4">legacy/v4</a>.
</details>

<details>
  <summary><strong>В: Ошибка импорта конфига «Неверный ключ: s3» - что делать?</strong></summary>
  <b>О:</b> Вы используете устаревшую версию <code>amneziawg-windows-client</code> (< 2.0.0). Обновите до <a href="https://github.com/amnezia-vpn/amneziawg-windows-client/releases"><b>версии 2.0.0+</b></a>, которая поддерживает AWG 2.0; для сервера 3.1 нужна версия 3.1.0 или новее. Альтернатива - <a href="https://github.com/amnezia-vpn/amnezia-client/releases"><b>Amnezia VPN</b></a> >= 4.8.12.7, а для 3.1 >= 5.0.1.5.
</details>

<details>
  <summary><strong>В: Как обновить скрипты до новой версии?</strong></summary>
  <b>О:</b> Переустановка сервера не нужна: достаточно заменить два скрипта в <code>/root/awg/</code>. Скачайте их во временную папку, проверьте подпись и только потом замените (нужен <code>minisign</code>: <code>sudo apt install minisign</code>). Прямой <code>wget -O</code> поверх рабочего файла при сбое скачивания оставил бы пустой файл.
  <pre>
  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 "НЕ УСТАНОВЛЕН до конца: запустите блок ещё раз"; }
  </pre>
  Если скрипт напечатал «НЕ ПРОВЕРЕН», рабочие файлы не тронуты; «НЕ УСТАНОВЛЕН до конца» значит, что заменены не оба файла, и блок нужно запустить ещё раз. Если установленный `manage` старше v5.7.0, строки версии в нём нет и блок откажет: такой сервер обновляйте новым установщиком с `--force`. Блок принимает только пару файлов из одного релиза и не старше уже установленного, поэтому подменённая ссылка на последний релиз не откатит скрипты на старые подписанные версии. Номер проверенного релиза он печатает: сверьте его со <a href="https://github.com/bivlked/amneziawg-installer/releases">страницей релизов</a>.
  <br><br>
  С v5.21.0 пара скриптов защищена от рассинхрона: обновили manage, а awg_common забыли (или наоборот), и версии разошлись - скрипт остановится и покажет, какими командами докачать вторую половину, вместо странных ошибок посреди работы.
</details>

<details>
  <summary><strong>В: Какое максимальное количество клиентов?</strong></summary>
  <b>О:</b> Подсеть <code>/24</code> по умолчанию позволяет до 253 клиентов (.2 - .254), что достаточно для большинства сценариев. Нужно больше - укажите более широкую маску через <code>--subnet</code> (например, <code>/16</code>).
</details>

<details>
  <summary><strong>В: Какой хостинг подходит?</strong></summary>
  <b>О:</b> Любой VPS - полноценная виртуальная машина (KVM или аналог) на x86_64 с Ubuntu 24.04 LTS / Ubuntu 26.04 / Debian 13 (так ставится AmneziaWG 3.1; штатный Debian 12 (ядро 6.1) тоже поддержан, но на 2.0 и без обычной поддержки - см. таблицу совместимости), root-доступом и от 512 МБ RAM (рекомендуется 1 ГБ). В контейнере (OpenVZ, LXC, Docker) установщик не работает, для него есть путь через userspace - <a href="ADVANCED.md#lxc-userspace-adv">ADVANCED.md</a>. Беру хостинги с незаблокированными IP и неограниченным трафиком. См. <a href="#recomend-hosting">рекомендацию</a> ниже.
</details>

<details>
  <summary><strong>В: Как перенести VPN на другой сервер?</strong></summary>
  <b>О:</b> 1. Создайте бэкап: <code>sudo bash /root/awg/manage_amneziawg.sh backup</code>. 2. Скопируйте архив из <code>/root/awg/backups/</code> на новый сервер. 3. Установите AmneziaWG на новом сервере. 4. Восстановите: <code>sudo bash /root/awg/manage_amneziawg.sh restore</code> (интерактивный выбор из списка, или укажите полный путь к архиву). 5. Перегенерируйте конфиги с новым IP: <code>sudo bash /root/awg/manage_amneziawg.sh regen</code>. Учтите поколение: <code>restore</code> возвращает сервер к поколению копии. Если старый сервер был на 2.0, а новый поставился на 3.1, после восстановления он станет 2.0 (<code>restore</code> об этом предупредит). Хотите заодно перейти на 3.1 - не восстанавливайте копию, а выдайте клиентам новые профили.
</details>

<details>
  <summary><strong>В: Как создать временного клиента?</strong></summary>
  <b>О:</b> <code>sudo bash /root/awg/manage_amneziawg.sh add guest --expires=7d</code>. Форматы: <code>1h</code>, <code>12h</code>, <code>1d</code>, <code>7d</code>, <code>30d</code>, <code>4w</code>. Cron проверяет каждые 5 минут и автоматически удаляет истёкших клиентов.
</details>

<details>
  <summary><strong>В: Что такое файлы .vpnuri?</strong></summary>
  <b>О:</b> Файлы <code>.vpnuri</code> содержат <code>vpn://</code> URI для импорта конфигурации в Amnezia Client одним тапом. Скопируйте содержимое файла → откройте Amnezia Client → «Добавить VPN» → «Вставить из буфера».
</details>

<details>
  <summary><strong>В: Не подключается Shadowrocket на iOS/macOS - нужен PresharedKey</strong></summary>
  <b>О:</b> Для этого у команды <code>add</code> есть флаг <code>--psk</code>: <code>sudo bash /root/awg/manage_amneziawg.sh add my_iphone --psk</code>. В файле клиента появится строка <code>PresharedKey = ...</code> совпадающая с серверным <code>[Peer]</code>. Для уже созданных клиентов: пересоздать с флагом (<code>remove</code> + <code>add --psk</code>) или вручную - сгенерировать ключ <em>один раз</em> (<code>PSK=$(awg genpsk)</code>) и вставить <em>одно и то же значение</em> в обе стороны (серверный <code>[Peer]</code> клиента и клиентский <code>[Peer]</code> сервера); если значения различаются - handshake не пройдёт. <code>regen</code> сохраняет существующий PSK через rotation. Подробнее - в <a href="ADVANCED.md#manage-cli-adv">ADVANCED.md</a>.
</details>

<details>
  <summary><strong>В: iPhone подключается, но через ~10 секунд трафик пропадает</strong></summary>
  <b>О:</b> Исправлено в v5.16.1 (Issue #42, спасибо @LiaNdrY). Тогдашний режим маршрутизации по умолчанию (mode 2, «Список Amnezia+DNS») начинался с <code>0.0.0.0/5</code> - на iOS этот блок ломал весь список маршрутов, и туннель вставал примерно через 10 секунд. На уже установленном сервере проще всего поставить в конфиге iOS-клиента <code>AllowedIPs = 0.0.0.0/0</code> (обычная переустановка с <code>--force</code> сохранённый список не меняет). Точечная правка с сохранением split-tunnel - в <a href="ADVANCED.md#faq-iphone-10s-adv">ADVANCED.md</a>.
</details>

<details>
  <summary><strong>В: Почему порт 39743?</strong></summary>
  <b>О:</b> Это случайный порт из верхнего диапазона, выбранный как дефолт. Можно изменить при установке: <code>--port=N</code> (любой порт 1-65535). На мобильных сетях, где оператор режет незнакомые порты, часто выручает <code>443/udp</code> - его ставит флаг <code>--mobile</code> вместе с пресетом обфускации.
</details>

<details>
  <summary><strong>В: Нужен ли Perl на сервере?</strong></summary>
  <b>О:</b> Perl используется опционально для генерации <code>vpn://</code> URI (<code>.vpnuri</code> файлов). Если Perl отсутствует, <code>.conf</code> файлы создаются как обычно - ими можно пользоваться через импорт файла или QR-код. На Ubuntu и Debian Perl установлен по умолчанию.
</details>

<details>
  <summary><strong>В: Можно ли управлять сервером из своих скриптов или Telegram-бота?</strong></summary>
  <b>О:</b> Да. С v5.21.0 команды управления принимают флаг <code>--json</code> и отвечают одним JSON-объектом даже при сбое - его спокойно разберёт любой скрипт (<code>list</code>/<code>stats</code> отдают JSON-массивы давно). Формат обещаю не ломать: новые поля могут появляться, существующие не переименовываются и не меняют тип. Для запусков без человека есть <code>--yes</code>, а строгий режим <code>AWG_STRICT_CONFIRM=1</code> заставляет команды вроде <code>remove</code> отказаться, если <code>--yes</code> забыли, вместо молчаливого согласия. Разбор формата - в <a href="ADVANCED.md#json-api-adv">ADVANCED.md → JSON-интерфейс</a>. Живой пример - Telegram-бот <a href="https://github.com/ekuraev/awgram">awgram</a>, он работает ровно через этот интерфейс.
</details>

<details>
  <summary><strong>В: Безопасно ли запускать скрипт повторно? Придётся ли перевыпускать конфиги клиентам?</strong></summary>
  <b>О:</b> Да, безопасно, и перевыпускать не придётся. Повторная установка поверх уже работающего сервиса требует флага <code>--force</code> (или <code>AWG_FORCE_REINSTALL=1</code>) - без него скрипт сообщит, что AmneziaWG уже установлен, и ничего не тронет. С <code>--force</code> серверный конфиг пересоздаётся, но серверные ключи и параметры обфускации берутся существующие, а <code>[Peer]</code>-блоки переносятся из прежнего конфига. Клиенты сохраняются все, включая дефолтные <code>my_phone</code> и <code>my_laptop</code>: цикл создания пропускает тех, кто уже есть в конфиге. Выданные файлы и QR-коды остаются валидными.
  <br><br>
  Оговорка одна: если передать <code>--mobile</code>, <code>--preset</code>, <code>--jc</code>, <code>--jmin</code> или <code>--jmax</code>, весь набор <code>Jc</code>/<code>S</code>/<code>H</code>/<code>I1</code> сгенерируется заново, а <code>--port</code> (и <code>--mobile</code>, который ставит 443) меняет порт. В обоих случаях старые конфиги перестанут подключаться, их придётся перевыпустить через <code>regen</code> и раздать снова. <code>--endpoint</code> меняет адрес только в заново выпущенных конфигах: старые сохраняют прежний и работают, пока он ведёт на сервер, а новый получат после <code>regen</code>. При обычном обновлении эти флаги не указывайте.
  <br><br>
  И чаще всего <code>--force</code> не нужен вовсе: чтобы получить новые команды управления, достаточно обновить два скрипта на сервере (вопрос выше). Заново прогонять установщик стоит, только когда менялся он сам.
</details>

<details>
  <summary><strong>В: AmneziaWG не подключается через мобильный интернет, а на Wi-Fi работает - что делать?</strong></summary>
  <b>О:</b> Чаще всего дело либо в порте, который глушит оператор, либо в форме маскирующего пакета <code>I1</code>. Различить их помогает сервер: во время попытки подключения посмотрите <code>sudo tcpdump -ni any udp</code> и <code>sudo awg show</code>.
  <ul>
    <li>Пакетов от телефона нет вовсе: проверьте адрес и порт в <code>Endpoint</code>, фаервол и не заблокирован ли адрес хостера. Если дело в порте, попробуйте <code>--mobile</code> (мобильный пресет и порт 443/udp); на работающем сервере это переустановка с <code>--force</code> и перевыпуск всех конфигов.</li>
    <li>Пакеты приходят, но <code>endpoint</code> у пира не меняется: не совпадают <code>S1</code>-<code>S4</code> или <code>H1</code>-<code>H4</code> на сервере и клиенте.</li>
    <li><code>endpoint</code> меняется, счётчик принятого растёт, а <code>latest handshake</code> пустой: это <code>I1</code>. С v5.33.0 новые установки получают его в форме DNS-ответа сами, а в старых профилях <code>I1</code> правят в <code>.conf</code> клиента, сервер трогать не нужно.</li>
  </ul>
  Разбор с готовой строкой - в <a href="ADVANCED.md#no-hs-mobile-adv">ADVANCED.md → Рукопожатие на мобильном интернете</a>, частые случаи собраны в <a href="https://github.com/bivlked/amneziawg-installer/discussions/38">обсуждении #38</a>.
</details>

<details>
  <summary><strong>В: Почему конфиг AmneziaWG подсвечен жёлтым в приложении Amnezia?</strong></summary>
  <b>О:</b> Это не ошибка: жёлтым приложение Amnezia помечает конфигурации второй линии AmneziaWG. Их выдают серверы 2.0: поставленные до версии 6.0.0, с <code>--protocol=2.0</code> или там, где установщик выбрал 2.0 сам. Сама по себе метка не говорит, что с соединением что-то не так, и переделывать из-за неё ничего не нужно. Подробнее - в <a href="ADVANCED.md#faq-yellow-adv">FAQ ADVANCED.md</a>.
</details>

<details>
  <summary><strong>В: С включённым AmneziaWG пропадает локальная сеть или не открываются сайты по IPv6 - это нормально?</strong></summary>
  <b>О:</b> Да, так работает полный туннель, режим по умолчанию: весь трафик устройства, включая IPv6, уходит в VPN. По умолчанию IPv6 в туннеле дальше не идёт, и устройство переходит на IPv4. Останется ли доступной локальная сеть, решает клиент: AmneziaWG для Windows её отрезает. Если домашние устройства нужны при включённом VPN, переключите сервер в режим «Amnezia»: переустановка с <code>--force --route-amnezia</code>, затем <code>sudo bash /root/awg/manage_amneziawg.sh regen --reset-routes</code>, чтобы новый режим дошёл до уже выданных профилей. У режима есть своя цена, она описана в <a href="ADVANCED.md#client-ipv6-adv">ADVANCED.md → IPv6 устройства и локальная сеть</a>.
</details>

<details>
  <summary><strong>В: Можно ли поставить AmneziaWG на Synology NAS?</strong></summary>
  <b>О:</b> Этим установщиком нет: на проверенном DS918+ с DSM 7.4.1 ядро 4.4, модулю нужно 5.15 и выше, а собрать его на самой коробке нечем. Сам AmneziaWG на Synology поднимается вручную через userspace-реализацию, пошагово - в <a href="ADVANCED.md#synology-adv">ADVANCED.md → AmneziaWG на Synology NAS</a>.
</details>

<details>
  <summary><strong>В: После обновления AmneziaWG перестал подключаться - что проверить?</strong></summary>
  <b>О:</b> Посмотрите, что именно обновлялось. Если установщик запускали повторно с флагами, которые меняют параметры обфускации или порт, выданные конфиги нужно перевыпустить, какие это флаги - в вопросе «Безопасно ли запускать скрипт повторно?» выше. На ARM с готовым модулем после обновления ядра запустите установщик ещё раз. Если после обновления приложения Amnezia конфиг стал жёлтым, это не ошибка (вопрос выше). В остальных случаях начните с <code>sudo bash /root/awg/manage_amneziawg.sh check</code>.
</details>

> Больше ответов и решений см. в **[ADVANCED.md](ADVANCED.md)**.

---

<a id="nepoladki"></a>
## 🛠️ Устранение неполадок

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](ADVANCED.md#diagnostic-report-adv).

---

<a id="ekosistema"></a>
## 🌐 Экосистема

### Клиенты

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

| Клиент | Платформа | AWG 3.1 | AWG 2.0 | Тип | Примечание |
|--------|-----------|:-------:|:-------:|-----|------------|
| [Amnezia VPN](https://github.com/amnezia-vpn/amnezia-client/releases) | 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](https://github.com/amnezia-vpn/amneziawg-windows-client/releases) | Windows | ✅ >= 3.1.0 | ✅ >= 2.0.0 | Официальный | Легковесный tunnel manager, импорт `.conf` |
| **[AmneziaWG](https://github.com/amnezia-vpn/amneziawg-android)** | Android | ✅ >= 3.1.4 в Google Play | ✅ >= 2.0.0 | Официальный | **Рекомендуется для Android.** Легковесный tunnel manager, импорт `.conf` и QR |
| [AmneziaWG](https://apps.apple.com/app/amneziawg/id6478942365) | iOS, macOS | ✅ >= 3.1.4 | ✅ | Официальный | Легковесный tunnel manager, импорт `.conf`; есть в российском App Store |
| **[WG Tunnel](https://github.com/wgtunnel/android)** | Android | ✅ >= 5.6.0 | ✅ | Сторонний, FOSS | **Рекомендуется для Android.** Auto-tunneling, split tunnel; Google Play, IzzyOnDroid |
| [WG Tunnel Desktop](https://github.com/wgtunnel/desktop) | Windows, Linux, macOS | ✅ v2 | ✅ | Сторонний, FOSS | Тот же движок, что у Android-версии |
| [VeilBox](https://github.com/artem4150/VeilBox) | Windows, macOS | не проверено | ✅ | Сторонний, FOSS | Также поддерживает VLESS |

> Версии с поддержкой 3.1 взяты из заметок к выпускам на 12 октября 2026. [Полная таблица совместимости клиентов →](ADVANCED.md#client-compat-adv)

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

| Проект | Описание |
|--------|----------|
| [Junker](https://spatiumstas.github.io/junker/) | Веб-генератор подписей AmneziaWG от @spatiumstas - для ручной настройки без установочного скрипта |
| [Any-Tech-ARCHITECT](https://architect.vai-rice.space/) | Веб-генератор параметров обфускации от @Vadim-Khristenko - подбор и проверка значений с матрицей совместимости клиентов ([GitHub](https://github.com/Vadim-Khristenko/Any-Tech-ARCHITECT)) |

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

| Проект | Платформа | Описание |
|--------|-----------|----------|
| [AWG Manager](https://github.com/hoaxisr/awg-manager) | Keenetic (Entware) | Веб-интерфейс для управления AWG-туннелями на роутерах Keenetic |
| [AmneziaWG for Merlin](https://github.com/r0otx/asuswrt-merlin-amneziawg) | ASUS (Asuswrt-Merlin) | Аддон AWG 2.0 с веб-интерфейсом, GeoIP/GeoSite маршрутизация |

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

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

<a id="upominaniya"></a>
<details>
<summary><strong>📰 Упоминания</strong></summary>

**📖 Гайды и туториалы**
- [Hetzner Community - Making a website accessible from restricted regions](https://community.hetzner.com/tutorials/making-website-accessible-from-restricted-regions) (cross-link в Resources)
- [Debian Forums - HowTo: Install AmneziaWG 2.0 on Debian 12/13](https://forums.debian.net/viewtopic.php?t=166105)
- [LowEndTalk - [Tutorial] One-command AmneziaWG VPN server install on Ubuntu / Debian / ARM](https://lowendtalk.com/discussion/217191)
- [AVA Hosting - Self-Hosted VPN: Setup AmneziaWG Easily (пошаговый гайд на основе установщика)](https://ava.hosting/information/amneziawg/)

**📰 Статьи и обзоры**
- [XDA Developers - «I found a self-hosted VPN that works where WireGuard gets blocked»](https://www.xda-developers.com/self-hosted-vpn-works-where-wireguard-gets-blocked/)
- [Pinggy - Top 5 Best Self-Hosted VPNs in 2026](https://pinggy.io/blog/top_5_best_self_hosted_vpns/)
- [gHacks Tech News - AmneziaWG 2.0](https://www.ghacks.net/2026/03/25/amnezia-releases-amneziawg-2-0-to-bypass-advanced-internet-censorship-systems/)

**📋 Каталоги и подборки**
- [VPN Статус - каталог AmneziaWG-сервисов и серверных решений](https://vpnstatus.site/protocols/amneziawg)
- [AlternativeTo - amneziawg-installer (42 альтернативы)](https://alternativeto.net/software/amneziawg-installer/about/)
- [LibHunt - #1 в категории Shell VPN](https://www.libhunt.com/r/amneziawg-installer)

**💬 Форумы и сообщества**
- [Qubes OS Forum - AmneziaWG for censored regions](https://forum.qubes-os.org/t/installation-of-amnezia-vpn-and-amnezia-wg-effective-tools-against-internet-blocks-via-dpi-for-china-russia-belarus-turkmenistan-iran-vpn-with-vless-xray-reality-best-obfuscation-for-wireguard-easy-self-hosted-vpn-bypass/39005)
- [Lemmy.world /c/selfhosted - amneziawg-installer announce (143 upvotes / 39 comments)](https://lemmy.world/post/45242153)

</details>

---

<a id="licenziya"></a>
## 📝 Лицензия и Автор

* **Автор скриптов:** @bivlked - [GitHub](https://github.com/bivlked)
* **Лицензия:** MIT - свободное ПО с открытым исходным кодом (см. `LICENSE`)

---

<p align="center">
  Проект пригодился - поставьте ⭐. Так его проще найти другим.
</p>

<p align="center">
  <a href="#top">↑ К началу</a>
</p>