infra/docs/infrastructure-plan.md
jack 9e4ac718d9
All checks were successful
CI/CD / syntax-check (push) Successful in 2m38s
CI/CD / deploy (push) Successful in 9m44s
docs: add infrastructure plan and Claude agent guide
- infrastructure-plan.md: server resource analysis (1 vCPU / 2GB RAM
  critically overloaded), two-server architecture recommendation
- claude-agent.md: how to run Claude Code as an autonomous infra agent
  via Anthropic API + Telegram bot interface

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-22 02:19:38 +07:00

6.3 KiB
Raw Blame History

Infrastructure Plan

Текущее состояние сервера (март 2026)

Сервер: 87.249.49.32 (VPS-1, основной)

Ресурс Состояние Оценка
CPU 1 vCPU, load avg 1.63 🔴 Критично
RAM 1.9 ГБ, свободно 99 МБ 🔴 Критично
Swap Отсутствует 🔴 Опасно
Disk 29 ГБ, 45% занято 🟢 Норм

Вывод: сервер работает на пределе. Любой пик нагрузки (деплой через CI/CD, обращение к Plane, тяжёлый запрос) приводит к конкуренции за RAM без возможности свопирования — процессы убиваются OOM killer'ом.

Крупнейшие потребители RAM

Контейнер RAM
plane-minio 244 МБ
plane-api 198 МБ
plane-worker 178 МБ
plane-beat 150 МБ
plane-space 111 МБ
forgejo 140 МБ
plane-db 40 МБ
forgejo-db 41 МБ

Немедленные действия (без смены тарифа)

1. Добавить swap (делается за 2 минуты)

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Это не решит проблему, но защитит от внезапных OOM kills.

2. Ограничить mem_limit у Plane-сервисов

  • plane-worker и plane-beat сейчас без лимита, жрут ~150-180 МБ каждый
  • Поставить mem_limit: 256m на каждый

Архитектура: два сервера

Рекомендуемая схема

                          ┌─────────────────────────────────┐
Internet ──────────────── │  VPS-1 (основной, 87.249.49.32) │
                          │                                 │
                          │  Traefik (80/443)               │
                          │  ├── Forgejo (git.csrx.ru)      │
                          │  ├── Vaultwarden (vault.)       │
                          │  ├── Plane (plane.)             │
                          │  ├── Syncthing (sync.)          │
                          │  └── Forgejo Runner             │
                          └─────────────────────────────────┘
                                        │
                                   Ansible SSH
                                        │
                          ┌─────────────────────────────────┐
                          │  VPS-2 (мониторинг + тулзы)     │
                          │                                 │
                          │  Traefik (80/443)               │
                          │  ├── Grafana (dashboard.)       │
                          │  ├── Prometheus (internal)      │
                          │  ├── cAdvisor (internal)        │
                          │  ├── Node Exporter × 2 servers  │
                          │  └── Claude Code Agent          │
                          └─────────────────────────────────┘

Почему два сервера?

  1. Изоляция: мониторинг не ест ресурсы продакшен-сервисов
  2. Мониторинг мониторит продакшен снаружи — видит проблемы даже при перегрузке VPS-1
  3. Claude Agent работает на отдельной машине — не мешает пользователям
  4. Цена: маленький VPS для мониторинга стоит 200-400 руб/мес

Параметры VPS-2 (мониторинг)

Минимум: 2 vCPU, 2 ГБ RAM, 20 ГБ SSD — этого хватит для Grafana+Prometheus+Claude Agent.

Параметры для апгрейда VPS-1 (опционально)

Текущий тариф явно перегружен. Рекомендую апгрейд до 2 vCPU, 4 ГБ RAM — это закроет проблему RAM и CPU.


Провайдеры

Текущий сервер на Timeweb Cloud (судя по IP-диапазону и ключу timeweb в ~/.ssh/).

Варианты для VPS-2:

  • Timeweb Cloud — тот же провайдер, можно управлять из одного кабинета, хороший пинг между серверами (оба в одном датацентре)
  • Hetzner — дешевле, но выше пинг из России
  • Selectel / Beeline Cloud — российские, быстро

Рекомендация: VPS-2 тоже на Timeweb Cloud — серверы в одной сети, внутренний трафик между ними бесплатный или очень дешёвый.


Что деплоить на VPS-2 через Ansible

Добавить VPS-2 в inventory/hosts.ini как отдельный хост monitoring. Создать роль monitoring с:

  • Prometheus + Node Exporter (scrape обоих серверов)
  • Grafana с дашбордами
  • cAdvisor (мониторит контейнеры VPS-2)
  • Remote scrape Node Exporter на VPS-1 (добавить Node Exporter на VPS-1 без публичного доступа, через Prometheus federation или прямой scrape по внутреннему IP)

Таймлайн

Приоритет Действие Время
🔴 Сейчас Добавить swap на VPS-1 5 мин
🟡 Эта неделя Купить VPS-2, задеплоить мониторинг 1-2 ч
🟡 Эта неделя Апгрейд VPS-1 до 4 ГБ RAM 10 мин (перезагрузка)
🟢 Позже Claude Agent на VPS-2 см. claude-agent.md