diff --git a/README.md b/README.md
index 5ff7197..70ecef7 100644
--- a/README.md
+++ b/README.md
@@ -22,7 +22,7 @@
| | Инструкция | Что получится | Сложность |
|---|---|---|---|
-| 🛡 | [3X-UI: все протоколы](manuals/3x-ui.md) | 12 протоколов и единая подписка одной командой, без доменов | ●○○ |
+| 🛡 | [3X-UI: все протоколы](manuals/3x-ui.md) | 11 протоколов и единая подписка одной командой, без доменов | ●○○ |
| 🚀 | [Hysteria2](manuals/hysteria2.md) | Быстрый протокол на UDP, друзья добавляются командой `hy2 add` | ●○○ |
| 📶 | [XKeen на Keenetic](manuals/xkeen-keenetic.md) | Прокси для выбранных устройств прямо на роутере | ●●○ |
diff --git a/manuals/3x-ui.md b/manuals/3x-ui.md
index 361e36d..6bc5e14 100644
--- a/manuals/3x-ui.md
+++ b/manuals/3x-ui.md
@@ -3,7 +3,7 @@
[← Все инструкции](../README.md#инструкции)
Одна команда ставит панель [3X-UI](https://github.com/MHSanaei/3x-ui), создаёт подключения
-на 12 протоколах и выдаёт **одну ссылку-подписку**: приложение само получит
+на 11 протоколах и выдаёт **одну ссылку-подписку**: приложение само получит
подходящий ему формат и нужные протоколы. Домены не нужны.
**Что делает [скрипт](../scripts/3x-ui.sh):**
@@ -31,13 +31,17 @@
| VMess WebSocket + TLS | 2087/tcp | всех приложениях |
| Shadowsocks 2022 | 8388/tcp+udp | всех приложениях |
| TUIC v5 | 8444/udp | Hiddify, Clash Verge, FlClash, NekoBox |
-| WireGuard | 51820/udp | всех приложениях и WireGuard |
| AmneziaWG | 51821/udp | AmneziaWG на роутерах Keenetic, Clash Verge, FlClash |
| AmneziaWG 3.1 | 51822/udp | AmneziaVPN, Clash Verge, FlClash |
-| MTProto | 8445/tcp | прокси прямо в Telegram |
+| MTProto | 8445/tcp | прокси прямо в Telegram (если сервер сам достаёт до Telegram) |
-Каждый протокол проверен настоящим подключением на ядрах Xray, Mihomo и sing-box —
-стенд лежит в [tests/matrix](../tests/matrix/).
+Каждый протокол проверен настоящим подключением на ядрах Xray, Mihomo и sing-box,
+в том числе через интернет к серверу в России — стенд лежит в [tests/matrix](../tests/matrix/).
+
+> [!NOTE]
+> Обычный WireGuard по умолчанию не ставится: в России его рукопожатие режет DPI,
+> а попытки подключения могут привести к блокировке IP сервера. AmneziaWG — тот же WireGuard
+> с маскировкой — проходит. Если сервер и пользователи за границей, добавьте `wg` в `--protocols`.
## Что понадобится
diff --git a/manuals/assets/script-3x-ui.svg b/manuals/assets/script-3x-ui.svg
index 8b2f925..08fe418 100644
--- a/manuals/assets/script-3x-ui.svg
+++ b/manuals/assets/script-3x-ui.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/scripts/3x-ui.sh b/scripts/3x-ui.sh
index 5208da6..97878e8 100755
--- a/scripts/3x-ui.sh
+++ b/scripts/3x-ui.sh
@@ -6,7 +6,7 @@
# Ставит официальную панель 3X-UI (версия закреплена ниже) её собственным
# установщиком, получает сертификат Let's Encrypt на IP, создаёт подключения
# REALITY, XHTTP, VLESS/VMess WS, Trojan gRPC, Shadowsocks 2022, Hysteria2, TUIC,
-# WireGuard, AmneziaWG (классика и 3.1) и MTProto, включает единую подписку
+# AmneziaWG (классика и 3.1) и MTProto (и WireGuard по запросу), включает единую подписку
# с форматом под каждый клиент и настраивает ufw. Домены не нужны.
# Каждый протокол проверен настоящими клиентами — см. tests/matrix.
@@ -25,6 +25,9 @@ XUI_ENV=/etc/x-ui/install-result.env
SNI_CANDIDATES=(dl.google.com www.amazon.com www.samsung.com www.yahoo.com)
ALL_PROTOS=(reality hy2 xhttp ws trojan vmess ss tuic wg awg awg3 mtproto)
+# Обычный WireGuard в России режет DPI (проверено 2026-09-27: рукопожатие доходит до сервера,
+# ответ — нет), а его попытки могут привлечь блокировку IP. По умолчанию не ставим.
+DEFAULT_PROTOS=(reality hy2 xhttp ws trojan vmess ss tuic awg awg3 mtproto)
declare -A PORTS=([xhttp]=8443 [ws]=2053 [trojan]=2083 [vmess]=2087 [ss]=8388 [tuic]=8444 [wg]=51820 [awg]=51821 [awg3]=51822 [mtproto]=8445)
PROTOS=(); CREATED=(); OPEN=()
@@ -123,7 +126,7 @@ main() {
PANEL_SSL=custom
fi
case $protos in
- all) PROTOS=("${ALL_PROTOS[@]}") ;;
+ all) PROTOS=("${DEFAULT_PROTOS[@]}") ;;
minimal) PROTOS=(reality) ;;
*) IFS=, read -ra PROTOS <<<"$protos"
local x
@@ -490,7 +493,20 @@ awg_inbound() { # remark port subnet client-ip suffix mode
proto_awg() { awg_inbound "AmneziaWG" "${PORTS[awg]}" 10.8.1.0 10.8.1.2/32 awg classic; }
proto_awg3() { awg_inbound "AmneziaWG-3.1" "${PORTS[awg3]}" 10.8.2.0 10.8.2.2/32 awg3 full; }
+telegram_reachable() {
+ local ip
+ for ip in 149.154.167.51 149.154.175.50 91.108.56.130; do
+ timeout 5 bash -c "/dev/null && return 0
+ done
+ return 1
+}
+
proto_mtproto() {
+ # MTProto бесполезен, если сам сервер не достаёт до Telegram (некоторые хостеры его блокируют).
+ if ! telegram_reachable; then
+ warn "MTProto пропущен: с этого сервера недоступны серверы Telegram — прокси для Telegram здесь работать не будет."
+ return
+ fi
local settings
settings=$(jq -nc --argjson c "$(client_base mtproto)" '{fakeTlsDomain: "www.cloudflare.com", clients: [$c + {secret: ""}]}')
add_inbound "MTProto" "${PORTS[mtproto]}" tcp mtproto "$settings" '{}'
@@ -534,8 +550,10 @@ usage() {
cat <