34 lines
1.1 KiB
Bash
34 lines
1.1 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
if [[ "$(id -u)" -ne 0 ]]; then
|
|
echo "run as root" >&2
|
|
exit 1
|
|
fi
|
|
|
|
db_name="kaotings_cms"
|
|
db_role="kaotings_cms"
|
|
db_password="$(openssl rand -hex 32)"
|
|
payload_secret="$(openssl rand -hex 48)"
|
|
|
|
if runuser -u postgres -- psql -tAc "SELECT 1 FROM pg_roles WHERE rolname='${db_role}'" | grep -q 1; then
|
|
printf "ALTER ROLE %s PASSWORD '%s';\n" "$db_role" "$db_password" | runuser -u postgres -- psql -v ON_ERROR_STOP=1 >/dev/null
|
|
else
|
|
printf "CREATE ROLE %s LOGIN PASSWORD '%s';\n" "$db_role" "$db_password" | runuser -u postgres -- psql -v ON_ERROR_STOP=1 >/dev/null
|
|
fi
|
|
|
|
if ! runuser -u postgres -- psql -tAc "SELECT 1 FROM pg_database WHERE datname='${db_name}'" | grep -q 1; then
|
|
runuser -u postgres -- createdb -O "$db_role" "$db_name"
|
|
fi
|
|
|
|
install -d -m 700 /etc/kaotings
|
|
umask 077
|
|
cat > /etc/kaotings/cms.env <<EOF
|
|
DATABASE_URI=postgresql://${db_role}:${db_password}@127.0.0.1:5432/${db_name}
|
|
PAYLOAD_SECRET=${payload_secret}
|
|
NEXT_PUBLIC_SERVER_URL=https://192.168.199.22
|
|
NODE_ENV=production
|
|
EOF
|
|
chmod 600 /etc/kaotings/cms.env
|
|
echo "CMS database and environment provisioned"
|