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:
Executable
+12
@@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
# Выполняется автоматически postgres-образом ОДИН РАЗ — только когда volume
|
||||
# ещё пуст (первая инициализация кластера). POSTGRES_USER/POSTGRES_DB
|
||||
# (заданные в environment сервиса db) создают только базу Vaultwarden — этот
|
||||
# скрипт создаёт ВТОРУЮ базу+роль для netrunner-backend на этом же
|
||||
# Postgres-процессе, раз он теперь общий на обоих потребителей.
|
||||
set -e
|
||||
|
||||
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
|
||||
CREATE ROLE ${BACKEND_DB_USER} WITH LOGIN PASSWORD '${BACKEND_DB_PASSWORD}';
|
||||
CREATE DATABASE ${BACKEND_DB_NAME} OWNER ${BACKEND_DB_USER};
|
||||
EOSQL
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user