# ===================================================================== # 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