Shumiland/scripts/create-env.sh
Vadym Samoilenko d14d7a2cb3
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
chore: add create-env.sh script for dev/prod env generation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-09 19:27:17 +01:00

83 lines
3.9 KiB
Bash
Executable file

#!/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."