Менеджер AmneziaWG 2.0 / 3.1 — одной командой, из консоли или из Telegram.
3 уровня обфускации, 9 профилей мимикрии (QUIC / cURL QUIC+ECH / DNS / STUN / WebRTC / SIP / NTP / RTP / SSDP), локальный CPS-генератор на базе payloadGen, Warp туннель Cloudflare, DPI-тест.
sudo curl -fsSL https://raw.githubusercontent.com/genaRijoff/awg-multi-script/main/awg2.sh -o /usr/local/bin/awg2 && sudo chmod +x /usr/local/bin/awg2 && sudo awg2sudo curl -fsSL https://raw.githubusercontent.com/pumbaX/awg-multi-script/main/awg2.sh -o /usr/local/bin/awg2 && sudo chmod +x /usr/local/bin/awg2 && sudo awg2Запуск в любой момент:
sudo awg2История версий — CHANGELOG.md.
По умолчанию скрипт обновляется из основного репозитория (pumbaX/awg-multi-script) —
это стабильный канал. Ранние сборки живут в бета-репозитории
(genaRijoff/awg-multi-script): sudo awg2 → Обновление → Бета-канал. Выбор сохраняется в /var/lib/awg2/channel и переживает обновление;
вернуться на стабильный канал можно там же (если бета-версия окажется новее, обновление
предложит откат). Разовый запуск на бета-канале без сохранения:
AWG2_UPDATE_CHANNEL=beta sudo -E awg2.
Канал влияет и на Telegram-бота: установка и обновление бота берут его код из того же репозитория.
Обновления подписаны: рядом с awg2.sh лежит awg2.sh.sig (ssh-keygen -Y sign,
ставит GitHub Actions), и awg2 перед установкой новой версии проверяет подпись
ключом релизов, вшитым в сам скрипт. Сборку, подменённую на зеркале (ghproxy и
др.) или по пути, он не поставит. Проверить файл вручную:
echo 'awg-toolza-release namespaces="awg-toolza" <ключ из UPDATE_SIGNERS в awg2.sh>' > allowed
ssh-keygen -Y verify -f allowed -I awg-toolza-release -n awg-toolza -s awg2.sh.sig < awg2.shТаймер awg2-expire каждые 15 секунд (по часам) проверяет сроки клиентов и ведёт
учёт трафика по дням (92 дня, /var/lib/awg2/traffic.json). Если таймер замолчал
дольше чем на 5 минут, любой запуск awg2 (меню, бот, панель) перезапускает его.
Клиенту можно задать:
- срок — по его истечении клиент блокируется (не удаляется), срок можно снять;
- лимит трафика — в месяц (счётчик обнуляется 1-го числа, клиент разблокируется сам) или всего (с момента установки). При 90% приходит предупреждение. Исчерпал — на выбор: блокировать (как истёкший) или замедлять до 1, 2 или 5 Мбит/с — клиент остаётся на связи, в новом месяце (или после смены лимита) скорость возвращается сама;
- скорость — одна цифра в Мбит/с на скачивание и отдачу. Действует при любом маршруте (напрямую, WARP, Xray, exit-ноды); один конфиг на нескольких устройствах делит скорость между ними. Если клиент ещё и замедлен по лимиту — действует меньшая.
Скорость режет tc ядра: скачивание — HTB на выходе awg0 по адресу клиента,
отдача — через ifb-интерфейс awg0-ifb (нет модуля ifb — полисером на входе
awg0). Пока ограничений нет ни у кого, очередь awg0 не трогается; поставленную
руками свою очередь tc на awg0 awg2 не затирает. После перезапуска awg0 или
перезагрузки правила ставит заново тот же таймер — в течение 15 секунд.
Меню: Клиенты → Сроки, лимиты и скорость (там же — трафик по дням столбиками).
В боте — карточка клиента (📶 Лимит трафика, 🚀 Скорость, 📊 Трафик по дням), в
панели — карточка клиента с графиком за 30 дней и «Обзор» с графиком за 14 дней.
API: awg2 api client speed ИМЯ 20|off, awg2 api client limit-mode ИМЯ block|1|2|5.
Об истечении, блокировке, замедлении и их снятии владельцам и админам бота пишет
сам таймер — даже когда бот остановлен.
Версия протокола задаётся на весь сервер, поэтому клиент обязан её понимать:
| версия сервера | что нужно клиенту |
|---|---|
| AWG 2.0 | любой клиент AmneziaWG |
| AWG 3.1 | AmneziaVPN 5.0.1.5 или новее |
Клиент старше 5.0.1.5 не знает ключей RandomTrailers и DisableCookies и
отказывается импортировать конфиг с незнакомым ключом целиком — не
«пропускает строку», а отвергает весь файл. Если среди ваших клиентов есть
те, кого обновить нельзя, поднимите им отдельный сервер на 2.0.
Отдельно: HeaderProtectionKey, S1-S4, H1-H4 и RandomTrailers
обязаны совпадать у сервера и клиента побайтово. Расхождение проявляется
молчанием — в awg show просто никогда не появится latest handshake, без
единой строки в логах.
Сервер → Протокол и параметры AWG → Изменить параметры вручную (в боте и панели — Сервер → 🎛 Параметры AWG): Jc, Jmin, Jmax, S1-S4, H1-H4, а на 3.x — ContentPaddingAddition, таймеры, RandomTrailers и DisableCookies. В боте и панели есть кубик 🎲: случайные значения из того же генератора — «кроме S и H» (старые конфиги продолжат работать) или все поля; в панели — ещё у каждой группы. Кубик только подставляет значения, применяются они как ручная правка. Ввод проверяется по тем же правилам, что соблюдает генератор:
- запрещено то, что ломает сервер: S1-S4 < 12 на 3.x, S4 > 32, Jc > 128, Jmin > Jmax, пакеты рукопожатия одной длины (S1 + 56 = S2 и т. п.), пересекающиеся H1-H4, RejectAfterTime не больше RekeyAfterTime;
- предупреждение (можно сохранить всё равно): почти совпадающие длины, H в 1-4 или выше 2147483647 на 2.0, узкий диапазон H, Jc вне 3-12, нет запаса MTU до 1500.
Новые значения пишутся в сервер и во все клиентские конфиги; перед этим —
авто-бэкап, а если awg0 не поднимется, возвращаются прежние. После правки S или
H клиентам нужны новые конфиги (бот и панель предложат архив всех конфигов в
чат); Jc/Jmin/Jmax, паддинг данных и таймеры совпадать не обязаны — старые
конфиги продолжают работать. HeaderProtectionKey меняется только
перегенерацией (Протокол → новые параметры).
awg2 собирает модуль amneziawg (DKMS) и amneziawg-tools из исходников апстрима
и следит за ними сам: Сервер → Модуль ядра и утилиты показывает, что стоит, под
какие ядра собрано и есть ли новые теги, и умеет:
- обновить модуль до последнего тега или выбрать тег из списка;
- обновить
amneziawg-tools; - пересобрать модуль под все установленные ядра (после обновления ядра) — недостающие заголовки ядер ставятся сами;
- перезагрузить модуль без перезагрузки сервера;
- откатиться из резервной копии исходников.
Перед заменой сборки делается резервная копия исходников и пробная компиляция
новых: если новый код не собирается под это ядро, старая сборка остаётся на месте.
Если apt поставил новое ядро, а модуль под него не собрался (как с Ubuntu
7.0.0-38), после перезагрузки VPN не поднялся бы: Тулза видит такое ядро заранее и
предупреждает в шапке меню, на главной бота и панели и уведомлением бота.
Перезагрузка модуля кладёт туннели на несколько секунд; если SSH идёт через сам
туннель, перезапуск уходит в systemd-run, чтобы не потерять сервер. Для AWG 3.1
нужен модуль и tools с поддержкой 3.1 — переход на 3.1 (Сервер → Протокол)
предложит обновить их сам.
Раздел Туннели и DNS — Warp, шифрованный DNS, каскад портов, плюс:
- Xray — outbounds из ссылок
vless:///vmess:///trojan:///ss:///hysteria2://, балансировка (random / roundRobin / leastPing / leastLoad), выбор того, кто из клиентов идёт в туннель. Трафик уходит через интерфейсxray0. РФ-сайты напрямую (Туннели → Xray):.ru/.su/.рф, сервисы «только из РФ» и РФ-IP идут с сервера мимо туннеля — для сервера в РФ с выходом за границу. Базы runetfreedom обновляются раз в неделю. Свой выход клиенту (Туннели → Xray → «Свой выход клиенту», в боте и панели — Маршрут клиента): при нескольких ссылках клиенту можно закрепить конкретный выход без балансировщика; остальные идут через выход по умолчанию. - tun2socks — весь трафик AWG-клиентов в готовый SOCKS5
(
awg-tun2socks.service) - AWG exit-ноды — каскад через другие AWG-серверы, ECMP-балансировка, можно назначить клиенту конкретную ноду (Туннели → AWG exit-ноды → Клиенты): один выходит через одну страну, другой — через другую
Одновременно может быть активен только один из Warp / Xray / tun2socks / exit — скрипт проверяет это при включении каждого.
Перед тем как увести клиентов в туннель, скрипт проверяет, что трафик по нему реально ходит: не ходит — туннель не включается и маршруты клиентов не меняются. Если что-то всё же пошло не так, Туннели → Аварийный сброс гасит все туннели и возвращает клиентов на прямой маршрут, ничего не удаляя из настроек.
Про xray0: старые сборки Xray не умеют inbound tun, поэтому скрипт
спрашивает у самого бинаря (xray run -test), есть ли TUN-вход. Если нет —
Xray отдаёт SOCKS5 на 127.0.0.1:10808, а xray0 поднимает поверх него
tun2socks; режим виден в статусе туннеля. Свой выход клиенту работает только
с TUN-входом самого Xray (он видит адрес клиента, через tun2socks все
соединения приходят с 127.0.0.1) — актуальный XTLS/Xray-core его умеет.
Ссылка hysteria2:// ставится в формате Xray 26 и новее (протокол hysteria
версии 2): пароль, SNI, ALPN, ECH, pinSHA256 и обфускация salamander
переносятся, порт-хоппинг (mport) — нет. allowInsecure Xray 26 больше не
принимает: самоподписанному сертификату нужен pinSHA256 в ссылке. Скрипт
проверяет каждый outbound на самом бинаре до записи в конфиг и не даёт
положить туда то, что Xray не примет; старой сборке Xray без Hysteria2
подскажет обновиться. Разобраться с уже сломанным конфигом помогает
Туннели → Xray → Диагностика — покажет причину и предложит убрать
неподдерживаемые outbounds.
Туннели переживают перезагрузку: WARP, Xray, tun2socks и exit-ноды живут в постоянных юнитах systemd и восстанавливают маршруты клиентов сами.
CLI:
sudo awg2 --auto # неинтерактивная установка сервера и client1
sudo awg2 --add-client имя # добавить клиента
sudo awg2 --tunnel xray restart # warp | xray | tun2socks | exits | dns: up | down | restart
sudo awg2 --status # сводка состояния
sudo awg2 api help # JSON-интерфейс (им пользуется Telegram-бот)
sudo awg2 --help # список аргументовAUTOINSTALL=1 — то же, что --auto.
На части серверов (чаще всего в РФ) провайдер блокирует адрес, который DNS
отдаёт для api.telegram.org — а отдаёт он ровно один. Переключиться не на
что, и бот молча не отвечает.
С версии 2.2.3 бот сам подмешивает к ответу DNS известные адреса Telegram и берёт тот, что отвечает. Настройки для этого не нужно.
Если режут не по IP, нужен прокси: Telegram-бот → Прокси до Telegram (в меню
awg2 или в самом боте). Бот сам найдёт все выходы сервера — SOCKS Xray, апстрим tun2socks, WARP, AWG
Exit-ноды, TUN-интерфейсы — проверит каждый до Telegram и перезапустит бота.
Подойдёт и любой сторонний SOCKS5 или HTTP-прокси. Туннели без SOCKS бот
использует через iface://<интерфейс> (привязка сокетов, как curl --interface).
Если туннель выключен (например, аварийным сбросом), прокси на 127.0.0.1
исчезает. Бот это переживает: не достучавшись до прокси, он идёт напрямую с
запасными адресами и пишет причину в лог. Когда туннель подняли обратно —
systemctl restart awg-bot.
Руками — строка в /etc/awg-bot.conf, затем systemctl restart awg-bot:
BOT_PROXY=socks5://127.0.0.1:10808
# или через туннель:
BOT_PROXY=iface://warp0
Проверить, что запасные адреса подключились:
journalctl -u awg-bot -n 50 | grep 'Запасные адреса'
Строка Запасные адреса Telegram подключены (5 шт.) — всё на месте.
Сервер → Антисканер (в боте и панели — там же): новые входящие подключения из сетей сканеров РКН, СКИПА и госорганов отбрасываются до SSH, Xray, панелей и Mini App — сервер реже попадает в базы, которые собирают по итогам сканирований. Это не защита от DPI: блокировку по анализу трафика он не отменяет.
- Списки — публичные traffic-guard-lists: сканеры, СКИПА, сети госорганов (любой можно выключить). Каждая запись проверяется: частные и служебные сети и подсети шире /12 отбрасываются, оборванный ответ не заменяет прежний список.
ipsetи одно правило первым вINPUT: DROP только новых соединений — открытые (текущий SSH) не рвутся, VPN-трафик клиентов (FORWARD) не трогается. IPv6 — тоже.- Твой SSH-адрес, если он в списке, и адреса сервера в исключения попадают сами; свои исключения — адрес или подсеть.
- Служба ставит правило при загрузке раньше UFW; таймер раз в час возвращает его
на место, раз в сутки обновляет списки.
iptables-persistentне нужен. - Клиенты VPN из этих сетей тоже не подключатся — для них есть исключения.
Сервер поставлен приложением AmneziaVPN (контейнер amnezia-awg2 или старый amnezia-awg)?
Сервер → Перенос из Amnezia (в боте и панели — там же) переносит его в Тулзу
без перевыдачи конфигов: ключ сервера, порт, подсеть, параметры AWG (2.0 и 3.1) и все
клиенты с их PSK — те же, клиенты подключаются со своими конфигами из Amnezia.
- Сначала — предпросмотр: протокол, порт, клиенты и их имена (кириллица и пробелы — латиницей, исходное имя видно рядом). Ничего не меняется, пока не нажать «Перенести».
- Нужны компоненты Тулзы (Сервер → Установить компоненты) и сервер без своего awg0.
- Контейнер останавливается, а не удаляется: «Вернуть Amnezia» снимает awg0 Тулзы (перед этим — бэкап) и запускает контейнер снова. awg0 не поднялся — Amnezia возвращается сама. Когда всё работает, контейнер можно удалить там же.
- Из конфига Amnezia берутся только известные параметры с проверкой; команды (
PostUpи т.п.) не переносятся — NAT ставит Тулза. - Приватных ключей клиентов на сервере нет — они только у клиентов. Перенесённым Тулза не покажет конфиг и QR, а перевыпустит его по просьбе (новый ключ; адрес, сроки и лимиты — прежние, старый конфиг перестаёт подключаться).
- После переноса приложение AmneziaVPN этим сервером не управляет; как клиент работает как раньше.
Пункт WG + обфускатор главного меню — второй сервер рядом с AWG: обычный WireGuard
(wgobf0) за wg-obfuscator
v1.6. Весь трафик клиента маскируется под STUN (видеозвонок) или
XOR-обфусцируется. Снаружи виден только порт обфускатора: порт WireGuard
закрыт для всего, кроме самого обфускатора.
- AWG, его клиенты и туннели (Warp / Xray / tun2socks / exit) не
затрагиваются: своя подсеть, свои правила iptables (метка
awg-wgobf); по умолчанию клиентыwgobf0выходят напрямую через сервер. - Обфускатор собирается из исходников закреплённого тега (коммит сверяется).
- Клиенту выдаётся комплект в
/root/wgobf/<имя>/:wg.conf,obfuscator.conf,install-linux.sh(Debian/Ubuntu одной командой) и памятка для Windows / macOS / OpenWrt / Android. - Keenetic с AWG Manager: вкладка
«Phobos» — ссылка
phobos://(phobos-link.txt) в нижнее поле «Или конфиг .conf … / ссылка phobos://»; верхнее «Ссылка установки Phobos» — пустым, оно только для http(s)-ссылок панели Phobos. Или вкладка «ClusterM» — поля руками. Всё расписано вkeenetic.txtкомплекта. - Клиенты Phobos совместимы, пока у них выключены
obfuscate-bytesи маскировкаMEDIA(проверено). - Клиенту нужен обфускатор на устройстве: роутер, Linux, Windows, macOS.
Для iOS и телефонов без обфускатора есть опция «пускать клиентов без
обфускатора» — такие подключаются обычным WireGuard (
wg-direct.conf), но их трафик DPI видит как WireGuard. - Смена ключа обфускатора — Настройки → Сменить ключ (комплекты перевыпускаются сами).
- Выход клиентов: напрямую или через туннель — WARP, Xray (выход по умолчанию или свой), exit-ноды (общий выход или своя нода). Всем сразу (и новым) или каждому клиенту: пункт меню «Выход клиентов», в боте «🌐 Выход клиентов» и «🌐 Маршрут» в карточке клиента, в панели — экран «Обфускатор» и карточка клиента. Туннели те же, что у клиентов AWG; работает поднятый, а клиенты выключенного туннеля (и при его отказе) не теряют интернет — идут напрямую.
- В Telegram-боте — тот же раздел «🛡 WG + обфускатор»: установка, клиенты,
комплект одним архивом и ссылка
phobos://, настройки, смена ключа. - Без меню:
awg2 --wgobf add|del|bundle ИМЯ,awg2 --wgobf rotate-key|restart. - Бэкапы и Удаление → Удалить всё режим учитывают.
Бот повторяет меню awg2 целиком: те же девять разделов и те же пункты, кнопками
в два столбца; пояснения к пунктам — в тексте экрана. Установка компонентов, создание сервера, клиенты (конфиг файлом и
QR, сроки, мимикрия, туннели клиента), протокол 2.0/3.1 и параметры AWG вручную, модуль ядра, диагностика
и журналы, бэкапы (скачать, восстановить из присланного архива), WARP, Xray,
tun2socks, exit-ноды, каскад, шифрованный DNS, WG + обфускатор, обновление и
удаление — всё доступно со смартфона.
- Всю работу делает
awg2 api: бот не хранит своей логики AWG, поэтому ведёт себя ровно как меню. - Долгие операции (сборка модуля, установка, обновления) идут задачами: бот показывает живой журнал в сообщении и итог. Задача переживает перезапуск бота — так бот обновляет и перезапускает сам себя.
- Доступ: владельцы (
ADMIN_IDв/etc/awg-bot.conf) и приглашённые админы — одноразовая ссылка на 15 минут. Списком админов, оформлением и Mini App управляет только владелец. Бот работает только в личных сообщениях: в группах молчит, а если его туда добавили — выходит сам. - Оформление: цветные кнопки — зелёные создают и включают, красные удаляют,
синие отмечают главное действие. Монохромные иконки (custom emoji) вместо
эмодзи включаются в Telegram-бот → 🎨 Оформление: набор по ссылке
t.me/addemoji/…или свои иконки. Telegram показывает их от бота, только если у владельца бота есть Telegram Premium или у бота есть имя с Fragment, — бот проверяет это сам и без них остаётся на обычных эмодзи. - Мониторинг:
#pingв заметке клиента (или кнопка «Мониторинг активности») — бот сообщит, когда клиент пропал и когда вернулся. Об истечении сроков и лимитов трафика пишет таймерawg2, даже когда бот остановлен. - Уведомления о сервере (Telegram-бот → 🔔 Уведомления, по одному можно выключить): awg0 упал и поднялся, сервер перезагрузился, вышла новая версия Тулзы, установлено ядро без модуля AWG, истекает сертификат Mini App, диск заполнен на 90%. Каждое событие — одно сообщение.
- Автобэкап (Бэкапы → 🕒 Автобэкап): полный бэкап раз в день или неделю — файлом в чат, только владельцам (в нём приватные ключи); на сервере остаются последние 3–30 автобэкапов.
Mini App — панель управления внутри Telegram. Telegram открывает её только по HTTPS с настоящим сертификатом, поэтому awg2 выпускает его сам — Telegram-бот → Mini App и HTTPS-сертификат (или в боте: Telegram-бот → 📱 Mini App):
- На IP — Let's Encrypt выдаёт сертификаты на IP с января 2026: живут ~6 дней
(профиль
shortlived), таймерawg2-cert.timerпродлевает их сам. - На домен — если у сервера есть домен с A-записью на его IP; 90 дней.
- Адрес проверяется по http-01: на время выпуска и продления acme.sh сам слушает порт 80 — он должен быть свободен и открыт снаружи.
- Порт 80 занят (Caddy, nginx…) — Готовый сертификат сервера: Тулза находит сертификаты Caddy, certbot, acme.sh, Marzban, 3x-ui и nginx, выписанные на этот сервер, и подключает выбранный ссылкой — продлевает его та программа. Или выпуск своего с паузой службы, держащей порт 80, на секунды выпуска и продления.
- Сервер Mini App живёт в боте (порт
WEBAPP_PORT, по умолчанию 8443) и пускает только владельцев и приглашённых админов: каждый запрос несёт данные пользователя, подписанные Telegram токеном бота.
Панель открывается кнопкой «Меню» слева от поля ввода или в боте: Telegram-бот → 📱 Mini App → Открыть панель. Внизу — Обзор · Клиенты · Туннели · Сервер · Ещё. Обзор: сводка (в сети, скорость сейчас, трафик сегодня и за месяц, аптайм), маршруты трафика — схема клиенты → awg0 → выходы или список с долями выходов (есть клиенты WG + обфускатора — второе окно «Phobos», листается свайпом), живая скорость, лимиты, сроки на 30 дней, события блокировок, трафик за 14 дней. В шапке — флаг страны сервера (по геобазе Cloudflare, раз в сутки) с точкой состояния awg0; нажатие на флаг — окно «О сервере» (имя, адрес, протокол, аптайм, версия, «Скрыть адрес» для скриншотов). Панель «Тема» (луна/солнце в шапке): стиль — «Классика» (по умолчанию) или «Карточки» (меню разделов в шапке, клиенты крупными карточками, шрифт IBM Plex), тёмная / светлая / как Telegram, акцент, оттенок фона, скругление, масштаб, в веб-панели — значок вкладки (знак Тулзы или флаг страны сервера) — запоминается на устройстве.
Telegram Desktop для Windows показывает Mini App через Microsoft Edge WebView2. Нет его (например, удалён Edge) — Telegram берёт старый движок Edge 18, и вид упрощён (панель сама об этом скажет). Поставь WebView2 Runtime и перезапусти Telegram.
Уже в панели:
- Клиенты — поиск, фильтры, сортировка, карточка с QR и конфигом, срок, мимикрия, маршрут, заметка и мониторинг, создание одного и пачкой, выбор и удаление нескольких.
- Сервер — сводка, создание сервера одной формой, протокол 2.0/3.1, параметры AWG вручную (проверка на лету), endpoint, модуль ядра и tools (обновление, версия, откат), ремонт, рестарт, сброс, перезагрузка.
- Туннели — вкладки «Туннели», «Exit-ноды», «Xray» со счётчиками, сводка (выход клиентов, обмен, лидер), карточка на каждый туннель (переключатель — с вопросом, если работает другой; адрес сервера скрыт «глазом»; трафик с запуска интерфейса), каждую exit-ноду и выход Xray; поиск и три вида. Внутри — WARP, Xray, tun2socks, exit-ноды (тумблер туннеля, «все клиенты» или выбранные — переключателем у каждого, «все» / «никого» разом, нода каждому), каскад портов, шифрованный DNS, «всё напрямую»; журналы служб.
- Диагностика — сводка, домены мимикрии (мир и Россия), тест мимикрии, проверка DPI у клиента, журналы всех служб.
- Бэкапы — создать (файл сразу приходит в чат), список на сервере, прислать
в чат, восстановить — в том числе из архива, выбранного на телефоне.
Из присланного бэкапа на место ложатся только файлы Тулзы, а команды в
хуках конфигов, которые пишет не Тулза (
PostUpи т. п.), убираются с предупреждением: чужой архив не выполнит на сервере ничего своего. - Обновление — проверка канала, обновление и переустановка awg2, обновление бота, стабильный или бета-канал; «Что нового» — список изменений канала.
- Обфускатор — установка, маскировка STUN/NONE, «чистый WG», смена ключа, клиенты: ссылка для Keenetic, конфиг, QR чистого WireGuard, всё — в чат.
- Бот — перезапуск и обновление (панель дожидается бота), прокси до Telegram, админы и приглашения, иконки, Mini App: сертификат и порт.
Долгое (установка, сборка модуля, создание сервера, бэкап) идёт задачей с живым журналом. В панели теперь все разделы бота. Telegram открывает Mini App и по IP (проверено вживую).
Установка: sudo awg2 → Telegram-бот → Установить. Или вручную:
sudo bash -c 'd=$(mktemp -d) && curl -fsSL https://raw.githubusercontent.com/pumbaX/awg-multi-script/main/awg-bot-install.sh -o "$d/awg-bot-install.sh" && bash "$d/awg-bot-install.sh"; rm -rf "$d"'Установщик спросит:
- Bot Token — у @BotFather:
/newbot→ имя → токен - Telegram ID — свой ID (узнать у @userinfobot)
Бот работает службой awg-bot.service и поднимается сам после перезагрузки.
Ему нужен awg2 версии 1.0 или новее.
Та же панель, что Mini App, но в обычном браузере — по логину и паролю, без Telegram. Бот для неё не нужен.
Установка: sudo awg2 → w) Веб-панель → Установить. Логин — Enter =
admin; пароль — от 10 символов или Enter, и его сгенерирует (покажет один раз).
В конце — адрес вида https://IP:порт/<секретный путь>/. Порт случайный: если у
хостера свой фаервол, открой этот TCP-порт и там (UFW Тулза открывает сама).
-
Сертификат — тот же, что у Mini App (Let's Encrypt на IP или домен, готовый сертификат сервера); его нет — самоподписанный, браузер предупредит. Настоящий — пункты меню 6-8; панель подхватывает его сама.
-
Защита — только секретный путь (всё остальное на порту — 404), пароль — хешем scrypt, 5 неверных паролей — блокировка адреса на 15 минут и дольше, сессия 12 часов без действий или 7 дней, запросы с чужих сайтов отклоняются, HTTPS с TLS 1.2+. Входы — в
/var/log/awg-web.log; стоит бот — сообщением владельцам. -
Доступ —
w) Веб-панель→a) Доступ, в боте 🛡 Доступ, в самой панели «Аккаунт» → «Доступ к панели»:- для всех — как раньше;
- по адресам — только с указанных адресов и подсетей (IPv4; IPv6 — если
панель слушает IPv6,
WEB_LISTEN) и через свой VPN (AWG, WG + обфускатор): сменился адрес дома — зайди через VPN; - только через VPN — снаружи порт закрыт для всех, панель открывается по
адресу сервера внутри VPN (
https://10.x.x.1:порт/путь/; браузер предупредит о сертификате — он выписан на внешний адрес).
Два слоя: правило файрвола (ipset, первым в INPUT, раньше UFW; с антисканером уживается) и проверка адреса самой панелью — чужим 404, даже если правило кто-то снял; раз в 5 минут панель возвращает правило сама. Режим, который закрыл бы панель от тебя же, она не даст сохранить. SSH и Telegram-бот работают всегда — «для всех» возвращается оттуда. Прокси на этом же сервере (3x-ui и т. п.) — как чужие адреса; пускать через них — добавь в список адрес самого сервера.
-
Отличия от Mini App — файлы (конфиг, ZIP с конфигом, архивы, бэкапы) скачиваются, а не уходят в чат; на ПК — лента разделов слева, поиск Ctrl+K и карточка клиента панелью справа.
-
Меню — пароль, логин, порт, новый секретный путь, сертификат, журнал входов, доступ, остановить/запустить, обновить код, удалить.
-
В боте — 💻 Веб-панель в главном меню (только владельцам): адрес и логин, если забыл, новый пароль (бот покажет его один раз), новый адрес, доступ, перезапуск, журнал входов. Там же панель ставится без терминала: логин
admin, пароль придумает бот.
AmneziaVPN (Android / iOS / macOS / Windows / Linux):
- QR — Клиенты → Показать QR, сканируй с терминала (или QR от бота)
- Текст — Клиенты → Показать конфиг для больших конфигов (с I1–I5) → копируй в буфер
- Файл —
Добавить туннель → Из файла→ передай/root/<имя>_awg2.conf(AWG 2.0) или_awg3.conf(3.x) через scp - Ссылка на 5 минут — бот (карточка клиента → 🔗 Ссылка 5 мин) или панель («Конфиг и QR» → 🔗 Ссылка на 5 минут):
отправь ссылку человеку — по ней QR (если конфиг влезает), текст и файл
имя.conf. Ссылку отдаёт Mini App или веб-панель (если та закрыта «только через VPN», человек без VPN ссылку не откроет). Ссылка случайная (192 бита), живёт 5 минут, «Отозвать» гасит раньше; удалили клиента — ссылка не отдаёт ничего. Конфиг на странице — только по кнопке: предпросмотр мессенджеров его не видит. Это доступ к VPN — отправляй только тому, кому он предназначен.
AmneziaWG — официальное приложение протокола AmneziaWG:
Keenetic — KeeneticOS 4.x+ или AWG Manager на Entware
Проверить свой .conf на валидность, DPI-стойкость и оптимальность параметров можно через AWG Analyzer — полностью локальный JS-инструмент.
Исходники awg2 — в src/ (модули src/lib/*.sh, встроенный Python — src/py/).
Один файл для установки собирает ./build.sh → dist/awg2.sh (./build.sh awg2.sh — в корень
репозитория, откуда его берут установка и самообновление). Бот — awg_bot/.
Тесты без root и сети (песочница — tests/sandbox.py):
./build.sh
python3 tests/test_toolza.py # awg2: параметры, конфиги, helper, служебные скрипты, API
python3 tests/test_cps.py # генератор I1-I5
python3 tests/test_bot.py # бот на живом диспетчере против awg2 api (нужен aiogram)
python3 tests/test_panel.py # панель Mini App в Chromium (нужны aiogram и Playwright для node)
python3 tests/test_web.py # веб-панель: вход, защита, файлы, вид в Chromium
python3 tests/test_admins.py && python3 tests/test_net.py && python3 tests/test_meta_menu.py
python3 tests/test_regress_f2f3.py && python3 tests/test_amnezia.pyBoosty: https://boosty.to/awgtoolza/donate
YooMoney: https://yoomoney.ru/to/4100119521619579
| Сеть | Адрес |
|---|---|
| USDT TRC20 | TN2rQAsGNHQr8wnneKRD14UMX629D2Ca5q |
| USDT ERC20 | 0x721845234eeC44e0a9BaE78402965828C1bc6c57 |
| USDT TON | UQCwj-RY2a4BH7sIDDeLb77XRaPDq0mb1FVwyC4UaOGbLMYy |
| TON | UQCdQtJO4CF0Lyeb93X2zdeWeAcDJ-ieBC3AaL7LIqWfMBg3 |