049d38a2b9
Убирает собственный контейнер db — вместо своего Postgres подключается внешней сетью (netrunner_grid, external: true) к netrunner-db из netrunner-backend/docker-compose.prod.yml, в отдельной базе/юзере (VW_DB_*, был DB_*). Экономит ресурсы на VPS, где раньше крутились бы два отдельных Postgres-процесса. Добавляет пошаговый ранбук переноса существующих данных со старого SQLite-инстанса (scripts/migrate-vaultwarden.md, через checkpoint WAL + pgloader data-only на уже созданную diesel-схему). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
65 lines
4.0 KiB
YAML
65 lines
4.0 KiB
YAML
# =====================================================================
|
||
# netrunner-data — сервисы хранения данных, вынесенные в отдельный от
|
||
# основного control-plane стек: сейчас только Vaultwarden (личный/командный
|
||
# менеджер паролей).
|
||
#
|
||
# Раньше Vaultwarden жил на проде голым файлом (~/vaultwarden-data/docker-compose.yml)
|
||
# без git/CI, с захардкоженными в файле секретами и на SQLite (./data/db.sqlite3).
|
||
# Здесь: секреты — только через .env (сам .env НЕ в git, см. .gitignore; на
|
||
# деплое собирается из GitHub Actions/Gitea Actions secrets, см.
|
||
# .github/workflows/deploy.yml), БД — Postgres вместо SQLite.
|
||
#
|
||
# ВАЖНО: своего Postgres-контейнера здесь больше нет — Vaultwarden делит один
|
||
# и тот же Postgres-процесс с netrunner-backend (сервис `db`/контейнер
|
||
# `netrunner-db` из netrunner-backend/docker-compose.prod.yml), просто в
|
||
# отдельной базе (vaultwarden) с собственным пользователем. Оба compose-стека
|
||
# должны быть подняты на одном VPS и слиты в общую внешнюю сеть
|
||
# `netrunner_grid` (см. миграцию в scripts/migrate-vaultwarden.md — там же и
|
||
# однократная команда CREATE DATABASE/CREATE USER на этом общем Postgres).
|
||
#
|
||
# ВАЖНО про переход со старого SQLite-инстанса: Vaultwarden сам не мигрирует
|
||
# данные из ./data/db.sqlite3 в Postgres при простой смене DATABASE_URL — это
|
||
# отдельная, аккуратная операция через pgloader (см. scripts/migrate-vaultwarden.md),
|
||
# а не просто "поднять новый сервис". Поднимать этот compose "как есть" поверх
|
||
# старых данных без миграции = Vaultwarden просто заведёт новую пустую БД в
|
||
# Postgres, старые данные останутся нетронутыми в ./data, но перестанут быть
|
||
# видны приложению.
|
||
# =====================================================================
|
||
services:
|
||
vaultwarden:
|
||
image: vaultwarden/server:latest
|
||
container_name: vaultwarden
|
||
restart: unless-stopped
|
||
environment:
|
||
- DOMAIN=${VAULTWARDEN_DOMAIN}
|
||
- SIGNUPS_ALLOWED=${VAULTWARDEN_SIGNUPS_ALLOWED:-false}
|
||
- ADMIN_TOKEN=${VAULTWARDEN_ADMIN_TOKEN}
|
||
- LOG_LEVEL=${VAULTWARDEN_LOG_LEVEL:-info}
|
||
- ROCKET_PORT=8081
|
||
- WEBSOCKET_ENABLED=true
|
||
# Общий Postgres-процесс с netrunner-backend (контейнер netrunner-db,
|
||
# см. шапку файла) — отдельная база и юзер, не переиспользуем DB_USER/
|
||
# DB_PASSWORD бэкенда.
|
||
- DATABASE_URL=postgresql://${VW_DB_USER}:${VW_DB_PASSWORD}@netrunner-db:5432/${VW_DB_NAME:-vaultwarden}
|
||
- SMTP_HOST=${SMTP_HOST}
|
||
- SMTP_FROM=${SMTP_FROM}
|
||
- SMTP_PORT=${SMTP_PORT:-465}
|
||
- SMTP_SECURITY=${SMTP_SECURITY:-force_tls}
|
||
- SMTP_USERNAME=${SMTP_USERNAME}
|
||
- SMTP_PASSWORD=${SMTP_PASSWORD}
|
||
volumes:
|
||
# Attachments/rsa-ключи по-прежнему на диске — Postgres тут только под
|
||
# структурированные данные (юзеры/сейфы/шифротексты записей), не под файлы.
|
||
- ./data:/data
|
||
ports:
|
||
- "127.0.0.1:8081:8081"
|
||
networks:
|
||
- netrunner_grid
|
||
|
||
networks:
|
||
# external: этот стек не поднимает Postgres сам — сеть уже создана
|
||
# netrunner-backend/docker-compose.prod.yml (там же живёт netrunner-db).
|
||
# Поднимать backend-стек первым.
|
||
netrunner_grid:
|
||
external: true
|