mirror of
https://github.com/alexbelgium/hassio-addons.git
synced 2026-06-05 23:25:57 +02:00
Update 99-run.sh
This commit is contained in:
@@ -8,7 +8,7 @@ set -euo pipefail
|
|||||||
mkdir -p /config/ente/custom-logs
|
mkdir -p /config/ente/custom-logs
|
||||||
mkdir -p /config/data
|
mkdir -p /config/data
|
||||||
mkdir -p /config/minio-data
|
mkdir -p /config/minio-data
|
||||||
mkdir -p /config/postgres
|
mkdir -p /config/postgres-data
|
||||||
mkdir -p /config/scripts/compose
|
mkdir -p /config/scripts/compose
|
||||||
|
|
||||||
############################################
|
############################################
|
||||||
@@ -47,7 +47,8 @@ MC_BIN="/usr/local/bin/mc"
|
|||||||
MUSEUM_BIN="/usr/bin/museum"
|
MUSEUM_BIN="/usr/bin/museum"
|
||||||
WEB_BIN="/usr/bin/ente-web"
|
WEB_BIN="/usr/bin/ente-web"
|
||||||
|
|
||||||
PGDATA="/config/postgres"
|
# unify PGDATA
|
||||||
|
PGDATA="/config/postgres-data"
|
||||||
|
|
||||||
############################################
|
############################################
|
||||||
# Functions
|
# Functions
|
||||||
@@ -75,7 +76,6 @@ start_postgres() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
bashio::log.info "Starting Postgres (127.0.0.1:5432)..."
|
bashio::log.info "Starting Postgres (127.0.0.1:5432)..."
|
||||||
# background so startup can continue
|
|
||||||
su - postgres -c "$POSTGRES_BIN -D $PGDATA -c listen_addresses='127.0.0.1'" &
|
su - postgres -c "$POSTGRES_BIN -D $PGDATA -c listen_addresses='127.0.0.1'" &
|
||||||
PG_PID=$!
|
PG_PID=$!
|
||||||
}
|
}
|
||||||
@@ -90,8 +90,7 @@ wait_postgres_ready() {
|
|||||||
else
|
else
|
||||||
host="$DB_HOST_INTERNAL"
|
host="$DB_HOST_INTERNAL"
|
||||||
port="$DB_PORT_INTERNAL"
|
port="$DB_PORT_INTERNAL"
|
||||||
# Use superuser 'postgres' for readiness check because DB_USER may not yet exist.
|
user="postgres" # cluster superuser for initial readiness
|
||||||
user="postgres"
|
|
||||||
bashio::log.info "Waiting for internal Postgres..."
|
bashio::log.info "Waiting for internal Postgres..."
|
||||||
fi
|
fi
|
||||||
until pg_isready -q -h "$host" -p "$port" -U "$user"; do
|
until pg_isready -q -h "$host" -p "$port" -U "$user"; do
|
||||||
@@ -104,21 +103,25 @@ bootstrap_internal_db() {
|
|||||||
if $USE_EXTERNAL_DB; then
|
if $USE_EXTERNAL_DB; then
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
bashio::log.info "Creating role/database if needed..."
|
|
||||||
|
|
||||||
# Use psql via local socket (faster, avoids password)
|
# Escape single quotes in password for SQL
|
||||||
psql -v ON_ERROR_STOP=1 -h "$DB_HOST_INTERNAL" -p "$DB_PORT_INTERNAL" -U postgres <<SQL
|
local esc_pass="${DB_PASS//\'/\'\'}"
|
||||||
DO \$\$
|
|
||||||
BEGIN
|
bashio::log.info "Ensuring role ${DB_USER} exists..."
|
||||||
IF NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = '${DB_USER}') THEN
|
if ! su - postgres -c "psql -Atqc \"SELECT 1 FROM pg_roles WHERE rolname='${DB_USER}'\" postgres" | grep -q 1; then
|
||||||
EXECUTE 'CREATE ROLE ${DB_USER} LOGIN PASSWORD ''' || replace('${DB_PASS}','''','''''') || '''';
|
su - postgres -c "psql -v ON_ERROR_STOP=1 -c \"CREATE ROLE \\\"${DB_USER}\\\" LOGIN PASSWORD '${esc_pass}'\" postgres"
|
||||||
END IF;
|
else
|
||||||
IF NOT EXISTS (SELECT 1 FROM pg_database WHERE datname = '${DB_NAME}') THEN
|
# update password in case it changed
|
||||||
EXECUTE 'CREATE DATABASE ${DB_NAME} OWNER ${DB_USER}';
|
su - postgres -c "psql -v ON_ERROR_STOP=1 -c \"ALTER ROLE \\\"${DB_USER}\\\" PASSWORD '${esc_pass}'\" postgres"
|
||||||
END IF;
|
fi
|
||||||
END
|
|
||||||
\$\$;
|
bashio::log.info "Ensuring database ${DB_NAME} exists (owner ${DB_USER})..."
|
||||||
SQL
|
if ! su - postgres -c "psql -Atqc \"SELECT 1 FROM pg_database WHERE datname='${DB_NAME}'\" postgres" | grep -q 1; then
|
||||||
|
su - postgres -c "createdb -O \"${DB_USER}\" \"${DB_NAME}\""
|
||||||
|
else
|
||||||
|
# make sure owner is correct
|
||||||
|
su - postgres -c "psql -v ON_ERROR_STOP=1 -c \"ALTER DATABASE \\\"${DB_NAME}\\\" OWNER TO \\\"${DB_USER}\\\"\" postgres"
|
||||||
|
fi
|
||||||
|
|
||||||
bashio::log.info "Internal Postgres ready."
|
bashio::log.info "Internal Postgres ready."
|
||||||
}
|
}
|
||||||
@@ -157,9 +160,9 @@ start_museum_foreground() {
|
|||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# For internal DB: wait one more time as DB_USER (ensures role exists)
|
# If internal DB, verify DB_USER can connect (role creation just happened)
|
||||||
if ! $USE_EXTERNAL_DB; then
|
if ! $USE_EXTERNAL_DB; then
|
||||||
bashio::log.info "Verifying internal DB user '${DB_USER}'..."
|
bashio::log.info "Verifying internal DB user '${DB_USER}' connectivity..."
|
||||||
until pg_isready -q -h "$DB_HOST_INTERNAL" -p "$DB_PORT_INTERNAL" -U "$DB_USER"; do
|
until pg_isready -q -h "$DB_HOST_INTERNAL" -p "$DB_PORT_INTERNAL" -U "$DB_USER"; do
|
||||||
sleep 1
|
sleep 1
|
||||||
done
|
done
|
||||||
@@ -183,5 +186,5 @@ wait_minio_ready_and_bucket
|
|||||||
|
|
||||||
start_web
|
start_web
|
||||||
|
|
||||||
# Last: foreground museum keeps container alive
|
# foreground: keeps container alive
|
||||||
start_museum_foreground
|
start_museum_foreground
|
||||||
|
|||||||
Reference in New Issue
Block a user