HomeLab

Отчёт по итогам первого дня проекта homelab.kobelkov.ru

Отчёт по итогам первого дня проекта 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 как более гибкое и экономичное решение.

Следующие шаги

  1. Наполнение контентом:
  2. Определить рубрики и шаблоны статей.
  3. Настроить агента на генерацию тематических статей согласно редакционному плану.
  4. Оптимизация производительности:
  5. Включить HTTP/2 и HSTS в nginx.
  6. Настроить кэширование ответов агента (Redis или файловый кеш) для сокращения latency.
  7. Мониторинг и алерты:
  8. Развернуть Prometheus + node_exporter для метрик VM и nginx.
  9. Настроить alerts в Alertmanager на падение сайта или повышение времени ответа агента >2 с.
  10. Резервное копирование:
  11. Ежедневный снапшот VM в Proxmox.
  12. Бэкап репозитория Git и логов на отдельное хранилище (rclone → S3‑совместимое).
  13. SEO и аналитика:
  14. Добавить sitemap.xml и robots.txt.
  15. Подключить Яндекс.Метрику/Google Search Console.
  16. Масштабирование:
  17. При росте нагрузки рассмотреть развёртывание второго узла (load‑balancer HAProxy).
  18. Перенести агент в контейнер Docker для упрощения обновлений.

Отчёт составлен в деловом стиле, без лишней информации, сосредоточен на выполненных действиях, достигнутом результате и планах дальнейшего развития.