# Uptime Kuma — self-hosted uptime monitoring + alerting (#75 B6-1).
#
# Деплоится ОТДЕЛЬНО от main-стека (свой compose-проект `gendesign-uptime`),
# по образцу docker-compose.obsidian.yml. НЕ входит в deploy.yml path-фильтры —
# main-pipeline (project `gendesign`, -f docker-compose.prod.yml) его НЕ трогает
# и НЕ пересоздаёт. Запуск/обновление — вручную (Anton), см. инструкцию ниже.
#
#   docker network create gendesign_shared   # один раз, обычно уже создан main-стеком
#   docker compose -p gendesign-uptime -f docker-compose.uptime.yml up -d
#
# Caddy в main-стеке маршрутизирует status.gendsgn.ru → uptime-kuma:3001 через
# external network gendesign_shared (Caddyfile, блок status.gendsgn.ru).
#
# WHY отдельный контейнер, а не VPS: issue допускает доп-контейнер. Trade-off
# принят сознательно — если упадёт весь VPS, Kuma упадёт вместе с сайтом и не
# отправит алерт. Митигируется внешним «watchdog» (healthchecks.io / UptimeRobot
# free tier), который пингует https://gendsgn.ru/health извне — см. README-блок
# «External watchdog» ниже. Kuma покрывает per-endpoint/SSL/latency-мониторинг
# и self-hosted status-page; внешний пинг — last-resort «весь хост лёг».
#
# Лёгкий: образ ~250 МБ, idle RAM ~80-120 МБ. mem_limit держит его в узде.

services:
  uptime-kuma:
    image: louislam/uptime-kuma:1
    container_name: gendesign-uptime-kuma
    restart: unless-stopped
    # expose (НЕ ports) — наружу не публикуем, фронтит Caddy через shared-сеть.
    # Если нужен прямой доступ для первичной настройки без Caddy — временно
    # раскомментируй ports ниже (127.0.0.1 only) и ходи через SSH-туннель.
    expose:
      - "3001"
    # ports:
    #   - "127.0.0.1:3001:3001"
    volumes:
      # Persistent: SQLite-база Kuma (мониторы, история, настройки, нотификации).
      - uptime_kuma_data:/app/data
    healthcheck:
      # Встроенный extra/healthcheck в образе louislam/uptime-kuma.
      test: ["CMD", "extra/healthcheck"]
      interval: 60s
      timeout: 10s
      retries: 3
      start_period: 30s
    networks:
      - shared
    mem_limit: 256m

volumes:
  uptime_kuma_data:

networks:
  # Та же external-сеть, что у main-стека (Caddy) и obsidian-стека.
  # Создаётся вне compose: docker network create gendesign_shared
  shared:
    external: true
    name: gendesign_shared
