Отчёт по итогам первого дня проекта homelab.kobelkov.ru
✎Схема: контуры сайта
nginx (TLS + basic auth zones)
| proxy
v
node/express (API add/edit/delete)
| serves static
v
/opt/homelab-site (html, assets, md)
Что сделали
- Развернули виртуальную машину 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:
- server‑block для homelab.kobelkov.ru,
- SSL‑сертификат от Let’s Encrypt (автопродление через certbot),
- gzip и кэширование статических файлов.
- Git: репозиторий в /var/www/homelab, ветка main, hook post‑receive → publish.sh.
- publish.sh: копирует из _site/ в корень веб‑сервера, фиксирует версию в логе.
- Claude Code: проверка работы, выявлен лимит 5 000 токенов/сутки на бесплатном тарифе.
- OpenRouter: API‑ключ, выбран модель mixtral‑8x7b (оптимум цена/качество).
- AI‑агент (Node.js):
- вход: запрос → промпт → OpenRouter → ответ,
- выход: markdown‑файл → преобразование в HTML → помещение в _site/,
- обработка ошибок, повторные попытки, таймауты.
- 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 как более гибкое и экономичное решение.
Следующие шаги
- Наполнение контентом:
- Определить рубрики и шаблоны статей.
- Настроить агента на генерацию тематических статей согласно редакционному плану.
- Оптимизация производительности:
- Включить HTTP/2 и HSTS в nginx.
- Настроить кэширование ответов агента (Redis или файловый кеш) для сокращения latency.
- Мониторинг и алерты:
- Развернуть Prometheus + node_exporter для метрик VM и nginx.
- Настроить alerts в Alertmanager на падение сайта или повышение времени ответа агента >2 с.
- Резервное копирование:
- Ежедневный снапшот VM в Proxmox.
- Бэкап репозитория Git и логов на отдельное хранилище (rclone → S3‑совместимое).
- SEO и аналитика:
- Добавить sitemap.xml и robots.txt.
- Подключить Яндекс.Метрику/Google Search Console.
- Масштабирование:
- При росте нагрузки рассмотреть развёртывание второго узла (load‑balancer HAProxy).
- Перенести агент в контейнер Docker для упрощения обновлений.
Отчёт составлен в деловом стиле, без лишней информации, сосредоточен на выполненных действиях, достигнутом результате и планах дальнейшего развития.