Postgres переезжает сюда физически — backend теперь на отдельном VPS

Раньше предполагалось, что backend и БД живут на одном хосте и делят
Docker-сеть — на деле backend будет на отдельном, ещё не арендованном
VPS, а Postgres стоит здесь же, рядом с Vaultwarden. Возвращает свой
контейнер `db` (общий для обеих баз — vaultwarden создаётся через
POSTGRES_USER/POSTGRES_DB, вторая, для backend, через новый
postgres/init-backend-db.sh), публикует 5432 наружу с hostssl+TLS
(postgres/pg_hba.conf, самоподписанный сертификат генерируется один раз
прямо в deploy.yml). Backup-джоба (pg_dump обеих баз) тоже переехала
сюда из netrunner-backend — дампить логичнее там, где физически лежат
данные.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-09 17:17:05 +07:00
parent 3b8c0aeebd
commit 9ca6df3dfc
7 changed files with 263 additions and 55 deletions
+25
View File
@@ -0,0 +1,25 @@
# Кастомный pg_hba.conf — заменяет дефолтный образа postgres:16-alpine.
# Нужен потому, что этот Postgres теперь принимает подключения ПО СЕТИ
# (backend живёт на отдельном, ещё не арендованном VPS, не в одном
# Docker-стеке с этой БД) — дефолтный pg_hba.conf официального образа этого
# не позволяет вообще (только localhost/docker-сеть).
#
# ВАЖНО: "0.0.0.0/0" ниже — временная заглушка, ПОКА не арендован и не
# известен IP VPS backend'а. Как только IP появится — заменить его на
# конкретный /32 этого IP и перезапустить контейнер (перечитывать pg_hba.conf
# можно без даунтайма: docker exec netrunner-db psql -U postgres -c "SELECT pg_reload_conf();").
# Держать 0.0.0.0/0 в проде дольше, чем нужно для первого запуска — плохая
# идея даже с hostssl+scram-sha-256+сильным паролем.
#
# hostssl (не host) — соединение без TLS с удалённого хоста будет отклонено
# ещё на этапе согласования, а не просто "разрешено, но не зашифровано".
local all all scram-sha-256
host all all 127.0.0.1/32 scram-sha-256
host all all ::1/128 scram-sha-256
# Vaultwarden и backup-джоба сидят в одной Docker-сети с этим контейнером —
# им closer-to-localhost доверие достаточно, TLS не обязателен (трафик не
# покидает хост).
host all all 172.16.0.0/12 scram-sha-256
# Удалённый backend (см. предупреждение выше — ЗАМЕНИТЬ 0.0.0.0/0 на /32 IP):
hostssl all all 0.0.0.0/0 scram-sha-256