www_site/infra/scripts/provision-phase2-db.sh

46 lines
1.4 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"
db_role="kaotings_app"
db_password="$(openssl rand -hex 32)"
csrf_secret="$(openssl rand -hex 32)"
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/api.env <<EOF
DATABASE_URL=postgresql://${db_role}:${db_password}@127.0.0.1:5432/${db_name}
APP_ENV=test
ALLOWED_ORIGINS=https://192.168.199.22,http://192.168.199.22:3000
SESSION_COOKIE_NAME=kaotings_session
SESSION_COOKIE_SECURE=true
SESSION_TTL_SECONDS=2592000
CSRF_SECRET=${csrf_secret}
EMAIL_VERIFICATION_ENABLED=false
PHONE_VERIFICATION_ENABLED=false
TEST_FREE_PERIOD_LIMIT=10000
TEST_VIP_PERIOD_LIMIT=100000
TTS_UPSTREAM_URL=
TTS_API_KEY=
TTS_TIMEOUT_SECONDS=120
AUDIO_STORAGE_DIR=/home/flym/kaotings-audio
AUDIO_RETENTION_SECONDS=604800
EOF
chmod 600 /etc/kaotings/api.env
echo "database and API environment provisioned"