# de1 — `ruzzy.dev` (213.136.74.247) Действующая прод-нода (прокси/VPN + сервисы). С неё переносим на `fr1`/`ru1`. Секреты (токены, ключи, MTProxy secret) — только на сервере, не здесь. **Провайдер:** Contabo · физически **France / Lauterbourg** (в README/топологии зовётся «DE»). **ОС:** Ubuntu **18.04.5 LTS** (⚠️ EOL) · kernel 4.15.0-144 **Ресурсы:** 8 vCPU / 29 GB RAM / 786 GB (исп. 176 GB) · swap 2 GB **hostname:** `vmi274597` · PTR `zimbra.zottel.net` (устаревший, чужой) **Uptime:** ~132 дня --- ## Доступ - `ssh rus@ruzzy.dev` → пользователь `rus` (uid 1000, shell zsh), в группе docker, sudo. - Пользователь `validator` (uid 1001, shell `/dev/null`) — сервисный аккаунт, активных процессов нет. - ~~gitea (origin infra-репо)~~ — **перенесена на `fr1` 2026-06-21**, теперь `git.ruzzy.dev` → fr1. На `de1` контейнер остановлен (restart=no), данные `/srv/gitea` оставлены для отката. ## DNS - `ruzzy.dev`, `www.ruzzy.dev` → 213.136.74.247 (Namecheap). - ~~`git.ruzzy.dev`~~ → **переключён на `fr1` (161.97.93.252)** 2026-06-21. - `www.ruzzy.dev` используется как FakeTLS-маска для MTProxy. --- ## Docker-сервисы (всё крутится в Docker) | Контейнер | Образ | Роль | Порты | Compose / данные | |---|---|---|---|---| | **telemt** | telemt:latest | MTProxy (FakeTLS) | host: 8443, API 9091 | `~/gost/` · cfg `~/gost/telemt-config/` | | **amnezia-awg** | amnezia-awg | AmneziaWG туннель | 36360/udp · iface `amn0` | — | | ~~**gitea**~~ | gitea/gitea | Git-хостинг — **перенесён на fr1 2026-06-21** | — | `/srv/gitea` (оставлен для отката, контейнер остановлен, restart=no) | | **postgres** | mdillon/postgis | PostgreSQL+PostGIS | 127.0.0.1:5432 | `~/volumes/postgres` | | **openclaw-gateway-1** | openclaw:local | AI-ассистент «Илюха» | 18789-18790 | `~/openclaw/` · `~/.openclaw/` | | **openclaw-cli-1** | openclaw:local | CLI-управление openclaw | — | `~/openclaw/` | | **openclaw-whisper-1** | faster-whisper-server | STT (Whisper) | 8000 | vol `openclaw_whisper_models` | | **claude-channels** | claude-channels | Claude-бот в Telegram | — | `~/claude-channels/` · vol `claude-home`; vault `~/MyVault` | | **ipcam-sftp** | atmoz/sftp | Приём видео с IP-камер (SFTP) | 2223→22 | `/srv/ipcam/videos` | | **ipcam-ftps** | fauria/vsftpd | Приём видео с IP-камер (FTPS) | 2221, 30000-30010 (pasv) | `/srv/ipcam/videos`, certs `/srv/ftps/certs` | | *(2× openclaw-cli-run)* | 702cf30808fc | временные cli-run, **unhealthy** | — | — | ## Не в Docker (на хосте, systemd) - **nginx 1.24.0** — vhosts (см. секцию ниже). Слушает `:80`, `213.136.74.247:443`, `127.0.0.1:4443`. - **openvpn@server.service** — активен. `1194/udp`, подсеть `10.8.0.0/24`. Iptables-правила восстанавливает `iptables-openvpn.service` (+ `netfilter-persistent`). Конфиг `/etc/openvpn/server.conf`. - **squid.service** — **активен**, слушает `3128` (в README ошибочно помечен как упавший — фактически работает). - **epmd.service** — активен, `4369` (Erlang Port Mapper), но **без beam/erlang-приложения** — рудимент. - **supervisor** — **заброшен**: не запущен (сокета нет), конфиги в `/etc/supervisor/conf.d/` пустые. Имена-заглушки (`adv_notifier_back`, `bazaraki_crawler_v3_back`, `btc_spy`, `petuh_bot`, `proxy_source_back`) — наследие, проекты переехали на docker/в `/var/www`. - **plexmediaserver.service** — включён, но **failed** (не слушает 32400) — рудимент. - **unbound.service** — включён, но **не работает** (лежит — совпадает с README). - **systemd-resolved** — `53`. - Прочее включённое: rsync (daemon), sysstat (sar), ondemand (cpu governor), wpa_supplicant (рудимент). --- ## nginx (vhosts) nginx 1.24.0 на хосте. `nginx.conf` подключает `conf.d/*.conf` + `sites-enabled/*`. Vhost'ы в `sites-available/`, симлинки в `sites-enabled/`. TLS везде Let's Encrypt (certbot, автопродление через cron). | Домен | :443 → backend | :80 | Назначение | |---|---|---|---| | ~~git.ruzzy.dev~~ | ~~proxy `127.0.0.1:3000`~~ | — | **устарел**: gitea на `de1` остановлена, DNS уехал на fr1. Vhost ещё включён → отдаёт 502 на запросы со старых DNS-кэшей. Можно отключить/редиректить. | | **stat.ruzzy.dev** | proxy `127.0.0.1:3001` | 404 | статистика (WS-проксирование, апстрим :3001) | | **work.ruzzy.dev** | статика `/var/www/work.ruzzy.dev` | 404 | файлы: `/d/` форс-скачивание, `/v/` стриминг с byte-range | | **www.ruzzy.dev** | **`127.0.0.1:4443` ssl** → статика `/var/www/www.ruzzy.dev` | ACME + 301→https | **FakeTLS-маска для telemt** (MTProxy форвардит сюда) | | adv.ruzzy.dev | — | — | включён, но файл пустой (no-op) | - `conf.d/default.conf` — дефолтный `localhost:80` (заглушка nginx). - `sites-available/default` (213.136.74.247:80 default_server, root `/var/www/html`) — **не включён** (нет симлинка). - Бэкапы конфига: `nginx.conf.bak`, `nginx.conf.bak.20260613`. ## VPN-топология (AmneziaWG) - Контейнер `amnezia-awg`, iface `amn0` = 172.29.172.1/24, порт 36360/udp. AWG server `wg0` 10.8.1.0/24 (server-pubkey `Lumb1o…`), пиры 10.8.1.1/2/3 + ранее 10.8.1.4 (ru1). - ⚠️ **ru1 (10.8.1.4) с 2026-06-21 переключён на `fr1`** (зеркало с теми же ключами). Прямые пиры 10.8.1.1/2/3 пока остаются здесь. de1 держим для отката. ## MTProxy (telemt) - `~/gost/docker-compose.yml`: host-network, read-only, cap_drop ALL + NET_BIND_SERVICE, no-new-privileges. - Порт 8443, FakeTLS под `www.ruzzy.dev` (маска → nginx 127.0.0.1:4443). API: `curl http://127.0.0.1:9091/v1/users`. - Юзер `ruzzy`. Secret (MD5) и диплинк — в `~/README.md`/конфиге на сервере (НЕ здесь). ## OpenClaw — «Илюха» (AI-ассистент в Telegram) - Бот `@my_vault_assist_bot`. Gateway-контейнер слушает 18789. Модель: Claude Haiku 4.5 (fallback GPT-5.4). - Каталоги: `~/openclaw/` (compose, `.env`, `Dockerfile.custom`), `~/.openclaw/` (config, skills, logs), `~/.openclaw-auth-profile-secrets/`. - Vault: `~/MyVault` (Obsidian) → монтируется в контейнер, синкается в gitea каждые 5 мин (`sync.sh`, cron). SSH-ключ `~/.ssh/openclaw_gitea` (deploy key в gitea, alias `gitea-openclaw`). - Скилы: myvault, shopping, books, diagrams, meeting-summary, weather, whisper, video-frames (websearch отключён). - Возможности: голос (Whisper STT / OpenAI TTS), Mermaid-диаграммы (chromium+mmdc), книги (EPUB/PDF), саммари видео-встреч. - API-ключи в `~/openclaw/.env`: ANTHROPIC, OPENAI, TELEGRAM_BOT_TOKEN, BRAVE, TAVILY, OPENCLAW_GATEWAY_TOKEN. - Подробно: `~/OPENCLAW.md` на сервере. ## Claude-бот (claude-channels) - Бот `@iluha_rabobot` (id 8322585909). Личка (allowlist, id 607015) + группа «Бухач» (`-584750268`, requireMention). - `~/claude-channels/` (compose, Dockerfile Node22+Bun+Claude Code, `.env`). Volume `claude-channels_claude-home` → `/root`; vault `~/MyVault`. - Настройки внутри volume: `.claude/settings.json`, `.claude/channels/telegram/access.json`. - Подробно: `~/CLAUDE_BOT.md` на сервере. ## Прочее - **ipcam** — приём записей с IP-камер по SFTP (2223) и FTPS (2221 + pasv 30000-30010) в `/srv/ipcam/videos`. - **postgres/postgis** — БД (localhost), данные `~/volumes/postgres`. ## Мониторинг - Агент `~/monitoring-agent` (node-exporter `:9100` + cadvisor `:8080`, docker), отдаёт метрики на Prometheus `fr1`. - Порты 9100/8080 ограничены только для IP `fr1` (161.97.93.252) через `DOCKER-USER` iptables (сохранено netfilter-persistent). - В Grafana `fr1` — instance `de1`. Метрики по публичной сети (план: перецепить на приватный WG-туннель при переносе VPN). ## Проекты пользователя (`/var/www`) Код проектов лежит здесь (владелец `rus`). ⚠️ Сейчас в `docker ps` их **нет** — то есть эти приложения сейчас остановлены (часть гоняли вручную через `docker compose`). | Проект | Размер | docker-compose | Назначение (по имени) | |---|---|---|---| | `work.ruzzy.dev` | 4.2 GB | — | статика файлов (отдаётся nginx, см. vhost work) | | `files` | 780 MB | — | файлы | | `cookie-monster` | 439 MB | — | — | | `petuh_bot` | 350 MB | — | Telegram-бот | | `proxy_source` | 17 MB | ✅ | бэкенд источников прокси | | `bazaraki_crawler_v3` | 11 MB | ✅ | краулер объявлений (bazaraki, Кипр) | | `adv_notifier` | 5.7 MB | ✅ | нотификатор объявлений (связан с `adv.ruzzy.dev`) | | `btc_spy` | 968 KB | — | мониторинг BTC (блокчейн) | | `blog`, `mock`, `embassy_parsers`, `webhook_updater` | — | — | старое/вспомогательное | | `www.ruzzy.dev` | 8 KB | — | статика маскировочного сайта (FakeTLS) | (висели застрявшие zsh-процессы `docker compose build` по `bazaraki_crawler_v3` — мусор от прошлых ручных сборок.) ## Cron / systemd timers **Crontab пользователя `rus`:** ``` 0 12 * * * sudo certbot renew --quiet # обновление TLS-сертификатов */5 * * * * ~/openclaw/sync.sh # синк Obsidian vault → gitea ``` (root-crontab через `sudo crontab -l` не проверялся — нет sudo-доступа в этой сессии.) **Системный cron (`/etc/cron.d/`):** ``` certbot: 0 */12 * * * certbot -q renew # ещё одно автопродление (дубль) sync: 52 * * * * sync; echo 3 > /proc/sys/vm/drop_caches # ежечасный сброс page cache (ручной тюнинг) sync: 42 23 * * * fstrim / sysctl: @reboot sysctl -p sysstat / popularity-contest — штатные. ``` **systemd timers (активные):** `snap.certbot.renew.timer` (certbot ещё и через snap!), `apt-daily`, `apt-daily-upgrade`, `fstrim`, `ua-messaging`, `motd-news`, `systemd-tmpfiles-clean`. ⚠️ **Автопродление сертификатов настроено тройным способом**: user-cron + `/etc/cron.d/certbot` + `snap.certbot.renew.timer`. Избыточно, но не вредит. При переносе достаточно одного механизма.