RU Русский | EN English

AmneziaWG 3.1 / 2.0 VPN installer for Ubuntu, Debian, Raspberry Pi and ARM64 VPS

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 Ask DeepWiki

В ядре, без 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); уже работающий сервер остаётся на своём поколении | ## 🚀 Быстрый старт ```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).
Что установщик меняет на сервере (прозрачность) Скрипт работает от 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](INSTALL_VPS.ru.md#uninstall), модель угроз - в [docs/SIGNING_DESIGN.md](docs/SIGNING_DESIGN.md#threat-model), проверка подписи - в разделе [Проверка подписи](#proverka-podpisi).
Неинтерактивная установка (для автоматизации) ```bash sudo bash ./install_amneziawg.sh --yes --route-all ``` Все параметры принимаются автоматически. Подробнее: [ADVANCED.md#cli-params-adv](ADVANCED.md#cli-params-adv)
### 🎯 Выберите свой случай | Ваша ситуация | Что добавить | |---|---| | Обычный дешёвый 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` | ---

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

## 💡 Зачем это нужно [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). --- ## 🆕 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). --- ## ⚖️ 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 является прямой заменой. --- ## ⚙️ 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](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/). --- ## ✨ Что умеет * **Обход блокировок** - 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))
Все возможности * Нативная генерация ключей и конфигов через `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`. Если рукопожатие на мобильной сети не проходит вовсе, сначала прочитайте [разбор](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=`) - **Таттелеком / Летай** - Татарстан, `--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). --- ## 🖥️ Требования * **ОС:** **Чистая** установка **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) --- ## 🚀 Рекомендация хостинга Для стабильной работы 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 с большим количеством подключений и высоким трафиком. --- ## 🔧 Установка (Рекомендуемый способ) Установка 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 сам. --- ## 🔏 Проверка подписи (необязательно, лучше до запуска) Установщик подписан ключом 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; - скрипты, заменённые вручную: для них повторите команду выше с их именами. ⚠️ **Чего проверка не даёт.** Если ключ скопирован с этой же страницы в тот же заход, проверка защищает от подмены по пути, но не от взлома самого аккаунта: кто подменит скрипт, подменит и эту страницу. Смысл проверки появляется, когда ключ у вас сохранён с прошлого раза. ## 📦 После установки **Где найти файлы клиентов:** | Файл | Путь | Назначение | |------|------|------------| | `.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 . ```
Импорт в 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` для управления пользователями скачивается автоматически. **Использование:** ```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]` | Статистика трафика по клиентам | Нет | **Обслуживание и восстановление:** | Команда | Аргументы | Описание | Перезапуск? | | :-------- | :--------------------- | :--------------------------- | :-----------: | | `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 # Перезапуск ``` --- ## ℹ️ Дополнительная информация Более подробную информацию о деталях конфигурации, настройках безопасности, параметрах 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)**. --- ## ❓ FAQ (Основные вопросы) > **В разделе:** установка и обновление, подключение клиентов, мобильные сети, выбор хостинга и перенос, безопасность и параметры. Разверните нужный вопрос ниже.
В: Как установить AmneziaWG 3.1 на свой сервер? О: На чистом VPS на x86_64 с Ubuntu 24.04, 26.04 или Debian 13 - тремя командами из быстрого старта: скачать install_amneziawg.sh из последнего релиза и запустить его через sudo bash. Профиль 3.1 ставится по умолчанию, модулем ядра и без Docker; на ARM и на штатном Debian 12 установщик сам поставит 2.0, а когда ещё он так делает - в разделе про 3.1. Понадобятся две перезагрузки: при каждом вопросе «Перезагрузить сейчас?» ответьте y, а после каждой перезагрузки подключитесь снова и повторите последнюю команду. Другой путь - официальное приложение Amnezia VPN, оно разворачивает сервер в Docker; чем подходы отличаются - в сравнении.
В: Будет ли работать после обновления ядра? О: На обычной 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. Убедитесь, что клиент понимает поколение сервера (строка «Поколение протокола» в итоговом отчёте установщика или «Поколение протокола установки» в выводе check): для 3.1 нужны Amnezia VPN >= 5.0.1.5, AmneziaWG >= 3.1.0 для Windows и >= 3.1.4 для Android и iOS или WG Tunnel >= 5.6.0 на Android, для 2.0 - Amnezia VPN >= 4.8.12.7 или AmneziaWG >= 2.0.0.
В: Почему у меня поставился AmneziaWG 2.0, а не 3.1? О: Профиль 3.1 установщик выдаёт только на x86_64 с ядром 6.7 и новее, это сознательная осторожность для платформ, которые ещё не проверены замером. Поэтому на ARM (Raspberry Pi, Oracle Ampere, Hetzner CAX) и на штатном Debian 12 (ядро 6.1) он сам ставит 2.0. Ещё он переходит на 2.0, если установленные утилиты awg или модуль ядра не понимают параметры 3.1 (или останавливается и говорит, что исправить). Причину он пишет в итоговом отчёте. Чтобы получить 3.1, нужен сервер на x86_64 с Ubuntu 24.04 / 26.04 или Debian 13. Если сервер был поставлен до версии 6.0.0, он остаётся на 2.0 и после обновления: переход - это --uninstall и новая установка с новыми профилями для всех клиентов. Сначала заберите резервную копию с сервера: --uninstall стирает /root/awg/. Подробнее - в ADVANCED.md.
В: Как подключить к VPN Linux-машину, в том числе сервер без графики? О: Через awg-quick из amneziawg-tools: положите файл клиента как /etc/amnezia/amneziawg/awg0.conf и поднимите туннель командой sudo awg-quick up awg0. Для профиля 3.1 модуль (или amneziawg-go) и утилиты на клиенте тоже должны поддерживать 3.1. Пошагово - в ADVANCED.md → Подключение Linux-машины как клиента.
В: 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). Обновите до версии 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 - полноценная виртуальная машина (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 - ADVANCED.md. Беру хостинги с незаблокированными 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. Учтите поколение: restore возвращает сервер к поколению копии. Если старый сервер был на 2.0, а новый поставился на 3.1, после восстановления он станет 2.0 (restore об этом предупредит). Хотите заодно перейти на 3.1 - не восстанавливайте копию, а выдайте клиентам новые профили.
В: Как создать временного клиента? О: 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 О: Для этого у команды add есть флаг --psk: 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. Разбор с готовой строкой - в 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](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](ADVANCED.md#diagnostic-report-adv). --- ## 🌐 Экосистема ### Клиенты > **Какой клиент выбрать?** На 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) |
📰 Упоминания **📖 Гайды и туториалы** - [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)
--- ## 📝 Лицензия и Автор * **Автор скриптов:** @bivlked - [GitHub](https://github.com/bivlked) * **Лицензия:** MIT - свободное ПО с открытым исходным кодом (см. `LICENSE`) ---

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

↑ К началу