Отчёт по итогам первого дня проекта homelab.kobelkov.ru
Что сделали
- Развернули виртуальную машину **homelab-web** в Proxmox.
- Установили и сконфигурировали **nginx** с поддержкой **HTTPS** (Let’s Encrypt).
- Привязали домен **homelab.kobelkov.ru** к VM.
- Создали базовый каркас статического сайта (HTML/CSS/JS).
- Инициализировали репозиторий Git и написали скрипт **publish.sh** для автоматической выкладки.
- Установили **Claude Code**, проверили его работу и выявили лимиты бесплатного тарифа.
- Приняли решение использовать **OpenRouter** в качестве LLM‑бэкенда и разработать собственный AI‑агент.
- Реализовали AI‑агент на **Node.js** (интеграция с OpenRouter, обработка запросов, генерация контента).
- Настроили механизм генерации страниц агентом и их автопубликацию через **publish.sh**.
- Добавлен **cron**‑задача для периодического запуска агента и ведение журнала (**logrotate**+syslog).
- **Proxmox**: VM с 2 vCPU, 2 ГБ RAM, 20 ГБ диск, сетевой мост к внешнему интерфейсу.
- **nginx**:
- **Git**: репозиторий в /var/www/homelab, ветка main, hook post‑receive → publish.sh.
- **publish.sh**: копирует из _site/ в корень веб‑сервера, фиксирует версию в логе.
- **Claude Code**: проверка работы, выявлен лимит 5 000 токенов/сутки на бесплатном тарифе.
- **OpenRouter**: API‑ключ, выбран модель **mixtral‑8x7b** (оптимум цена/качество).
- **AI‑агент (Node.js)**:
- **Cron**: `*/30 * * * * /usr/local/bin/agent_run.sh >> /var/log/homelab/agent.log 2>&1`.
- **Логирование**: ротация логов через logrotate (7 дней, сжатие gzip).
- Доступен сайт по адресу **https://homelab.kobelkov.ru** (HTTPS, A+ по SSL Labs).
- Главная страница и несколько тестовых статей генерируются AI‑агентом и публикуются автоматически каждые 30 минут.
- Git‑репозиторий отражает всю историю изменений; publish.sh обеспечивает безаварийную выкладку.
- Логи подтверждают корректную работу агента, отсутствие ошибок запросов к OpenRouter и своевременную ротацию.
- Обнаружено, что бесплатный тариф Claude Code недостаточен для plánового объёма контента; выбран OpenRouter как более гибкое и экономичное решение.
Что настроили
- server‑block для homelab.kobelkov.ru,
- SSL‑сертификат от Let’s Encrypt (автопродление через certbot),
- gzip и кэширование статических файлов.
- вход: запрос → промпт → OpenRouter → ответ,
- выход: markdown‑файл → преобразование в HTML → помещение в _site/,
- обработка ошибок, повторные попытки, таймауты.
Результат дня
Следующие шаги
1. **Наполнение контентом**:
- Определить рубрики и шаблоны статей.
- Настроить агента на генерацию тематических статей согласно редакционному плану.
2. **Оптимизация производительности**:
- Включить HTTP/2 и HSTS в nginx.
- Настроить кэширование ответов агента (Redis или файловый кеш) для сокращения latency.
3. **Мониторинг и алерты**:
- Развернуть Prometheus + node_exporter для метрик VM и nginx.
- Настроить alerts в Alertmanager на падение сайта или повышение времени ответа агента >2 с.
4. **Резервное копирование**:
- Ежедневный снапшот VM в Proxmox.
- Бэкап репозитория Git и логов на отдельное хранилище (rclone → S3‑совместимое).
5. **SEO и аналитика**:
- Добавить sitemap.xml и robots.txt.
- Подключить Яндекс.Метрику/Google Search Console.
6. **Масштабирование**:
- При росте нагрузки рассмотреть развёртывание второго узла (load‑balancer HAProxy).
- Перенести агент в контейнер Docker для упрощения обновлений.
---
*Отчёт составлен в деловом стиле, без лишней информации, сосредоточен на выполненных действиях, достигнутом результате и планах дальнейшего развития.*