Files
obsidian-vault/family/plans/reverse-xray-3xui-kraken.md
T

104 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.
## Статус деплоя (2026-09-01)
**3x-ui развёрнут на TrueNAS и работает:**
- Контейнер `xray-admin` (ghcr.io/mhsanaei/3x-ui:latest, **3.7.0**, Xray 26.7.28) в сети `caddy_default`, volume `/mnt/RED_2TB/docker/xray-admin:/etc/x-ui`.
- Панель web UI: **`https://vpn-panel.mallexxx.duckdns.org/` → HTTP 200** (Caddy резолвит `xray-admin:2053`).
- Sub-сервер: `[::]:443` (путь /sub), панель `[::]:2053` — как в Caddyfile.
- Inbound: `vless-ws` port **10095**, tag `in-10095-tcp`, path `/vless`, host `vpn.mallexxx.duckdns.org` (Caddy path /vless → xray-admin:10095).
- 3x-ui **поддерживает reverse** (в бинарнике `clientReverseTags`) — настройка через панель.
- Бэкап: `/mnt/RED_2TB/docker/backups/reverse-xray-3xui-20260901-113625/` (Caddyfile + x-ui.db + docker-inventory).
**Следующий шаг:** развернуть reverse-клиент на Kraken (exit node) и настроить reverse-bridge в 3x-ui (TrueNAS) + локальный SOCKS/HTTP для клиентов сети TrueNAS.
## Порядок работ
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 — ДОБАВИТЬ после проверки связности панели.