Skip to content

About

Local web UI that converts VPN subscriptions into sing-box configs for OpenWrt with tunnel selection, DIRECT rules, Yacd and Docker.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sing-box Config Builder

Русский · English

CI License: MIT sing-box 1.12.17

Sing-box Config Builder: выбор VPN-туннелей и готовый config.json

Локальный веб-интерфейс для подписок, маршрутизации 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.

Как собрать конфиг

Короткая демонстрация работы с билдером

  1. Добавьте одну или несколько ссылок подписок.
  2. Включайте HWID Happ только для провайдеров, которым он необходим.
  3. Нажмите Загрузить по URL у каждой подписки.
  4. Снимите флажки с ненужных или неподдерживаемых туннелей.
  5. При необходимости дополните список Всегда напрямую.
  6. Проверьте адрес и пароль Yacd, интервал AUTO и имя TUN.
  7. Нажмите Собрать полный config.json и скачайте файл.

XHTTP/SplitHTTP не добавляются: этот транспорт отсутствует в используемой версии sing-box. Причина пропуска отображается рядом с узлом.

Выбор туннелей

Поддерживаемые узлы можно включать и отключать чекбоксами. Неподдерживаемые остаются в списке с точной причиной пропуска.

Выбор VPN-туннелей

Готовый файл

После сборки справа отображаются количество туннелей, пропущенные узлы, число DIRECT-доменов и полный JSON для скачивания.

Готовый config.json

HWID Happ

Некоторые подписки привязаны к установленному приложению 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

Установка на OpenWrt

Сохраните результат как /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.

About

Local web UI that converts VPN subscriptions into sing-box configs for OpenWrt with tunnel selection, DIRECT rules, Yacd and Docker.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages