#!/usr/bin/env bash set -euo pipefail COMPOSE="/opt/hx-ki/com2-stack/docker-compose.yml" ENVF="/opt/hx-ki/com2-stack/.env" MY="hxki-mariadb" MA="hxki-mautic" CA="hx-caddy" echo "=== COM2 ยท MAUTIC FIX (run on server only) ===" [ -f "$COMPOSE" ] || { echo "FAIL: missing $COMPOSE"; exit 1; } [ -f "$ENVF" ] || { echo "FAIL: missing $ENVF"; exit 1; } # load .env (simple KEY=VALUE) set -a . "$ENVF" set +a # bring up mariadb first docker compose -f "$COMPOSE" up -d "$MY" # root pw from .env or container env ROOTPW="${MARIADB_ROOT_PASSWORD-${MYSQL_ROOT_PASSWORD-}}" if [ -z "${ROOTPW:-}" ]; then ROOTPW="$(docker inspect "$MY" --format '{{range .Config.Env}}{{println .}}{{end}}' \ | awk -F= '/^(MARIADB_ROOT_PASSWORD|MYSQL_ROOT_PASSWORD)=/{print $2}' | tail -n1 || true)" fi [ -n "${ROOTPW:-}" ] || { echo "FAIL: cannot determine MariaDB root password"; exit 1; } # mautic creds STRICTLY from .env (must exist) DB_NAME="${MAUTIC_DB_NAME-${MYSQL_DATABASE-mautic}}" DB_USER="${MAUTIC_DB_USER-${MYSQL_USER-mautic}}" DB_PASS="${MAUTIC_DB_PASSWORD-${MYSQL_PASSWORD-}}" [ -n "${DB_USER:-}" ] || { echo "FAIL: MAUTIC_DB_USER or MYSQL_USER missing in .env"; exit 1; } [ -n "${DB_PASS:-}" ] || { echo "FAIL: MAUTIC_DB_PASSWORD or MYSQL_PASSWORD missing in .env"; exit 1; } echo "DB_NAME=$DB_NAME" echo "DB_USER=$DB_USER" echo "DB_PASS=***" # wait mariadb ready for i in {1..40}; do if docker exec -i "$MY" sh -lc "mariadb -uroot -p\"$ROOTPW\" -e 'SELECT 1' >/dev/null 2>&1"; then echo "OK: MariaDB ready" break fi sleep 1 [ "$i" -eq 40 ] && { echo "FAIL: MariaDB not ready"; exit 1; } done # align user/db/grants (no data loss) docker exec -i "$MY" sh -lc "mariadb -uroot -p\"$ROOTPW\" < MAUTIC CHECK ===" if docker exec -i "$CA" sh -lc "wget -qO- http://$MA/ >/dev/null"; then echo "OK_CADDY_TO_MAUTIC" else echo "FAIL_CADDY_TO_MAUTIC" echo "--- mautic logs (tail 120) ---" docker logs --tail=120 "$MA" || true exit 1 fi