Files
shater/README.md
T
omarandClaude Opus 4.8 b4b7324db6
build / aarch64_cortex-a53 (push) Successful in 3m16s
build / x86_64 (push) Successful in 3m3s
build / release (push) Successful in 27s
feat(ci): sign the opkg feed with usign (key 5ac4b177689cb8e0)
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
2026-07-13 14:37:03 +03:00

6.0 KiB
Raw Blame History

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, статистика).