8.7 KiB
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 (на хосте, 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) — какое-то erlang-приложение. - supervisor.service — включён (supervisord, process manager) — проверить, чем управляет.
- plexmediaserver.service — включён (Plex Media Server).
- unbound.service — включён, но не работает (DNS-резолвер, лежит — совпадает с 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 |
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, ifaceamn0= 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, aliasgitea-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). Volumeclaude-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 / 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. Избыточно, но не вредит. При переносе достаточно одного механизма.