initial COM2 system snapshot
This commit is contained in:
76
COM2_FIX_POSTGRES_ADMIN_ONE_SHOT.sh
Executable file
76
COM2_FIX_POSTGRES_ADMIN_ONE_SHOT.sh
Executable file
@@ -0,0 +1,76 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
C="hxki-postgres"
|
||||
|
||||
echo "=== FIX POSTGRES ADMIN (one-shot) ==="
|
||||
docker inspect "$C" >/dev/null 2>&1 || { echo "FEHLT: $C"; exit 1; }
|
||||
|
||||
IMG="$(docker inspect "$C" --format '{{.Config.Image}}')"
|
||||
echo "[0] Image: $IMG"
|
||||
|
||||
# Admin-User/PW/DB aus ENV lesen (Autorität: Container selbst)
|
||||
get_env() {
|
||||
local key="$1"
|
||||
docker inspect "$C" --format '{{range .Config.Env}}{{println .}}{{end}}' \
|
||||
| awk -F= -v k="$key" '$1==k{print substr($0, index($0,"=")+1)}' | head -n1
|
||||
}
|
||||
|
||||
ADMIN_USER="$(get_env POSTGRES_USER || true)"
|
||||
ADMIN_PW="$(get_env POSTGRES_PASSWORD || true)"
|
||||
ADMIN_DB="$(get_env POSTGRES_DB || true)"
|
||||
|
||||
# Bitnami-Fallbacks
|
||||
[ -n "${ADMIN_USER:-}" ] || ADMIN_USER="$(get_env POSTGRESQL_USERNAME || true)"
|
||||
[ -n "${ADMIN_PW:-}" ] || ADMIN_PW="$(get_env POSTGRESQL_PASSWORD || true)"
|
||||
[ -n "${ADMIN_DB:-}" ] || ADMIN_DB="$(get_env POSTGRESQL_DATABASE || true)"
|
||||
|
||||
# Default-DB-Fallback
|
||||
[ -n "${ADMIN_DB:-}" ] || ADMIN_DB="postgres"
|
||||
|
||||
echo "[1] Detected ADMIN_USER=${ADMIN_USER:-<leer>} ADMIN_DB=${ADMIN_DB:-<leer>}"
|
||||
[ -n "${ADMIN_USER:-}" ] || { echo "FAIL: Konnte ADMIN_USER nicht aus Container ENV lesen."; exit 1; }
|
||||
[ -n "${ADMIN_PW:-}" ] || { echo "FAIL: Konnte ADMIN_PW nicht aus Container ENV lesen."; exit 1; }
|
||||
|
||||
# Zielwerte für n8n (aus n8n-Container-ENV – Autorität!)
|
||||
N8N="hxki-n8n"
|
||||
docker inspect "$N8N" >/dev/null 2>&1 || { echo "FEHLT: $N8N"; exit 1; }
|
||||
|
||||
get_env_n8n() {
|
||||
local key="$1"
|
||||
docker inspect "$N8N" --format '{{range .Config.Env}}{{println .}}{{end}}' \
|
||||
| awk -F= -v k="$key" '$1==k{print substr($0, index($0,"=")+1)}' | head -n1
|
||||
}
|
||||
|
||||
PG_USER="$(get_env_n8n DB_POSTGRESDB_USER || true)"
|
||||
PG_PW="$(get_env_n8n DB_POSTGRESDB_PASSWORD || true)"
|
||||
PG_DB="$(get_env_n8n DB_POSTGRESDB_DATABASE || true)"
|
||||
|
||||
[ -n "${PG_USER:-}" ] || { echo "FAIL: n8n ENV fehlt DB_POSTGRESDB_USER"; exit 1; }
|
||||
[ -n "${PG_PW:-}" ] || { echo "FAIL: n8n ENV fehlt DB_POSTGRESDB_PASSWORD"; exit 1; }
|
||||
[ -n "${PG_DB:-}" ] || { echo "FAIL: n8n ENV fehlt DB_POSTGRESDB_DATABASE"; exit 1; }
|
||||
|
||||
echo "[2] Target (für n8n): user=$PG_USER db=$PG_DB"
|
||||
|
||||
echo "[3] Apply in Postgres (create/alter role + create db)"
|
||||
docker exec -i "$C" sh -lc "export PGPASSWORD='${ADMIN_PW}'; psql -v ON_ERROR_STOP=1 -U '${ADMIN_USER}' -d '${ADMIN_DB}'" <<SQL
|
||||
DO \$\$
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname='${PG_USER}') THEN
|
||||
CREATE ROLE ${PG_USER} LOGIN PASSWORD '${PG_PW}';
|
||||
ELSE
|
||||
ALTER ROLE ${PG_USER} WITH LOGIN PASSWORD '${PG_PW}';
|
||||
END IF;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM pg_database WHERE datname='${PG_DB}') THEN
|
||||
CREATE DATABASE ${PG_DB} OWNER ${PG_USER};
|
||||
END IF;
|
||||
END
|
||||
\$\$;
|
||||
GRANT ALL PRIVILEGES ON DATABASE ${PG_DB} TO ${PG_USER};
|
||||
SQL
|
||||
|
||||
echo "[4] Quick check: kann sich n8n-user anmelden?"
|
||||
docker exec -i "$C" sh -lc "export PGPASSWORD='${PG_PW}'; psql -v ON_ERROR_STOP=1 -U '${PG_USER}' -d '${PG_DB}' -c 'select 1;' >/dev/null"
|
||||
echo "OK: Postgres Credentials passen jetzt für n8n."
|
||||
echo "=== ENDE ==="
|
||||
Reference in New Issue
Block a user