Files
netrunner-data/observability/Caddyfile
T
nineap 414667062c
Deploy Observability / Deploy Observability Stack (push) Failing after 20s
Deploy / Deploy to Data VPS (push) Failing after 19s
Единый observability-стек: Prometheus + Loki + Grafana + Caddy auth-гейт
Отдельный от db+vaultwarden compose-файл (разный жизненный цикл, свой
deploy-workflow) — единственное место сбора для backend, лендинга и
каждой прокси-ноды, которые физически живут на других серверах.

Prometheus скрейпит наружу (сам ходит в /metrics на тех хостах — там
нужно только открыть порт метрик для IP этого VPS). Loki, наоборот,
принимает пуши логов ИЗВНЕ — порт 3100 публикуется наружу и обязательно
фильтруется firewall'ом по IP тех хостов.

Grafana не торчит в интернет напрямую (127.0.0.1-only) — единственный
вход через Caddy с forward_auth, гейтящим по cookie-сессии
netrunner-backend (GET /api/v1/admin/observability/check,
Owner/Moderator). 3 provisioned дашборда (backend/landing/прокси-ноды).

Список scrape-таргетов для прокси-нод (observability/targets/nodes.json)
генерится и заливается автоматически из netrunner-proxy при каждом
деплое нод — вручную ничего не поддерживается.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-09 23:22:11 +07:00

29 lines
1.9 KiB
Caddyfile
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Гейтит доступ к Grafana через уже существующую cookie-сессию
# netrunner-backend (владелец/модератор) — Grafana сама наружу НЕ торчит
# (см. docker-compose.observability.yml, порт 3030 только на 127.0.0.1),
# только через этот Caddy.
#
# Как это работает: cookie сессии backend'а (nrxp_token) ставится с
# Domain=.netrunner-vpn.com (см. COOKIE_DOMAIN в netrunner-backend/.env) —
# значит браузер сам приложит её и к запросам на grafana.netrunner-vpn.com
# (тот же родительский домен, другой сабдомен — это same-site, не
# cross-site, для куки без атрибута Partitioned браузер это разрешает даже
# из iframe). forward_auth здесь пересылает эту cookie на реальный бэкенд
# (уже на другом VPS) и либо пускает дальше в Grafana (200), либо блокирует
# (401) — сам Caddy решения не принимает, только проксирует запрос-проверку.
#
# ЗАМЕНИТЬ ПЕРЕД ПЕРВЫМ ЗАПУСКОМ:
# - CHANGE_ME_GRAFANA_DOMAIN — сабдомен для Grafana (например
# grafana.netrunner-vpn.com), DNS A-запись на IP этого VPS.
# - CHANGE_ME_BACKEND_PUBLIC_URL — публичный URL бэкенда (например
# https://account.netrunner-vpn.com), КОГДА backend будет арендован и
# задеплоен — до этого auth-гейт нерабочий (пускать некому проверять).
CHANGE_ME_GRAFANA_DOMAIN {
forward_auth CHANGE_ME_BACKEND_PUBLIC_URL {
uri /api/v1/admin/observability/check
copy_headers Cookie
}
reverse_proxy grafana:3000
}