414667062c
Отдельный от 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>
29 lines
1.9 KiB
Caddyfile
29 lines
1.9 KiB
Caddyfile
# Гейтит доступ к 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
|
||
}
|