[2026-09-15] eagle: family/how-to/truenas-infrastructure.md family/plans/reverse-xray-3xui-kraken.md personal/tech/xray-outbound-subscription-3xui.md
This commit is contained in:
@@ -2,6 +2,45 @@
|
||||
|
||||
> Создано: 2026-09-01. Цель: проксировать трафик локальных клиентов (сеть TrueNAS 192.168.2.x) через TrueNAS → Kraken → интернет. **Kraken = точка выхода (exit node).** TrueNAS = bridge/контроллер.
|
||||
|
||||
## 🔴 2026-09-15: COMPOSE-ФАЙЛ `xray-admin` УТРАЧЕН — восстановлен из `docker inspect`
|
||||
|
||||
**Факт (проверено по Zulip DB, `personal/zulip router issues`, сообщение `id=86681`, 2026-09-01 05:40:08 UTC):**
|
||||
|
||||
Compose-файл был создан 1 сентября и **уничтожен через 1,5 минуты после создания** — самим агентом:
|
||||
|
||||
```bash
|
||||
# сообщение 86681, 2026-09-01 05:40:08 UTC
|
||||
docker exec xray-admin rm -f /etc/x-ui/docker-compose.yml
|
||||
```
|
||||
|
||||
**Обоснование агента (сообщение 86678, дословно):**
|
||||
> «Обратил внимание: в `/etc/x-ui/` появился `docker-compose.yml` — это мой загруженный файл попал в volume (он смонтирован в `/etc/x-ui`). Не страшно, но лучше убрать его из `/etc/x-ui` (не должен лежать в контейнере).»
|
||||
|
||||
**Почему это снесло файл на хосте:** volume `/mnt/RED_2TB/docker/xray-admin` смонтирован в контейнер как `/etc/x-ui` — это **bind-mount**, не копия. `rm` внутри контейнера удалил реальный файл на TrueNAS.
|
||||
|
||||
**Хронология (из Zulip):**
|
||||
|
||||
| Время (UTC) | Событие |
|
||||
|---|---|
|
||||
| 05:38:31 | Compose собран в `/tmp/xray-admin-compose.yml`, залит `scp` → `/mnt/RED_2TB/docker/xray-admin/docker-compose.yml` |
|
||||
| 05:38:58 | `docker compose up -d` — контейнер поднялся, панель HTTP 200 |
|
||||
| 05:39:56 | Агент заметил compose «внутри» контейнера (это тот же файл через bind-mount) |
|
||||
| **05:40:08** | **`rm -f /etc/x-ui/docker-compose.yml` — файл уничтожен на хосте** |
|
||||
| 05:40:45 | В доке зафиксировано «всё чисто», потеря не замечена |
|
||||
|
||||
**Диагностика 2026-09-15 (три пустых проверки):**
|
||||
1. `ls /mnt/RED_2TB/docker/xray-admin/` → только `system_metrics.gob`, `x-ui.db`, `x-ui.db-shm`, `x-ui.db-wal`
|
||||
2. `docker exec xray-admin sh -c "ls /etc/x-ui/ | grep -i compose"` → пусто
|
||||
3. `find /mnt/RED_2TB/docker -maxdepth 2 -name "*compose*" | grep -i xray` → пусто
|
||||
4. В бэкапах тоже нет: `backups/reverse-xray-3xui-20260901-113625/` содержит только `xray-admin/x-ui.db`, `caddy/Caddyfile`, `docker-inventory.txt`
|
||||
|
||||
> ⚠️ **Docker label врёт о наличии файла.** `docker inspect xray-admin --format '{{index .Config.Labels "com.docker.compose.project.config_files"}}'` → `/mnt/RED_2TB/docker/xray-admin/docker-compose.yml`. Label пишется при создании контейнера и **не обновляется** при удалении файла. Наличие в label ≠ наличие на диске.
|
||||
|
||||
> 🔴 **ГЛАВНЫЙ ПИТФОЛЛ (повторяемый):** никогда не выполнять `rm`/`mv`/правку файлов внутри контейнера, чей volume — bind-mount на хостовую папку с compose-файлом. Volume `xray-admin` = `/etc/x-ui`, и там же лежит `docker-compose.yml`. Команда «почистить контейнер» уничтожает конфиг деплоя.
|
||||
> **Правильно:** если хочется убрать compose из контейнерного view — это невозможно без удаления с хоста, т.к. это один и тот же файл. Ничего не делать. Либо держать compose **вне** смонтированной папки.
|
||||
|
||||
**Восстановление:** только из `docker inspect` (см. ниже). Параметры: образ `ghcr.io/mhsanaei/3x-ui:latest`, `container_name: xray-admin`, `hostname: xray-admin`, `restart: unless-stopped`, `TZ=Asia/Novosibirsk`, `PUID=950`, `PGID=950`, volume `/mnt/RED_2TB/docker/xray-admin:/etc/x-ui`, `ports: 54321:54321`, сеть `caddy_default` (external). Эквивалент: `docker run` с теми же флагами.
|
||||
|
||||
## Архитектура
|
||||
|
||||
```text
|
||||
|
||||
Reference in New Issue
Block a user