The published feed is now usign-signed, so routers keep opkg's signature verification ON instead of needing --no-check-signature. - ci/install-usign.sh builds the standalone usign on the runner (the index steps run on the bare runner, not in the SDK container). - ci/make-index.sh signs Packages -> Packages.sig with the secret key from the Gitea repo secret KEY_BUILD; it now FAILS the build if KEY_BUILD is set but usign is missing/broken, rather than silently shipping an unsigned feed. - build.yml installs usign in both the per-arch build and the combined-index release step, passes KEY_BUILD to the release step, and publishes the public key (dist/shater-feed.pub) as the release asset shater-feed.pub. - Setup is now: install the public key once into /etc/opkg/keys/<fingerprint>, then plain opkg update/install/upgrade with check_signature left on. Verified locally on the VM: usign -S/-V round-trips, and with check_signature=1 and only the signed feed, `opkg update` + `opkg install luci-app-shater` succeed with no --no-check-signature. FEED.md/README updated (key rotation documented). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LLthkP2S8WAfxu7fcYbPfE
6.0 KiB
shater
OpenWrt-плагин управления XRAY — как passwall2, только чище, быстрее и без лагов. Переносимый: подписки → ноды → цепочки → правила → выбор egress, с прозрачным роутингом, железной надёжностью, per-consumer статистикой и удобным UI.
Статус: MVP собран, проверен на тестовом OpenWrt, CI зелёный, ставится из репозитория.
Установка (opkg-фид)
Каждый push в main публикует на Gitea готовый подписанный (usign) opkg-фид, поэтому роутер ставится один раз и потом обновляется обычным opkg upgrade — с включённой проверкой подписи. opkg фильтрует по архитектуре, так что одни и те же команды подходят любому устройству (BPI-R3/R4 → aarch64_cortex-a53, тест-VM → x86_64):
# 1. один раз — доверяем публичному ключу фида (имя файла = отпечаток ключа)
wget -O /etc/opkg/keys/5ac4b177689cb8e0 \
https://git.qomar.pw/omar/shater/releases/download/latest/shater-feed.pub
# 2. добавляем фид и ставим
echo "src/gz shater https://git.qomar.pw/omar/shater/releases/download/latest" >> /etc/opkg/customfeeds.conf
opkg update
opkg install luci-app-shater # тянет xrayctl + shater-core
Дальше — LuCI → Services → Shater (xray) и мастер быстрой настройки (вставь ссылку подписки → один клик).
Обновление: opkg update && opkg upgrade xrayctl shater-core luci-app-shater.
Фид подписан ключом
5ac4b177689cb8e0—check_signatureостаётся включённым. Пиннинг на версию, ротация ключа, заметка про apk (OpenWrt 25.x) и разбор граблей — в FEED.md. Прямая установка из.ipk/тарбола — в BUILD.md.
Ключевые решения
- Движок: только xray-core — НЕ форкаем;
xrayctl= отдельный control-plane демон (Go). sing-box — потом адаптером. - Генератор: Go
xrayctl(парсинг share-links через libXray, валидацияxray -test). - MVP: надёжный одиночный transparent-proxy (TPROXY, мульти-LAN); цепочки/per-client — фаза 2.
- Сборка: OpenWrt + ImmortalWrt/BananaWRT, 24.10(ipk)+25.x(apk), мультиарк, CI + подписанный фид.
- Тест-стенд: Docker/QEMU (QEMU для netfilter/tproxy, WSL2 для сборки).
Документы
| # | Файл | О чём |
|---|---|---|
| 00 | 00-summary-and-plan.md | Сводка, locked-решения, план по фазам, риски |
| 01 | 01-mini_router-audit.md | Аудит боевого роутера (эталон того, что автоматизируем) |
| 02 | 02-xray-plugin-design.md | Дизайн, структура пакета, фазы |
| 03 | 03-features-and-model.md | Модель (8 объектов), правила, egress, идентичность нод |
| 04 | 04-ops-reliability-build-stats.md | Надёжность («железно»), сборка, статистика |
| 05 | 05-feature-catalog.md | Полный каталог фич (12 доменов, теги MVP/T1/T2/T3) |
| 06 | 06-north-star-imba.md | Амбициозные «мечты»: дашборд, per-client, автоматизация |
| 07 | 07-architecture.md | Все схемы (Mermaid): архитектура, flow, lifecycle, SM |
Визуальная версия схем (артефакт): см. architecture.html (тот же контент, наглядно).
Модель в одну строку
Node → Group(+balancer) → Chain(L1..Ln) → Egress · Rule(src/dst/list/geo → target+egress) ·
Inbound(multi-LAN tproxy) · Profile(WAN-mode) · List(domain/ip, auto-update).
Код, контракт, сборка
| Файл/дир | О чём |
|---|---|
| CONTRACT.md | UCI-схема /etc/config/shater + интерфейс xrayctl (CLI+ubus) |
| STATUS.md | Что собрано и чем проверено (доказательная база) |
| BUILD.md | Сборка .ipk (SDK/CI) + установка на роутер |
| FEED.md | Подключение репозитория как opkg-фида: install/update/upgrade, подпись, пиннинг |
xrayctl/ |
Go control-plane (парсер, генератор, apply) |
shater-core/ |
Системный пакет (procd/hotplug/sysctl/дефолт-конфиг) |
luci-app-shater/ |
LuCI-приложение (JS-views + ubus-бэкенд) |
examples/ |
Примеры /etc/config/shater + share-link фикстуры |
.github/workflows/build.yml, dist/ |
CI (gh-action-sdk) + фид |
Статус
Дизайн + MVP-ядро готовы и проверены (см. STATUS.md): генератор конфига
проходит реальный xray -test (Configuration OK) и на links-, и на UCI-пути; data-plane
(nft tproxy + policy routing) доказан на реальном ядре с реальным LAN-клиентом; shater-core.ipk
собран в SDK. Дальше — live xrayctl apply, полная CI-сборка, затем T1 (цепочки в UI, per-client, статистика).