initial COM2 system snapshot
This commit is contained in:
77
COM2_MAUTIC_FIX_RUN_ON_SERVER_ONE_SHOT.sh
Executable file
77
COM2_MAUTIC_FIX_RUN_ON_SERVER_ONE_SHOT.sh
Executable file
@@ -0,0 +1,77 @@
|
||||
#!/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\" <<SQL
|
||||
CREATE DATABASE IF NOT EXISTS \\\`$DB_NAME\\\`;
|
||||
CREATE USER IF NOT EXISTS '$DB_USER'@'%' IDENTIFIED BY '$DB_PASS';
|
||||
ALTER USER '$DB_USER'@'%' IDENTIFIED BY '$DB_PASS';
|
||||
GRANT ALL PRIVILEGES ON \\\`$DB_NAME\\\`.* TO '$DB_USER'@'%';
|
||||
FLUSH PRIVILEGES;
|
||||
SQL"
|
||||
|
||||
echo "OK: grants aligned"
|
||||
|
||||
# restart mautic and caddy (if present in compose)
|
||||
docker compose -f "$COMPOSE" up -d --force-recreate "$MA" "$CA" || true
|
||||
|
||||
echo "=== STATUS ==="
|
||||
docker ps --format 'NAME={{.Names}} STATUS={{.Status}} PORTS={{.Ports}}' | egrep 'hxki-|hx-caddy' || true
|
||||
|
||||
echo "=== CADDY -> 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
|
||||
Reference in New Issue
Block a user