#!/usr/bin/env bash # Usage: # ./scripts/create-env.sh → creates .env (dev) # ./scripts/create-env.sh prod → creates .env.production set -euo pipefail TARGET="${1:-dev}" if [[ "$TARGET" == "prod" ]]; then FILE=".env.production" NODE_ENV="production" DB_HOST="postgres" SITE_URL="https://shumiland.com.ua" else FILE=".env" NODE_ENV="development" DB_HOST="localhost" SITE_URL="http://localhost:3000" fi ROOT="$(cd "$(dirname "$0")/.." && pwd)" OUT="$ROOT/$FILE" if [[ -f "$OUT" ]]; then echo "⚠️ $FILE already exists. Overwrite? [y/N]" read -r CONFIRM [[ "$CONFIRM" =~ ^[Yy]$ ]] || { echo "Aborted."; exit 0; } fi gen() { openssl rand -base64 32 | tr -d '=+/' | head -c 48; } POSTGRES_PASSWORD="$(gen)" PAYLOAD_SECRET="$(gen)" REVALIDATE_SECRET="$(gen)" SYNC_SECRET="$(gen)" CRON_SECRET="$(gen)" cat > "$OUT" << EOF # ─── Database ──────────────────────────────────────────────────────────────── DATABASE_URL=postgresql://shumiland:${POSTGRES_PASSWORD}@${DB_HOST}:5432/shumiland POSTGRES_PASSWORD=${POSTGRES_PASSWORD} # ─── Payload CMS ───────────────────────────────────────────────────────────── PAYLOAD_SECRET=${PAYLOAD_SECRET} # ─── Next.js ───────────────────────────────────────────────────────────────── NEXT_PUBLIC_SITE_URL=${SITE_URL} # ─── Node ──────────────────────────────────────────────────────────────────── NODE_ENV=${NODE_ENV} # ─── ezy.com.ua ────────────────────────────────────────────────────────────── EZY_PARTNER_KEY=DBBzR-vLcXd-PsQ8wf1oXkti8x0yTKCCUi2J69f8DClbXT EZY_ACTIVITY=fda5a0acfe1dad42867ea88dbe13008a10c391f2 # ─── Telegram ──────────────────────────────────────────────────────────────── TELEGRAM_BOT_TOKEN=8707306864:AAG1UpYFb39m7FVFh5Hkg6TBj-G8O9OSSQ4 TELEGRAM_CHAT_ID=5464970026 # ─── Resend ────────────────────────────────────────────────────────────────── RESEND_API_KEY=re_Y51MgfQN_NNj7jn9z1acWmPDtMSDjzzGr MANAGER_EMAILS=admin@ai-impress.com # ─── Binotel ───────────────────────────────────────────────────────────────── BINOTEL_HMAC_SECRET= # ─── Revalidation / Sync / Cron ────────────────────────────────────────────── REVALIDATE_SECRET=${REVALIDATE_SECRET} SYNC_SECRET=${SYNC_SECRET} CRON_SECRET=${CRON_SECRET} # ─── Certbot (prod only) ───────────────────────────────────────────────────── CERTBOT_DOMAIN=shumiland.com.ua CERTBOT_EMAIL=admin@ai-impress.com EOF echo "✅ Created $FILE" echo " POSTGRES_PASSWORD : ${POSTGRES_PASSWORD}" echo " PAYLOAD_SECRET : ${PAYLOAD_SECRET}" echo " REVALIDATE_SECRET : ${REVALIDATE_SECRET}" echo " SYNC_SECRET : ${SYNC_SECRET}" echo " CRON_SECRET : ${CRON_SECRET}" echo "" echo "⚠️ Fill in BINOTEL_HMAC_SECRET manually when available."