Патч одной командой — добавляет полную поддержку VLESS Reality XHTTP в Podkop на OpenWrt + sing-box-extended.
Caution
ВНИМАНИЕ: ПРОВЕРЬТЕ ВЕРСИИ ПЕРЕД УСТАНОВКОЙ
Патч протестирован на следующих конфигурациях:
OpenWrt 25.12.2 r32802-f505120278:
- Podkop 0.7.18
- LuCI App Podkop 0.7.18 (branch 26.082.75780~067535e)
- sing-box-extended 1.13.12-extended-2.1.3
OpenWrt 24.10.3 r28872-daca7c049b:
- Podkop 0.7.17
- LuCI App Podkop 0.7.14 (branch 25.250.61039~923f8d9)
- sing-box-extended 1.13.12-extended-2.3.0
Перед установкой проверьте свои версии:
cat /etc/openwrt_release | grep VERSION
opkg list-installed | grep podkop
sing-box versionЕсли ваши версии отличаются — патч может не примениться, примениться неправильно и сломать Podkop, или потребовать ручной доработки.
При обновлении Podkop через opkg патч слетает — нужно запустить установку повторно.
Warning
Важно: постквантовое шифрование не поддерживается
Podkop не поддерживает encryption=mlkem768x25519plus и другие постквантовые алгоритмы.
Если ваша ссылка содержит этот параметр — соединение не установится, пинг будет N/A.
В панели сервера (3x-ui и др.) на вкладке Протокол установите Шифрование = none, кнопку Очистить — убрать выбранные алгоритмы. Ссылка должна содержать encryption=none.
Warning
Скрипт предоставляется «как есть». Рекомендуется ознакомиться с кодом перед запуском.
Все команды выполняются на роутере через SSH.
С компьютера в терминале:
ssh root@192.168.1.1Замените
192.168.1.1на IP вашего роутера. Xiaomi AX6S: стандартный адрес192.168.31.1.
Заменяет стандартный sing-box на расширенную версию с поддержкой xHTTP:
wget -O /tmp/sb-ext.sh https://raw.githubusercontent.com/EikeiDev/OpenWRT-sing-box-extended/refs/heads/main/install.sh && sh /tmp/sb-ext.shwget -O /tmp/patch.sh https://raw.githubusercontent.com/moix89/podkop-xhttp-patch/main/install.sh && sh /tmp/patch.shВкладка Протокол:
- Шифрование:
none - Нажать Очистить — убрать X25519 и ML-KEM-768
Вкладка Поток:
- Транспорт:
XHTTP - Режим:
auto - Padding Bytes:
100-1000
Вкладка Безопасность:
- Тип:
Reality - uTLS:
chrome
Скопировать ссылку — она должна содержать encryption=none&...type=xhttp.
В LuCI → Podkop создать секцию с типом подключения URL или URLTest, вставить ссылку.
podkop global_check
sing-box check -c /etc/sing-box/config.json
jq '.outbounds[] | select(.transport.type=="xhttp")' /etc/sing-box/config.jsonИсправление 1 — xhttp transport (sing_box_config_facade.sh)
Добавляет ветку xhttp) в _add_outbound_transport(). Без неё Podkop падает с Unknown transport 'xhttp' detected. Параметры читаются из VLESS URL с дефолтами:
path— изpath=host— изhost=mode— изmode=, дефолт:autox_padding_bytes— изxPaddingBytes=илиextra.xPaddingBytes, дефолт:100-1000sc_max_each_post_bytes— изextra.scMaxEachPostBytes, дефолт:"1000000"(строка)sc_min_posts_interval_ms— изextra.scMinPostsIntervalMs, дефолт:"30"(строка)alpn— изalpn=, дефолт:h2,http/1.1
Исправление 2 — версия sing-box-extended (/usr/bin/podkop)
Обрезает суффикс -extended-2.x.x, чтобы 1.13.12-extended-2.1.3 читалось как 1.13.12. Заменяет (...) в сравнении версии на POSIX-совместимый { ...; }. После этого podkop global_check показывает зелёный статус.
Текст
(newer than 1.12.4)— это название условия совместимости, не номер версии.
Для ссылки vless://...encryption=none&type=xhttp... Podkop генерирует:
{
"type": "vless",
"tag": "...",
"tls": {
"enabled": true,
"server_name": "www.amd.com",
"alpn": ["h2", "http/1.1"],
"reality": {
"enabled": true,
"public_key": "...",
"short_id": "..."
},
"utls": {
"enabled": true,
"fingerprint": "chrome"
}
},
"transport": {
"type": "xhttp",
"path": "/v1/excuse/api",
"mode": "auto",
"host": "example.com",
"x_padding_bytes": "100-1000",
"sc_max_each_post_bytes": "1000000",
"sc_min_posts_interval_ms": "30"
}
}Патч не применён или слетел после обновления Podkop.
wget -O /tmp/patch.sh https://raw.githubusercontent.com/moix89/podkop-xhttp-patch/main/install.sh && sh /tmp/patch.shПатч версии не применён, либо установлен стандартный sing-box вместо extended.
Проверить:
sing-box versionДолжно быть 1.13.x-extended-.... Если нет — установить sing-box-extended:
wget -O /tmp/sb-ext.sh https://raw.githubusercontent.com/EikeiDev/OpenWRT-sing-box-extended/refs/heads/main/install.sh && sh /tmp/sb-ext.shЗатем переустановить патч.
Причины:
encryption=mlkem...в ссылке — убрать постквантовое шифрование, установитьencryption=nonespider_xв конфиге — старый патч добавлял это поле, sing-box 1.13.12 его не поддерживает. Переустановить патч — он удалитspider_xавтоматически- Сломанный файл после многократных патчей — восстановить из backup (см. ниже)
Как проверить конкретную ошибку:
# Найти временный файл конфига
ls /tmp/tmp.*
# Проверить его
sing-box check -c /tmp/tmp.XXXXXX 2>&1Патч потерял бит исполнения при записи файла.
chmod +x /usr/bin/podkop
/etc/init.d/podkop restart- Проверить что ссылка содержит
encryption=none - Проверить доступность сервера:
sing-box check -c /etc/sing-box/config.json 2>&1- Проверить что конфиг сгенерировался правильно:
jq '.outbounds[] | select(.transport.type=="xhttp")' /etc/sing-box/config.jsonЭто нормально — opkg upgrade podkop перезаписывает файлы. Просто запустить патч снова:
wget -O /tmp/patch.sh https://raw.githubusercontent.com/moix89/podkop-xhttp-patch/main/install.sh && sh /tmp/patch.shКаждый запуск патча создаёт backup с timestamp в /root/.
# Посмотреть список backup-файлов
ls -la /root/*.backup.*
# Восстановить sing_box_config_facade.sh (подставьте timestamp)
cp /root/sing_box_config_facade.sh.backup.20260529_181427 \
/usr/lib/podkop/sing_box_config_facade.sh
# Восстановить podkop
cp /root/podkop.backup.20260529_181427 /usr/bin/podkop
chmod +x /usr/bin/podkop
# Перезапустить
/etc/init.d/podkop restartБерите самый ранний (наименьший по размеру) backup — это оригинальный файл Podkop без патчей.
Если всё сломалось и нужно начать с нуля:
# Переустановить Podkop через opkg
opkg update
opkg install --force-reinstall podkop luci-app-podkop
# Проверить что файл чистый
grep -c "xhttp" /usr/lib/podkop/sing_box_config_facade.sh
# Должно вернуть 0
# Затем снова установить sing-box-extended и патч
wget -O /tmp/sb-ext.sh https://raw.githubusercontent.com/EikeiDev/OpenWRT-sing-box-extended/refs/heads/main/install.sh && sh /tmp/sb-ext.sh
wget -O /tmp/patch.sh https://raw.githubusercontent.com/moix89/podkop-xhttp-patch/main/install.sh && sh /tmp/patch.sh# Версии компонентов
cat /etc/openwrt_release | grep VERSION
opkg list-installed | grep podkop
sing-box version
# Проверка патча
grep -c "xhttp_sc_min_posts_interval_ms" /usr/lib/podkop/sing_box_config_facade.sh
# Должно вернуть 4+ если патч применён
# Общая проверка
podkop global_check
# Конфиг
sing-box check -c /etc/sing-box/config.json 2>&1
jq '.outbounds[] | select(.transport.type=="xhttp")' /etc/sing-box/config.json
jq '.outbounds[] | select(.type=="urltest")' /etc/sing-box/config.json
# Логи
logread | grep podkop | tail -30| OpenWrt | Podkop | LuCI App | sing-box-extended |
|---|---|---|---|
| 25.12.2 r32802 | 0.7.17 / 0.7.18 | 0.7.17 / 0.7.18 | 1.13.12-extended-2.1.3 |
| 24.10.3 r28872 | 0.7.17 | 0.7.14 | 1.13.12-extended-2.3.0 |
- Роутер: Xiaomi Redmi AX6S
- Протокол: VLESS Reality XHTTP
- Режим: URLTest failover / одиночный URL
Патч правит только программные файлы Podkop и не зависит от модели роутера. Должен работать на любом OpenWrt-роутере с совпадающими версиями софта.
MIT — см. LICENSE.
One-command patch that adds full VLESS Reality XHTTP support to Podkop on OpenWrt + sing-box-extended.
Caution
WARNING: CHECK YOUR VERSIONS BEFORE INSTALLING
Tested configurations:
OpenWrt 25.12.2 r32802-f505120278:
- Podkop 0.7.18
- LuCI App Podkop 0.7.18 (branch 26.082.75780~067535e)
- sing-box-extended 1.13.12-extended-2.1.3
OpenWrt 24.10.3 r28872-daca7c049b:
- Podkop 0.7.17
- LuCI App Podkop 0.7.14 (branch 25.250.61039~923f8d9)
- sing-box-extended 1.13.12-extended-2.3.0
Check your versions before installing:
cat /etc/openwrt_release | grep VERSION
opkg list-installed | grep podkop
sing-box versionIf your versions differ — the patch may fail to apply, apply incorrectly and break Podkop, or require manual adjustment.
When Podkop is updated via opkg, the patch is overwritten — re-run the installer to re-apply.
Warning
Important: post-quantum encryption is not supported
Podkop does not support encryption=mlkem768x25519plus or other post-quantum algorithms.
If your link contains this parameter — the connection will fail with N/A ping.
In your server panel (3x-ui etc.) on the Protocol tab set Encryption = none and click Clear to remove selected algorithms. The link must contain encryption=none.
Warning
The script is provided "as is". It is recommended to review the code before running.
Run all commands over SSH on your OpenWrt router.
ssh root@192.168.1.1Replace
192.168.1.1with your router's actual IP. Xiaomi AX6S default gateway is192.168.31.1.
wget -O /tmp/sb-ext.sh https://raw.githubusercontent.com/EikeiDev/OpenWRT-sing-box-extended/refs/heads/main/install.sh && sh /tmp/sb-ext.shwget -O /tmp/patch.sh https://raw.githubusercontent.com/moix89/podkop-xhttp-patch/main/install.sh && sh /tmp/patch.shProtocol tab: Encryption = none, click Clear (remove X25519 and ML-KEM-768)
Stream tab: Transport = XHTTP, Mode = auto, Padding Bytes = 100-1000
Security tab: Type = Reality, uTLS = chrome
Copy the link — it must contain encryption=none&...type=xhttp.
podkop global_check
sing-box check -c /etc/sing-box/config.json
jq '.outbounds[] | select(.transport.type=="xhttp")' /etc/sing-box/config.jsonPatch not applied or reset after Podkop update. Re-run the install command.
Either the version patch failed or standard sing-box is installed instead of extended.
sing-box version # must show 1.13.x-extended-...If not — install sing-box-extended first, then re-run the patch.
- Link contains
encryption=mlkem...— setencryption=nonein server panel - Old patch left
spider_xfield — re-run patch, it removes it automatically - File corrupted by repeated patching — restore from backup (see below)
ls /tmp/tmp.*
sing-box check -c /tmp/tmp.XXXXXX 2>&1- Check link has
encryption=none - Check config was generated correctly:
jq '.outbounds[] | select(.transport.type=="xhttp")' /etc/sing-box/config.jsonls -la /root/*.backup.*
cp /root/sing_box_config_facade.sh.backup.TIMESTAMP \
/usr/lib/podkop/sing_box_config_facade.sh
cp /root/podkop.backup.TIMESTAMP /usr/bin/podkop
chmod +x /usr/bin/podkop
/etc/init.d/podkop restartUse the earliest (smallest) backup — that is the original unpatched Podkop file.
opkg update
opkg install --force-reinstall podkop luci-app-podkop
grep -c "xhttp" /usr/lib/podkop/sing_box_config_facade.sh
# Must return 0
wget -O /tmp/sb-ext.sh https://raw.githubusercontent.com/EikeiDev/OpenWRT-sing-box-extended/refs/heads/main/install.sh && sh /tmp/sb-ext.sh
wget -O /tmp/patch.sh https://raw.githubusercontent.com/moix89/podkop-xhttp-patch/main/install.sh && sh /tmp/patch.sh| OpenWrt | Podkop | LuCI App | sing-box-extended |
|---|---|---|---|
| 25.12.2 r32802 | 0.7.17 / 0.7.18 | 0.7.17 / 0.7.18 | 1.13.12-extended-2.1.3 |
| 24.10.3 r28872 | 0.7.17 | 0.7.14 | 1.13.12-extended-2.3.0 |
- Router: Xiaomi Redmi AX6S
- Protocol: VLESS Reality XHTTP
- Mode: URLTest failover / single URL
The patch only modifies Podkop's software files and is not router-specific. Should work on any OpenWrt router with matching software versions.
MIT — see LICENSE.