#!/usr/bin/env bash # PANELS · genera secretos de UN ambiente y, si hay superusuario, crea # roles/bases/ACLs. No crea el servidor Postgres, Redis ni el bucket: # esos se levantan en Coolify / Contabo; este script solo deja los accesos. # # Uso (solo imprimir bloque .env, sin tocar servidores): # PGHOST=pg.interno REDIS_HOST=redis.interno S3_BUCKET=panels-prod \ # ./db/provision/create-accesses.sh # # Uso (crear roles en un Postgres/Redis ya levantados): # PGHOST=... PGUSER=postgres PGPASSWORD=... REDIS_ADMIN_URL=redis://:...@host:6379 \ # ./db/provision/create-accesses.sh --apply --verify # # Flags: # --apply corre 01-04 SQL + 05 Redis ACL con las claves generadas # --verify corre verify-connectivity.sh al final (implica tener URLs) # --out FILE escribe el bloque .env (FILE debe estar gitignored, ej. .env.prod.local) set -euo pipefail HERE="$(cd "$(dirname "$0")" && pwd)" APPLY=0 VERIFY=0 OUT="" while [[ $# -gt 0 ]]; do case "$1" in --apply) APPLY=1; shift ;; --verify) VERIFY=1; shift ;; --out) OUT="$2"; shift 2 ;; -h|--help) sed -n '2,20p' "$0"; exit 0 ;; *) echo "Flag desconocido: $1" >&2; exit 1 ;; esac done rand24() { openssl rand -hex 24; } rand32() { openssl rand -hex 32; } PGHOST="${PGHOST:-127.0.0.1}" PGPORT="${PGPORT:-5432}" REDIS_HOST="${REDIS_HOST:-127.0.0.1}" REDIS_PORT="${REDIS_PORT:-6379}" PGUSER="${PGUSER:-postgres}" PLATFORM_OWNER_PASSWORD="${PLATFORM_OWNER_PASSWORD:-$(rand24)}" PLATFORM_APP_PASSWORD="${PLATFORM_APP_PASSWORD:-$(rand24)}" IAM_OWNER_PASSWORD="${IAM_OWNER_PASSWORD:-$(rand24)}" IAM_APP_PASSWORD="${IAM_APP_PASSWORD:-$(rand24)}" CORE_OWNER_PASSWORD="${CORE_OWNER_PASSWORD:-$(rand24)}" CORE_APP_PASSWORD="${CORE_APP_PASSWORD:-$(rand24)}" IAM_REDIS_PASSWORD="${IAM_REDIS_PASSWORD:-$(rand24)}" CORE_REDIS_PASSWORD="${CORE_REDIS_PASSWORD:-$(rand24)}" SESSION_SECRET="${SESSION_SECRET:-$(rand32)}" DOCS_KEY="${DOCS_KEY:-$(rand32)}" block() { cat < "$OUT" echo "Escrito $OUT (permisos 600). No lo subas a git." >&2 fi if [[ "$VERIFY" == "1" ]]; then echo "== Verificando conectividad ==" >&2 tmp="$(mktemp)" umask 077 printf '%s\n' "$ENV_TEXT" > "$tmp" set -a # shellcheck disable=SC1090 source "$tmp" set +a rm -f "$tmp" "$HERE/verify-connectivity.sh" fi