Отдельный от 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>
Раньше Vaultwarden жил на проде голым файлом (~/vaultwarden-data/docker-compose.yml)
без git/CI, на SQLite, с секретами прямо в файле. Здесь: Postgres вместо
SQLite, все секреты — только через .env, который на каждом деплое
пересобирается заново из GitHub Actions secrets (см. .env.example для
полного списка нужных переменных и .github/workflows/deploy.yml).
Важно: переключение DATABASE_URL на Postgres поверх уже существующего
./data/db.sqlite3 с реальными данными пользователей само по себе данные не
мигрирует — см. комментарий в docker-compose.yml.