- 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>
6.3 KiB
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 │
└─────────────────────────────────┘
Почему два сервера?
- Изоляция: мониторинг не ест ресурсы продакшен-сервисов
- Мониторинг мониторит продакшен снаружи — видит проблемы даже при перегрузке VPS-1
- Claude Agent работает на отдельной машине — не мешает пользователям
- Цена: маленький 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 |