Русский · English
Локальный веб-интерфейс для подписок, маршрутизации DIRECT и сборки
готового config.json.
Локальный конструктор полного config.json для sing-box 1.12.17 на
OpenWrt. Он загружает одну или несколько VPN-подписок, показывает найденные
узлы, позволяет отключить ненужные туннели и собирает конфигурацию с:
DIRECTпо умолчанию;- встроенным списком российских сервисов, которые всегда идут напрямую;
- группами
SELECTиAUTOдля Yacd; - TUN-интерфейсом и защитой доступа к домашней сети;
- VLESS, Trojan и Hysteria2 в форматах, поддерживаемых sing-box 1.12.17.
Important
Ссылки подписок содержат секретные ключи. Не публикуйте ссылки, готовые
конфиги и файл .happ-hwid.
Все URL, узлы и ключи на изображениях в этом README вымышлены. Реальные ссылки подписок в кадры не попадали.
Рекомендуемый вариант — Docker Compose:
touch sing-box-config-builder-local/.happ-hwid
docker compose up -d --buildОткройте http://127.0.0.1:18765/. Английская версия интерфейса доступна по адресу http://127.0.0.1:18765/en/. Контейнер работает в фоне и перезапускается автоматически, пока Docker запущен.
Проверка:
docker compose ps
curl http://127.0.0.1:18765/api/healthОжидаемый ответ: {"ok": true}.
Подробности о портах, HWID и управлении контейнером находятся в docs/docker.md.
- Добавьте одну или несколько ссылок подписок.
- Включайте HWID Happ только для провайдеров, которым он необходим.
- Нажмите Загрузить по URL у каждой подписки.
- Снимите флажки с ненужных или неподдерживаемых туннелей.
- При необходимости дополните список Всегда напрямую.
- Проверьте адрес и пароль Yacd, интервал
AUTOи имя TUN. - Нажмите Собрать полный config.json и скачайте файл.
XHTTP/SplitHTTP не добавляются: этот транспорт отсутствует в используемой версии sing-box. Причина пропуска отображается рядом с узлом.
Поддерживаемые узлы можно включать и отключать чекбоксами. Неподдерживаемые остаются в списке с точной причиной пропуска.
После сборки справа отображаются количество туннелей, пропущенные узлы, число DIRECT-доменов и полный JSON для скачивания.
Некоторые подписки привязаны к установленному приложению Happ. Для Docker положите HWID одной строкой без кавычек в:
sing-box-config-builder-local/.happ-hwid
Для обычных подписок файл может быть пустым, а переключатель HWID Happ должен оставаться выключенным.
Проект использует только стандартную библиотеку Python 3.10+:
python3 sing-box-config-builder.pyСтраница откроется по адресу http://127.0.0.1:8765/, английская версия —
по адресу http://127.0.0.1:8765/en/. На macOS тот же сервер запускает
start-sing-box-builder.command.
Запуск без открытия браузера:
python3 sing-box-config-builder.py --no-openСохраните результат как /etc/sing-box/config.json, затем выполните:
rm -f /etc/sing-box/cache.db
sing-box check -c /etc/sing-box/config.json
/etc/init.d/sing-box enable
/etc/init.d/sing-box restartПустой вывод sing-box check означает успешную проверку. Если после запуска
пропал интернет:
/etc/init.d/sing-box stop
/etc/init.d/sing-box disableМаршрутизация, Yacd и восстановление подробно описаны в docs/openwrt.md.
Исходники страницы разделены по ответственности:
| Файл | Назначение |
|---|---|
sing-box-config-builder.template.html |
Небольшой HTML-каркас |
src/styles.css |
Стили интерфейса |
src/i18n.js |
Общие переводы русского и английского интерфейса |
src/parser-normalization.js |
Проверка и нормализация полей узлов |
src/parser-transports.js |
Преобразование TLS и транспортов |
src/subscription-parser.js |
Декодирование подписок и протоколов |
src/source-ui.js |
Загрузка, выбор и отображение источников |
src/app.js |
Настройки страницы и сборка config.json |
data/direct-domains.txt |
Единственный исходный список DIRECT-доменов |
sing-box-config-builder.py |
Локальный HTTP-сервер и безопасная загрузка |
build-sing-box-config-builder.mjs |
Сборка автономного HTML и совместимого bundle |
После изменения исходников выполните:
npm run buildСгенерированные sing-box-config-builder.html,
sing-box-config-builder.en.html и файлы внутри
sing-box-config-builder-local/ вручную не редактируются.
Текущие тесты запускаются без браузерного/UI-раннера:
npm testАрхитектура и правила изменения проекта находятся в docs/development.md, частые ошибки — в docs/troubleshooting.md.
- CONTRIBUTING.md — локальный запуск, правила изменений и PR;
- SUPPORT.md — куда обращаться с ошибкой, идеей или вопросом;
- SECURITY.md — приватное сообщение об уязвимости;
- CODE_OF_CONDUCT.md — правила общения;
- GOVERNANCE.md — принятие решений в проекте;
- CHANGELOG.md — заметные изменения.
Перед публикацией issue или PR обязательно удалите реальные ссылки подписок, ключи, готовые конфиги и HWID.
- подписки скачивает только локальный Python-сервер;
- URL с локальными и служебными IP блокируются;
- ссылки и содержимое подписок не записываются на диск;
- Docker публикует интерфейс только на
127.0.0.1; - контейнер работает без root, с read-only файловой системой и
no-new-privileges; - порт Yacd нельзя публиковать в интернет.
Уязвимости сообщайте по инструкции из SECURITY.md, а не в публичном issue.
Проект распространяется по лицензии MIT.



