diff --git a/AGENTS.md b/AGENTS.md index d68c610..f951cc3 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -3,6 +3,7 @@ Описание состояния серверов. ## Серверы -- [`servers/fr1.md`](servers/fr1.md) — Contabo, France (`fr1.ruzzy.dev`). +- [`servers/de1.md`](servers/de1.md) — `ruzzy.dev` (213.136.74.247). Действующая прод-нода: прокси/VPN (telemt, AmneziaWG, OpenVPN), gitea, openclaw, боты. Источник для переноса. +- [`servers/fr1.md`](servers/fr1.md) — `fr1.ruzzy.dev` (161.97.93.252). Новая чистая нода (Ubuntu 24.04). Секреты (пароли, токены) в репозитории не хранятся — только на серверах. diff --git a/servers/de1.md b/servers/de1.md new file mode 100644 index 0000000..f718cb3 --- /dev/null +++ b/servers/de1.md @@ -0,0 +1,82 @@ +# 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-репо): `ssh://git@git.ruzzy.dev:2222`. + +## DNS +- `ruzzy.dev`, `www.ruzzy.dev`, `git.ruzzy.dev` → 213.136.74.247 (Namecheap). +- `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-хостинг | 2222 (ssh), 127.0.0.1:3000 (web) | `/srv/gitea/{data,config,logs}` | +| **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 (на хосте) +- **nginx** — `:80` и `:443` (на 213.136.74.247), плюс `127.0.0.1:4443` (FakeTLS-бэкенд маски telemt). Проксирует gitea и vhosts. Важно: nginx.conf должен include sites-enabled (иначе 443 не слушается). +- **OpenVPN** — `1194/udp`, подсеть `10.8.0.0/24`. +- **squid** — слушает `3128`, но по README считается нерабочим (упал 2026-02-09), не используется. +- **systemd-resolved** — `53`. +- порт `4369` (epmd) — артефакт erlang-приложения. + +--- + +## VPN-топология (AmneziaWG) +- Контейнер `amnezia-awg`, iface `amn0` = 172.29.172.1/24, порт 36360/udp. +- Туннель: **de1 = 10.8.1.0**; RU-сервер подключается как **10.8.1.4/32**. + +## 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`. + +## Cron (rus) +``` +0 12 * * * sudo certbot renew --quiet # обновление TLS-сертификатов +*/5 * * * * ~/openclaw/sync.sh # синк Obsidian vault → gitea +```