Files
netrunner-data/docker-compose.yml
T
nineap 049d38a2b9 Vaultwarden делит один Postgres-процесс с netrunner-backend
Убирает собственный контейнер 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>
2026-07-09 16:37:48 +07:00

65 lines
4.0 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# =====================================================================
# 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