[2026-09-15] eagle: family/how-to/truenas-infrastructure.md family/how-to/truenas-infrastructure.md.bak-before-cut-history family/plans/reverse-xray-3xui-kraken.md personal/tech/vless-space-subscription-egress.md

This commit is contained in:
Alexey Martemyanov
2026-09-15 17:40:20 +06:00
parent 4bd66fb143
commit 548bedf3cd
4 changed files with 1032 additions and 171 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+4 -3
View File
@@ -2,18 +2,19 @@
> Создано: 2026-09-01. Цель: проксировать трафик локальных клиентов (сеть TrueNAS 192.168.2.x) через TrueNAS → Kraken → интернет. **Kraken = точка выхода (exit node).** TrueNAS = bridge/контроллер. > Создано: 2026-09-01. Цель: проксировать трафик локальных клиентов (сеть TrueNAS 192.168.2.x) через TrueNAS → Kraken → интернет. **Kraken = точка выхода (exit node).** TrueNAS = bridge/контроллер.
> ## 🏁 2026-09-15 22:30 — СОСТОЯНИЕ ПРОЕКТА > ## 🏁 2026-09-15 (актуализировано) — СОСТОЯНИЕ ПРОЕКТА
> >
> **Закрыто:** > **Закрыто:**
> - ✅ Compose-файл `xray-admin` восстановлен из `docker inspect` (инцидент разобран ниже) — пережил все откаты. > - ✅ Compose-файл `xray-admin` восстановлен из `docker inspect` (инцидент разобран ниже) — пережил все откаты.
> - ✅ **Третий клиент `vless-space` создан и работает** — egress через внешнюю подписку `profilegrid` (не через Kraken, не напрямую). Проверено: IP `195.72.61.192` (Стокгольм) ≠ `90.189.160.148` (TrueNAS). Полный разбор — [[personal/tech/vless-space-subscription-egress]]. > - ✅ **Третий клиент `vless-space` создан и работает** — egress через внешнюю подписку `profilegrid` (не через Kraken, не напрямую). Проверено: IP `195.72.61.192` (Стокгольм) ≠ `90.189.160.148` (TrueNAS). Полный разбор — [[personal/tech/vless-space-subscription-egress]].
> - ✅ Установлен рабочий способ правки 3x-ui через SQLite (условия: инбаунд НЕ внутри `xrayTemplateConfig`, правка локально на Mac, `rm -f *.db-wal *.db-shm` + `chown 950:root`). > - ✅ Установлен рабочий способ правки 3x-ui через SQLite (условия: инбаунд НЕ внутри `xrayTemplateConfig`, правка локально на Mac, `rm -f *.db-wal *.db-shm` + `chown 950:root`).
> - ✅ **Авто-обновление серверов подписки РАБОТАЕТ** — выбран вариант **(B) штатная `outbound_subscriptions`** 3x-ui (не cron). Запись в UI: `tag_prefix=sub1-`, `update_interval=600`, enabled → панель сама создаёт `sub1-01…sub1-28`; статика `space-01…10` **вычищена из шаблона (0 шт.)**. Балансировщик переиспользован — `space-balancer`, `selector: ["sub1-"]`, `leastLoad`; `burstObservatory.subjectSelector: ["sub1-"]`. Новые серверы в подписке подхватываются по префиксу автоматически.
> - ✅ **`hermes-taiga` больше не ходит через мёртвый `vless-proxy`** (`v.qentra.top`). `vless-proxy` переключён на `vpn.mallexxx.duckdns.org:443` (`/vless`) с клиентом **`vless-space`**; egress через SOCKS `vless-proxy:1080` → `104.28.219.140` / `188.239.191.18` ≠ `90.189.160.148`. Telegram у taiga работает.
> >
> **Открыто:** > **Открыто:**
> - 🔴 **`kraken-user` не работает — хост Kraken недоступен** (SSH и WG — таймауты, DNS NXDOMAIN). Портал на TrueNAS жив, соединений от бриджа ноль. Решение Alex: «подождём, может оживет». Разбор — [[family/how-to/kraken-access]], [[personal/tech/xray-reverse-tunnel-kraken-truenas]]. > - 🔴 **`kraken-user` не работает — хост Kraken недоступен** (SSH и WG — таймауты, DNS NXDOMAIN). Портал на TrueNAS жив, соединений от бриджа ноль. Решение Alex: «подождём, может оживет». Разбор — [[family/how-to/kraken-access]], [[personal/tech/xray-reverse-tunnel-kraken-truenas]].
> - ⏳ **Авто-обновление серверов подписки** не сделано. Outbound'ы `space-01…10` статичны в шаблоне. Варианты: (A) cron-скрипт на NAS, (B) штатная `outbound_subscriptions` 3x-ui через панель.
> - ⏳ `/sub/<subId>` отдаётся **без авторизации** — вопрос безопасности, решения нет. > - ⏳ `/sub/<subId>` отдаётся **без авторизации** — вопрос безопасности, решения нет.
> - ⏳ **`hermes-taiga` ходит через мёртвый `vless-proxy`** (`v.qentra.top` удалён). Нужна правка 5 полей в `/mnt/RED_2TB/docker/vless-proxy/config.json`. > - ⏳ `vless-proxy` как контейнер подписки **не умеет** — если понадобится авто-обновление серверов уже внутри него, нужен cron-скрипт (не начат, и пока не нужен: egress идёт через `xray-admin`, который сам обновляет подписку).
## 🔴 2026-09-15: COMPOSE-ФАЙЛ `xray-admin` УТРАЧЕН — восстановлен из `docker inspect` ## 🔴 2026-09-15: COMPOSE-ФАЙЛ `xray-admin` УТРАЧЕН — восстановлен из `docker inspect`
@@ -142,12 +142,14 @@ related:
> >
> **🔴 Корень найден и доказан:** стратегия **`leastPing` не работает в Xray 26.x** — балансировщик не создаётся. Лечится заменой на **`leastLoad`**. Подробности — §«ГЛАВНАЯ НАХОДКА СЕССИИ» ниже. > **🔴 Корень найден и доказан:** стратегия **`leastPing` не работает в Xray 26.x** — балансировщик не создаётся. Лечится заменой на **`leastLoad`**. Подробности — §«ГЛАВНАЯ НАХОДКА СЕССИИ» ниже.
> >
> **Собран `xui_v7_load.db`** (md5 `855ff3ac2d2319b17b20fe5c788ddc59`, integrity `ok`) — `xui_v7.db` с `leastPing` → `leastLoad`. **Залит не был** (апрувы истекли). Это следующий шаг. > **Собран `xui_v7_load.db`** (md5 `855ff3ac2d2319b17b20fe5c788ddc59`, integrity `ok`) — `xui_v7.db` с `leastPing` → `leastLoad`. **Залит не был** (апрувы истекли) — но это уже неважно: финальная сборка `xui_v9.db` залита и работает (см. ниже).
> >
> **Ключевой вывод, который опроверг прежний пессимизм:** правка клиентов 3x-ui через SQLite **СРАБОТАЛА** в попытке 7 — клиент появился в конфиге и подписка отдала 200. Барьер был **только** в том, что инбаунд лежал внутри шаблона (урок 6). При исправленной сборке SQLite-путь рабочий. > **Ключевой вывод, который опроверг прежний пессимизм:** правка клиентов 3x-ui через SQLite **СРАБОТАЛА** в попытке 7 — клиент появился в конфиге и подписка отдала 200. Барьер был **только** в том, что инбаунд лежал внутри шаблона (урок 6). При исправленной сборке SQLite-путь рабочий.
> ## ❌ ПРЕДЫДУЩИЙ ФИНАЛ 2026-09-15: ЗАДАЧА НЕ ВЫПОЛНЕНА. БД ОТКАЧЕНА. > ## ❌ ПРЕДЫДУЩИЙ ФИНАЛ 2026-09-15: ЗАДАЧА НЕ ВЫПОЛНЕНА. БД ОТКАЧЕНА.
> >
> ⚠️ **Это ЛЕТОПИСЬ промежуточной попытки, а НЕ текущий статус.** Актуальный статус — в шапке (`status: done-egress-via-subscription-working`) и в §«ГЛАВНАЯ НАХОДКА СЕССИИ»: **задача ВЫПОЛНЕНА**, клиент `vless-space` работает, egress идёт через штатную подписку `sub1-*` (28 серверов, `leastLoad`, авто-обновление 600 с). Ниже — разбор провалившихся подходов, оставлен как источник грабель.
>
> **Система возвращена в исходное состояние** (Alex восстановил из бэкапа). Проверено: `xray-admin` Up, панель HTTP 200, `vpn.mallexxx` HTTP 200, подписки `user1`/`kraken-user` HTTP 200, клиенты `user1`+`kraken-user`, outbound'ов 3. > **Система возвращена в исходное состояние** (Alex восстановил из бэкапа). Проверено: `xray-admin` Up, панель HTTP 200, `vpn.mallexxx` HTTP 200, подписки `user1`/`kraken-user` HTTP 200, клиенты `user1`+`kraken-user`, outbound'ов 3.
> >
> **Главный вывод сессии: 3x-ui НЕЛЬЗЯ править снаружи работающего контейнера.** Четыре подхода — все отбились. Подробно: [[personal/tech/xray-outbound-subscription-3xui]] §«Почему внешняя правка не работает». > **Главный вывод сессии: 3x-ui НЕЛЬЗЯ править снаружи работающего контейнера.** Четыре подхода — все отбились. Подробно: [[personal/tech/xray-outbound-subscription-3xui]] §«Почему внешняя правка не работает».
@@ -158,6 +160,8 @@ related:
> >
> **Попытка 7 (финал сессии):** собрана `xui_v7.db` — **исправлена ошибка попытки 6** (инбаунд убран из шаблона). `integrity ok`, diff от оригинала чистый. Подробно: §«ПОПЫТКА 7». > **Попытка 7 (финал сессии):** собрана `xui_v7.db` — **исправлена ошибка попытки 6** (инбаунд убран из шаблона). `integrity ok`, diff от оригинала чистый. Подробно: §«ПОПЫТКА 7».
> >
> **Попытка 9 (✅ финал, ПОЗЖЕ в тот же день):** `xui_v9.db` залит — `leastLoad` + `burstObservatory.sampling` + правило по `balancerTag`. Клиент и egress заработали; далее заменён на **штатную подписку** `sub1-*` (см. §«ГЛАВНАЯ НАХОДКА СЕССИИ» и [[family/how-to/truenas-infrastructure]]).
>
> ⛔ **Правило взаимодействия (Alex, 2026-09-15):** команды — плоскими однострочниками, **без `ssh … '…'`-обёртки**, **без `sleep N`** («ты заебал свой sleep 8 пихать»), **без `execute_code`/python**, **без кириллицы в bash**. Alex выполняет команды сам. > ⛔ **Правило взаимодействия (Alex, 2026-09-15):** команды — плоскими однострочниками, **без `ssh … '…'`-обёртки**, **без `sleep N`** («ты заебал свой sleep 8 пихать»), **без `execute_code`/python**, **без кириллицы в bash**. Alex выполняет команды сам.
## Что хотели ## Что хотели
@@ -602,7 +606,7 @@ Alex восстановил БД из бэкапа. **Проверено фак
3. `xrayTemplateConfig` — +10 outbound, правило, balancer, observatory 3. `xrayTemplateConfig` — +10 outbound, правило, balancer, observatory
4. `sqlite_sequence` — счётчики `clients`=5, `client_traffics`=1 4. `sqlite_sequence` — счётчики `clients`=5, `client_traffics`=1
**Статус: НЕ ЗАЛИТА.** Alex выполнение команд не подтвердил; предыдущая (`xui_v6.db`) была откачена им из бэкапа. **Статус: ⚠️ ИСТОРИЧЕСКАЯ СБОРКА — залита не была.** Alex выполнение команд не подтвердил; предыдущая (`xui_v6.db`) была откачена им из бэкапа. **Актуально: залита и работает `xui_v9.db`** (см. §«ГЛАВНАЯ НАХОДКА СЕССИИ»), далее переведено на штатную подписку `sub1-*`. Ниже — артефакт попытки 7, оставлен для воспроизводимости.
> 🔴 **Ключевое отличие от попытки 6:** инбаунд внутри шаблона **убран**. Именно он перебивал панельный инбаунд и валил `kraken-user`. Заметка для будущей попытки: шаблон = только outbound'ы/правила/балансировщик; инбаунды — эксклюзив панели. > 🔴 **Ключевое отличие от попытки 6:** инбаунд внутри шаблона **убран**. Именно он перебивал панельный инбаунд и валил `kraken-user`. Заметка для будущей попытки: шаблон = только outbound'ы/правила/балансировщик; инбаунды — эксклюзив панели.