sing-box — это «движок», на котором работают podkop и Netshift: именно он устанавливает VLESS/Reality, Hysteria2 и другие соединения. Иногда его нужно обновить sing-box на OpenWrt (podkop требует свежую версию, не работает новый протокол) или переустановить (битый бинарник, ошибки после прошивки). Разберём все способы и решение типичных ошибок.

Когда нужно обновить: podkop/Netshift просит новую версию, появился протокол, которого нет в старой сборке, в логах ошибки формата конфига. Когда нужно переустановить: бинарник повреждён, сломался конфиг, движок отвалился после sysupgrade.

Главный подводный камень: sing-box из штатного репозитория OpenWrt часто устаревший. Для актуальной версии обычно нужен ручной бинарник с GitHub или скрипт podkop.

Шаг 0. Узнаём текущую версию и состояние

ssh root@192.168.1.1
sing-box version
service sing-box status
logread -e sing-box | tail -30
ubus call system board

Запомните текущую версию, состояние сервиса и архитектуру (board_name/target из последней команды) — она понадобится для выбора правильного бинарника. Проверьте, какую версию требует ваш podkop/Netshift (обычно указано в его README или логах).

Шаг 1. Бэкап (обязательно)

sysupgrade -b /root/backup-$(date +%F).tar.gz
cp -r /etc/sing-box /root/sing-box.bak 2>/dev/null
cp /usr/bin/sing-box /root/sing-box.old 2>/dev/null

Третья команда сохраняет текущий бинарник — если новая версия окажется несовместимой, вы вернёте рабочую одной командой.

Способ 1. Обновление через штатный менеджер пакетов

# OpenWrt 23.05 и ниже
opkg update && opkg upgrade sing-box

# OpenWrt 24.10+ / SNAPSHOT (apk)
apk update && apk upgrade sing-box

Проверьте результат: sing-box version.

Инфо: opkg upgrade sing-box часто не даёт свежую версию — в стабильных репозиториях OpenWrt sing-box обновляется медленно. Если нужна конкретная новая версия, переходите к способу 2 или 3.

Способ 2. Обновление скриптом podkop / Netshift (проще всего)

Скрипт установки podkop сам подтягивает совместимую версию sing-box:

sh <(wget -O - https://raw.githubusercontent.com/itdoginfo/podkop/refs/heads/main/install.sh)

При этом podkop-конфиги остаются на месте, а движок обновляется до версии, которая точно совместима с текущим podkop. Это самый безопасный путь для пользователей podkop. Проверка — sing-box version.

Способ 3. Ручная установка свежего бинарника с GitHub (самый гибкий)

  1. Определите архитектуру роутера по чипсету:
Чипсет / платформаАрхитектура sing-box
MediaTek MT7981/MT7986 (filogic)arm64
MediaTek MT7621 (ramips)mipsle
Qualcomm IPQ40xx/IPQ806xarmv7
x86_64 (ПК/виртуалка)amd64
Raspberry Pi 4/5arm64
  1. Найдите нужный релиз на странице Releases проекта sing-box на GitHub и возьмите архив под свою архитектуру (sing-box-VERSION-linux-arm64.tar.gz и т.п.).
  2. Полный блок команд (замените URL на ссылку из релиза):
service sing-box stop
cd /tmp
wget https://github.com/SagerNet/sing-box/releases/download/vX.Y.Z/sing-box-X.Y.Z-linux-arm64.tar.gz
tar -xzf sing-box-*.tar.gz
mv sing-box-*/sing-box /usr/bin/sing-box
chmod +x /usr/bin/sing-box
service sing-box start
sing-box version
Проверьте место: бинарник sing-box весит 10–15 МБ. На роутерах с малым flash выполните df -h /overlay заранее — если места нет, поможет extroot или кастомная сборка прошивки.

Полная переустановка sing-box «с нуля»

Если движок сломан и обновление не помогает:

service sing-box stop
/etc/init.d/sing-box disable
# OpenWrt 24.10 (opkg)
opkg remove sing-box
rm -rf /etc/sing-box /etc/config/sing-box /usr/bin/sing-box
opkg update && opkg install sing-box
# OpenWrt 25.12 (apk): apk del sing-box  →  apk update && apk add sing-box
# восстановить конфиг из бэкапа при необходимости:
cp -r /root/sing-box.bak /etc/sing-box
service sing-box restart

Конфигурация sing-box: где что лежит

  • /etc/sing-box/config.json — основной конфиг в формате JSON.
  • /etc/config/sing-box — UCI-обёртка OpenWrt (пример: uci set sing-box.main.enabled='1').

Минимальный пример config.json с VLESS-outbound — для понимания структуры:

{
  "outbounds": [
    {
      "type": "vless",
      "tag": "proxy",
      "server": "example.com",
      "server_port": 443,
      "uuid": "ВАШ-UUID",
      "flow": "xtls-rprx-vision",
      "tls": { "enabled": true, "server_name": "microsoft.com" }
    }
  ]
}

Собрать такой outbound из готовой vless://-ссылки (и наоборот) можно в нашем конвертере ссылки в JSON или конвертере JSON → ссылка — без ручной правки полей.

Проверить синтаксис конфига перед запуском:

sing-box check -c /etc/sing-box/config.json
Инфо: если sing-box управляется через podkop или Netshift — не правьте config.json вручную. Эти инструменты генерируют конфиг сами и перезапишут ваши правки. Меняйте настройки в их интерфейсе.

Проверка после обновления

sing-box version              # версия обновилась
service sing-box status       # сервис жив
logread -e sing-box | tail    # нет ошибок

Дополнительно снаружи можно проверить, что сам VPN-сервер отвечает и его сертификат в порядке — через проверку серверов и задержки, не раскрывая UUID или пароль.

На клиенте: заблокированный сайт открывается, внешний IP сменился. Чек-лист:

  • sing-box version показывает новую версию;
  • сервис в состоянии running;
  • в логах нет failed to start;
  • VPN работает на клиентском устройстве.

Типичные ошибки и их решение

sing-box: failed to start — ошибка в конфиге. Найдите точную строку: logread -e sing-box | tail -30. Проверьте конфиг: sing-box check -c /etc/sing-box/config.json.

Illegal instruction / not executable — скачали бинарник не под ту архитектуру. Сверьтесь с таблицей в способе 3 и возьмите правильный архив.

no space left on device — не хватает flash. Освободите место, используйте extroot или соберите прошивку с sing-box через Firmware Selector.

Новая версия несовместима со старым конфигом — между мажорными версиями sing-box (1.8 → 1.9 → 1.10+) менялся формат JSON. Если обновились вручную и всё сломалось — либо откатитесь на sing-box.old, либо обновите заодно podkop/Netshift, чтобы он сгенерировал конфиг под новую версию.

После обновления sing-box перестал работать podkop — версии рассинхронизировались. Обновите сам podkop, чтобы он соответствовал новому движку.

Откат на старую версию:

service sing-box stop
cp /root/sing-box.old /usr/bin/sing-box
chmod +x /usr/bin/sing-box
service sing-box start

Автоматизация: обновление по расписанию

Технически можно повесить проверку версии на cron, но автообновление VPN-ядра — спорная идея: новая версия может сломать совместимость с podkop прямо посреди рабочего дня. Разумнее обновлять sing-box вручную, когда этого требует podkop, и всегда с бэкапом.

Часто задаваемые вопросы (FAQ)

Нужно ли обновлять sing-box, если всё работает? Нет. Обновляйте только по необходимости: новый протокол, требование podkop, ошибки в логах.

Какая версия sing-box нужна для podkop / Netshift? Та, что указана в требованиях конкретной версии инструмента. Проще всего — обновить через его же скрипт (способ 2), тогда версии заведомо совпадут.

Слетит ли sing-box после обновления прошивки OpenWrt? Да, при sysupgrade удаляются все пакеты. После обновления OpenWrt движок ставится заново (обычно вместе с podkop).

Xray или sing-box — что лучше? Для связки с podkop/Netshift используется sing-box — это их родной движок. Xray — альтернатива для других решений; менять движок под podkop не нужно.

Можно ли поставить sing-box на роутер с 8/16 МБ flash? На 8 МБ — практически нет (бинарник 10–15 МБ). На 16 МБ — впритык, нужен extroot или кастомная сборка.

Sing-box сильно грузит процессор — это нормально? При активной передаче через VPN — да, шифрование нагружает CPU. Если роутер тормозит на высоких скоростях — это упор в процессор, помогает более мощная модель.

Заключение

Обновить sing-box проще всего скриптом podkop — он подберёт совместимую версию сам. Ручной бинарник с GitHub нужен, когда требуется конкретная свежая версия под вашу архитектуру. Главное — бэкап бинарника перед обновлением и понимание, что после обновления прошивки движок слетит. При проблемах с самим podkop смотрите как его обновить.