feat(matrix): better postgres init

krasovs.ky db84a122 30d00723

verified
Changed files
+29 -4
configs
containers
matrix
+2 -3
configs/containers/systemd/matrix/matrix-postgres.container.tftpl
···
User=1000:1000
-
Environment=POSTGRES_USER=synapse
-
Environment=POSTGRES_DB=synapse
Environment=POSTGRES_INITDB_ARGS="--encoding=UTF-8 --lc-collate=C --lc-ctype=C"
-
Secret=synapse-postgres-password,type=env,target=POSTGRES_PASSWORD
+
Secret=matrix-postgres-password,type=env,target=POSTGRES_PASSWORD
Label="glance.parent=matrix"
Label="glance.name=Postgres"
···
HealthCmd=pg_isready --dbname="$$${POSTGRES_DB}" --username="$$${POSTGRES_USER}" || exit 1;
HealthStartupInterval=5s
+
Volume=%E/matrix/init-db.sh:/docker-entrypoint-initdb.d/init-db.sh:Z
Volume=/var/mnt/docker/app_data/matrix/postgres:/var/lib/postgresql/data:Z
Pod=matrix.pod
+20
configs/matrix/init-db.sh
···
+
#!/usr/bin/env bash
+
set -e
+
+
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
+
CREATE USER synapse WITH PASSWORD '${secrets.synapse_postgres_password}';
+
CREATE DATABASE synapse;
+
GRANT ALL PRIVILEGES ON DATABASE synapse TO synapse;
+
+
CREATE USER mas WITH PASSWORD '${secrets.matrix_authentication_service_postgres_password}';
+
CREATE DATABASE mas;
+
GRANT ALL PRIVILEGES ON DATABASE mas TO mas;
+
EOSQL
+
+
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname synapse <<-EOSQL
+
GRANT ALL ON SCHEMA public TO synapse;
+
EOSQL
+
+
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname mas <<-EOSQL
+
GRANT ALL ON SCHEMA public TO mas;
+
EOSQL
+1 -1
configs/matrix/mas.yaml.tftpl
···
- ::1/128
database:
-
uri: "postgresql://synapse:${secrets.synapse_postgres_password}@matrix-postgres/mas"
+
uri: "postgresql://mas:${secrets.matrix_authentication_service_postgres_password}@matrix-postgres/mas"
max_connections: 10
min_connections: 0
connect_timeout: 30
+4
fcos.tf
···
data "bitwarden_secret" "synapse_oidc_client_secret" {
id = var.containers_secret_config.synapse_oidc_client_secret
}
+
data "bitwarden_secret" "matrix_authentication_service_postgres_password" {
+
id = var.containers_secret_config.matrix_authentication_service_postgres_password
+
}
data "bitwarden_secret" "matrix_authentication_service_secret" {
id = var.containers_secret_config.matrix_authentication_service_secret
}
···
synapse_macaroon_secret_key : data.bitwarden_secret.synapse_macaroon_secret_key.value
synapse_form_secret : data.bitwarden_secret.synapse_form_secret.value
synapse_oidc_client_secret : data.bitwarden_secret.synapse_oidc_client_secret.value
+
matrix_authentication_service_postgres_password : data.bitwarden_secret.matrix_authentication_service_postgres_password.value
matrix_authentication_service_secret : data.bitwarden_secret.matrix_authentication_service_secret.value
matrix_authentication_service_secrets_encryption : data.bitwarden_secret.matrix_authentication_service_secrets_encryption.value
matrix_authentication_service_secrets_rsa_key : data.bitwarden_secret.matrix_authentication_service_secrets_rsa_key.value
+2
variables.tf
···
simplex_xftp_pass = "c6feec9d-2622-4322-acbf-b338013f79e9"
tuwunel_registration_token = "92e470e2-c88e-43d3-ae0c-b3570039c4c9"
coturn_turn_shared_secret = "5b69585c-03e8-454f-94e0-b357000002d4"
+
matrix_postgres_password = "d2ea9e75-f3bc-4e3d-a07c-b37b0147a20a"
synapse_postgres_password = "2209bd8d-f6a7-43e0-afa8-b37a00bbfd2c"
synapse_registration_shared_secret = "9dab9863-5dac-4748-a1fc-b37a0145f7f1"
synapse_macaroon_secret_key = "cfa20ae3-8103-46be-a129-b37a014627aa"
···
synapse_oidc_client_secret = "6e0f179f-631c-480c-b9ec-b37a0146e95c"
matrix_rtc_livekit_key = "5c336187-6139-413b-bbf1-b37a01588b03"
matrix_rtc_livekit_secret = "a24e0995-d297-4c23-849f-b37a0158a5d4"
+
matrix_authentication_service_postgres_password = "d2ea9e75-f3bc-4e3d-a07c-b37b0147a20a"
matrix_authentication_service_secret = "bcaa7f79-c9fc-4448-9c79-b37a016954f5"
matrix_authentication_service_secrets_encryption = "012d8da3-3f7c-471a-b9cb-b37b0001dc1b"
matrix_authentication_service_secrets_rsa_key = "c2c1d0d3-1c80-4c36-961e-b37b000049ca"