Отдельный от 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>
Синкает postgres/pg_hba.conf, postgres/init-backend-db.sh и scripts/backup.sh
на VPS (раньше копировался только docker-compose.yml). Самоподписанный
сертификат создаётся один раз, если ещё не существует — повторные деплои
его не трогают, чтобы не рвать открытые TLS-сессии рестартом контейнера.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
DATA_VPS_IP, имя/юзер БД, домен/лог-левел/SIGNUPS_ALLOWED/SMTP-хост-порт-
security-username Vaultwarden — в vars (не секреты сами по себе). Пароли
(VW_DB_PASSWORD, SMTP_PASSWORD), ADMIN_TOKEN и SSH-ключ остаются в secrets.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Копия .github/workflows/deploy.yml — без изменений содержимого: тут нет
логина на ghcr.io (postgres/vaultwarden — публичные образы с Docker Hub),
менять было нечего. Секреты (DATA_VPS_IP, DATA_SSH_PRIVATE_KEY,
DATA_DB_*, VAULTWARDEN_*) нужно завести отдельно в Gitea — своё хранилище,
не шарится с GitHub Actions.