7.3 KiB
Reverse Xray (3x-ui) — TrueNAS ↔ Kraken
Создано: 2026-09-01. Цель: проксировать трафик локальных клиентов (сеть TrueNAS 192.168.2.x) через TrueNAS → Kraken → интернет. Kraken = точка выхода (exit node). TrueNAS = bridge/контроллер.
Архитектура
ЛОКАЛЬНЫЕ КЛИЕНТЫ (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).
Ключевые факты (прояснены)
- На 443 у TrueNAS — Caddy (reverso-proxy, валидные LE-серты), НЕ Xray REALITY. Хостовый маппинг:
0.0.0.0:8443→443(контейнер),2019(admin),8088→80. - Xray на TrueNAS раньше был задуман как 3x-ui:
- База
/mnt/RED_2TB/docker/xray-admin/x-ui.db(3x-ui), inboundvless-wsport10095, tagin-10095-tcp, path/vless, hostvpn.mallexxx.duckdns.org, protocol vless. - Композ-файла в
xray-admin/нет; контейнер НЕ запущен.
- База
- Caddyfile уже проксирует (мёртвые ссылки на
xray-admin):vpn.mallexxx.duckdns.org→@ws path /vless→xray-admin:10095vpn-panel.mallexxx.duckdns.org→xray-admin:443/xray-admin:2053(path /sub/*)- Сертификаты для этих поддоменов уже выданы (DNS на TrueNAS IP).
vless-proxy(teddysun/xray) на TrueNAS — КЛИЕНТ: слушает 1080/1081 (SOCKS/HTTP), outbound на мёртвыйv.qentra.top:443(VPS удалён). Используется Hermes-Taiga.- VPS qentra.top (91.207.28.205) УДАЛЁН. Вся старая VLESS+REALITY инфраструктура на нём недоступна.
- Открытые порты 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
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-wsport 10095, tagin-10095-tcp, path/vless, hostvpn.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.
Порядок работ
- ✅ Бэкап: снять копии Caddyfile, x-ui.db, текущий docker-инвентарь →
/mnt/RED_2TB/docker/backups/reverse-xray-3xui-YYYYMMDD-HHMMSS/. - Создать
/mnt/RED_2TB/docker/xray-admin/docker-compose.yml(выше). - Поднять
docker compose up -d. - Проверить: контейнер Up, панель отвечает на
vpn-panel.mallexxx.duckdns.org, VLESS inbound активен. - Через панель 3x-ui создать/настроить reverse inbound и клиента для Kraken + локальный SOCKS/HTTP для клиентов.
- На Kraken поднять Xray reverse-клиент (Docker compose) с выходом в интернет.
- Проверка end-to-end: клиент → TrueNAS → Kraken → интернет (с IP Kraken).
- Обновить 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 — ДОБАВИТЬ после проверки связности панели.