Hermes + Cloudflare: автоматизация DNS и деплоя из терминала

Как AI-агент Hermes управляет DNS-записями, деплоит статику на Cloudflare Pages и настраивает SSL — всё через CLI, без Dashboard.

Hermes + Cloudflare: автоматизация DNS и деплоя из терминала

У меня десятки субдоменов: блог, лендинги, API, нотификационные сервисы. Управлять всем этим через Cloudflare Dashboard — больно. Каждый раз логиниться, искать нужную запись, кликать, ждать...

Решение — дать это дело AI-агенту. Hermes Agent умеет работать с Cloudflare через CLI и API. Вот как я настроил этот pipeline.

Зачем агенту Cloudflare?

Типичный сценарий: я ставлю новый сервис на VPS и хочу, чтобы он был доступен по HTTPS на своём субдомене. Раньше это было:

  1. Зайти в Cloudflare Dashboard
  2. Создать DNS-запись
  3. Дождаться пропагации
  4. Проверить SSL
  5. Настроить Caddy/nginx

Теперь я говорю Hermes: «Подними ntfy на субдомене notify и проксируй через Cloudflare». Агент делает всё сам.

Инструмент: flarectl

flarectl — официальная CLI-утилита от Cloudflare. Установка:

go install github.com/cloudflare/cloudflare-go/cmd/flarectl@latest

Авторизация через переменные окружения:

export CF_API_TOKEN=your-api-token
export CF_ACCOUNT_ID=your-account-id

Токен создаётся в Dashboard → My Profile → API Tokens. Нужны permissions: Zone:DNS:Edit, Zone:Zone:Read.

Базовые операции

Создание DNS-записи

A-запись (субдомен → IP сервера):

flarectl dns create --zone example.com \
  --type A --name myservice --content 203.0.113.1 --proxied

CNAME (субдомен → Cloudflare Pages проект):

flarectl dns create --zone example.com \
  --type CNAME --name blog --content my-project.pages.dev --proxied

Флаг --proxied включает оранжевый облако — Cloudflare кеширует, защищает от DDoS, terminates SSL.

Обновление записей

flarectl dns update --zone example.com \
  --id RECORD_ID --type A --name myservice --content 203.0.113.2

Удаление

flarectl dns delete --zone example.com --id RECORD_ID

Cloudflare Pages: деплой статики

Для Nuxt, Astro, Next.js и других SSG/SSR фреймворков Cloudflare Pages — бесплатный хостинг с CDN. Деплой через wrangler CLI:

npm install -g wrangler

# Авторизация
wrangler login

# Деплой из папки dist/
wrangler pages deploy dist --project-name=my-blog

Кастомный домен привязывается через API:

curl -s -X POST \
  "https://api.cloudflare.com/client/v4/accounts/$CF_ACCOUNT_ID/pages/projects/my-blog/domains" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{"name": "blog.example.com"}'

Wrangler v4.94+ может не поддерживать wrangler pages domain add. Используйте API напрямую.

SSL: Flexible vs Full

SSL:Flexible — Cloudflare terminates SSL на своём edge, до вашего origin идёт plain HTTP. Не нужен сертификат на сервере. Идеально для сервисов, которые не работают с HTTPS нативно.

SSL:Full — Cloudflare terminates SSL на edge, но до origin тоже идёт SSL. Нужен сертификат на сервере (можно Cloudflare Origin CA — бесплатный).

Для self-hosted сервисов на одном VPS обычно хватает Flexible. Но если сервис передаёт чувствительные данные — ставьте Full.

Автоматизация через Hermes

Вот как это работает в реальной жизни. Hermes Agent имеет доступ к терминалу и может выполнять команды. Я говорю:

«Поставь Grafana на монитор.example.com»

Агент:

  1. Проверяет, что Grafana установлена
  2. Создаёт DNS A-запись через flarectl
  3. Настраивает Caddy reverse proxy
  4. Проверяет HTTPS

Всё в одном диалоге, без переключения в Dashboard.

Cron-мониторинг

Hermes может проверять DNS-записи по расписанию:

flarectl dns list --zone example.com --type A

Если запись изменилась или пропала — агент отправляет уведомление.

Подводные камни

Proxy status. Если запись не proxied (серое облако), Cloudflare не terminates SSL и не кеширует. Для сервисов, которые должны быть за CDN — всегда proxied.

Cache purge. После деплоя нового билда Cloudflare может отдавать старый кеш. Очистка:

curl -s -X POST \
  "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/purge_cache" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  --data '{"purge_everything":true}'

Rate limits. Cloudflare Free план имеет лимиты на API-вызовы. Для автоматизации это редко проблема, но если агент делает десятки запросов в минуту — может словить 429.

DNS пропагация. После создания записи DNS пропагируется за 1-5 минут. Hermes проверяет через dig или flarectl dns list перед тем, как считать задачу выполненной.

Итог

Cloudflare Free + Hermes Agent = полная автоматизация инфраструктуры из терминала. Никакого Dashboard, никаких ручных кликов. Агент управляет DNS, деплоит статику, настраивает SSL, мониторит записи.

Для self-hosted проектов это идеальный стек: бесплатно, надёжно, и всё через CLI.