diff --git a/family/plans/reverse-xray-3xui-kraken.md b/family/plans/reverse-xray-3xui-kraken.md new file mode 100644 index 00000000..63313ea6 --- /dev/null +++ b/family/plans/reverse-xray-3xui-kraken.md @@ -0,0 +1,91 @@ +# Reverse Xray (3x-ui) — TrueNAS ↔ Kraken + +> Создано: 2026-09-01. Цель: проксировать трафик локальных клиентов (сеть TrueNAS 192.168.2.x) через TrueNAS → Kraken → интернет. **Kraken = точка выхода (exit node).** TrueNAS = bridge/контроллер. + +## Архитектура + +```text +ЛОКАЛЬНЫЕ КЛИЕНТЫ (192.168.2.x) + │ подключаются к прокси TrueNAS:1080/1081 (SOCKS/HTTP) ИЛИ на поддомен + ▼ +TRUENAS = 3x-ui (Xray-сервер, bridge/контроллер) — белый IP, mallexxx.duckdns.org + │ принимает клиентский трафик; reverse-канал к Kraken + ▼ ▲ +KRAKEN = Xray-клиент (outbound reverse) + exit node — держит исходящий канал к TrueNAS + ▼ +интернет +``` + +- **TrueNAS** (3x-ui): принимает от локальных клиентов + держит reverse-вход, куда подключается Kraken. +- **Kraken**: сам **инициирует** канал к TrueNAS (за NAT, не может принимать), получает по нему трафик клиентов, отпускает в интернет. +- Кра́кен за NAT ⇒ направление канала **от Kraken к TrueNAS** (Xray reverse). + +## Ключевые факты (прояснены) + +1. **На 443 у TrueNAS — Caddy** (reverso-proxy, валидные LE-серты), НЕ Xray REALITY. Хостовый маппинг: `0.0.0.0:8443→443` (контейнер), `2019` (admin), `8088→80`. +2. **Xray на TrueNAS** раньше был задуман как 3x-ui: + - База `/mnt/RED_2TB/docker/xray-admin/x-ui.db` (3x-ui), inbound `vless-ws` port `10095`, tag `in-10095-tcp`, path `/vless`, host `vpn.mallexxx.duckdns.org`, protocol vless. + - Композ-файла в `xray-admin/` нет; контейнер НЕ запущен. +3. **Caddyfile** уже проксирует (мёртвые ссылки на `xray-admin`): + - `vpn.mallexxx.duckdns.org` → `@ws path /vless` → `xray-admin:10095` + - `vpn-panel.mallexxx.duckdns.org` → `xray-admin:443` / `xray-admin:2053` (path /sub/*) + - Сертификаты для этих поддоменов уже выданы (DNS на TrueNAS IP). +4. **`vless-proxy`** (teddysun/xray) на TrueNAS — КЛИЕНТ: слушает 1080/1081 (SOCKS/HTTP), outbound на мёртвый `v.qentra.top:443` (VPS удалён). Используется Hermes-Taiga. +5. **VPS qentra.top (91.207.28.205) УДАЛЁН.** Вся старая VLESS+REALITY инфраструктура на нём недоступна. +6. Открытые порты TrueNAS наружу: **22, 443** (8443 ведёт внутрь контейнера Caddy:443 → но Caddy обрабатывает HTTPS-домены). + +## Образ 3x-ui + +- Официальный: `ghcr.io/mhsanaei/3x-ui:latest` +- Контейнер должен называться **`xray-admin`** (как в Caddyfile) и быть в сети **`caddy_default`** (чтобы Caddy резолвил имя). +- Volume: `/mnt/RED_2TB/docker/xray-admin:/etc/x-ui` (там лежит готовая `x-ui.db`). +- Порт панели: 54321 (web UI, через Caddy поддомен `vpn-panel.mallexxx.duckdns.org`). +- VLESS inbound 10095 принимается извне через Caddy `vpn.mallexxx.duckdns.org/vless` (WS), НО для reverse к Kraken нужен подход через панель. + +## Композ-файл + +Файл: `/mnt/RED_2TB/docker/xray-admin/docker-compose.yml` + +```yaml +services: + xray-admin: + image: ghcr.io/mhsanaei/3x-ui:latest + container_name: xray-admin + restart: unless-stopped + volumes: + - /mnt/RED_2TB/docker/xray-admin:/etc/x-ui + environment: + - XRAY_VMESS_AEAD_FORCED=false + networks: + - caddy_default + ports: + - "54321:54321" # 3x-ui панель (web UI) + +networks: + caddy_default: + external: true +``` + +⚠️ ПОРТЫ 10095 и 2053/443 НЕ пробрасывать на host отдельно — Caddy стоит перед 443 и маршрутизирует /vless → xray-admin:10095 по имени в общей сети. Если нужно наружу снаружи (не через Caddy), проброс отдельный — обсудить. + +## Сеть: reverse к Kraken + +`xray-admin` должен быть в сети `caddy_default` — там же Caddy. Проверено: caddy_default содержит caddy, syncthing, webdav, gitea. + +## Порядок работ + +1. ✅ Бэкап: снять копии Caddyfile, x-ui.db, текущий docker-инвентарь → `/mnt/RED_2TB/docker/backups/reverse-xray-3xui-YYYYMMDD-HHMMSS/`. +2. Создать `/mnt/RED_2TB/docker/xray-admin/docker-compose.yml` (выше). +3. Поднять `docker compose up -d`. +4. Проверить: контейнер Up, панель отвечает на `vpn-panel.mallexxx.duckdns.org`, VLESS inbound активен. +5. Через панель 3x-ui создать/настроить **reverse inbound** и клиента для Kraken + локальный SOCKS/HTTP для клиентов. +6. На Kraken поднять Xray reverse-клиент (Docker compose) с выходом в интернет. +7. Проверка end-to-end: клиент → TrueNAS → Kraken → интернет (с IP Kraken). +8. Обновить Obsidian: truenas-infrastructure.md, kraken-access.md, vps-qentra.md (пометить VPS удалён). + +## Ограничения / риски + +- Кра́кен в NAT ⇒ только исходящие соединения; reverse-канал держит Kraken. +- Не ломать существующий Caddy/домены (бэкапить Caddyfile, перезапуск Caddy аккуратно). +- `vless-proxy` (Hermes-Taiga) не трогать — настроен под local SOCKS. +- Внешний Xray-порт: через Caddy по пути `/vless` (WS). Для полноценного reverse возможно потребуется отдельный VLESS+Reality inbound на отдельном порту + проброс на роутере для Kraken — ДОБАВИТЬ после проверки связности панели.