99 lines
6.9 KiB
Markdown
99 lines
6.9 KiB
Markdown
# 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 1.24.0** — vhosts (см. секцию ниже). Слушает `:80` и `213.136.74.247:443`, плюс `127.0.0.1:4443`.
|
||
- **OpenVPN** — `1194/udp`, подсеть `10.8.0.0/24`.
|
||
- **squid** — слушает `3128`, но по README считается нерабочим (упал 2026-02-09), не используется.
|
||
- **systemd-resolved** — `53`.
|
||
- порт `4369` (epmd) — артефакт erlang-приложения.
|
||
|
||
---
|
||
|
||
## 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` | 301→https | веб gitea |
|
||
| **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.
|
||
- Туннель: **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
|
||
```
|