#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "${SCRIPT_DIR}/functions.sh" resolve_paths require_env require_docker resolve_volume_path mkdir -p "${VOLUME_PATH}/synapse" "${VOLUME_PATH}/mas" "${VOLUME_PATH}/postgres" "${VOLUME_PATH}/proxy" if [[ "${WORKER_COUNT}" -gt 0 ]]; then mkdir -p "${VOLUME_PATH}/webapp" fi log_info "Initializing PostgreSQL..." docker compose -f "$COMPOSE_FILE" --env-file "$ENV_FILE" up -d --wait matrix-db # Wait for database readiness (silent except on failure) for ATTEMPT in $(seq 1 30); do if docker compose -f "$COMPOSE_FILE" exec -T matrix-db psql -U "$PG_USER" -c "SELECT 1;" > /dev/null 2>&1; then break fi [[ $ATTEMPT -eq 30 ]] && { log_error "Database timeout"; exit 1; } sleep 2 done # Database initialization SQL INIT_SQL=$(cat < "${VOLUME_PATH}/mas/config.yaml" fix_ownership "${VOLUME_PATH}/mas" log_info "Configuration complete"