All checks were successful
CI / changes (push) Successful in 13s
CI / changes (pull_request) Successful in 12s
CI / frontend-tests (push) Successful in 53s
CI / openapi-codegen-check (push) Successful in 1m58s
CI / frontend-tests (pull_request) Successful in 47s
CI / openapi-codegen-check (pull_request) Successful in 1m50s
CI / backend-tests (push) Successful in 8m54s
CI / backend-tests (pull_request) Successful in 8m45s
Deploy / changes (push) Successful in 6s
Deploy / build-backend (push) Successful in 2m50s
Deploy / build-frontend (push) Successful in 3m11s
Deploy / build-worker (push) Successful in 4m38s
Deploy / deploy (push) Successful in 2m1s
#68: pytest-cov + [tool.coverage] fail_under=65 (baseline 71%), backend-tests --cov + xml. #69: openapi-codegen-check job (dump app.openapi() → openapi-typescript → git diff). Job использует node_modules-pinned openapi-typescript/prettier (НЕ npx --yes latest — иначе version-mismatch ложный diff). + regenerated api-types.ts из СВЕЖЕГО main openapi (8288 строк, включая #73 /freshness — синхронен). #75: Uptime Kuma isolated stack + status.gendsgn.ru Caddy + external Telegram watchdog. #77: no change — build cache достаточен. Closes #68 Closes #69 Closes #75 Closes #77
57 lines
2.9 KiB
YAML
57 lines
2.9 KiB
YAML
# 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
|