This commit is contained in:
2025-12-26 20:54:20 +01:00
parent 904feb41b8
commit 6389be4f0c
26 changed files with 745 additions and 195 deletions

View File

@@ -1,55 +1,78 @@
# ==========================================
# GridPilot Production Environment
# ==========================================
# Used by `docker-compose.prod.yml` via `env_file: .env.production`.
#
# Security:
# - Do NOT commit real secrets (use a secret manager / CI vars).
# - Replace all `CHANGE_ME_...` values before deploying.
# Node Environment
# ------------------------------------------
# Runtime
# ------------------------------------------
NODE_ENV=production
NEXT_TELEMETRY_DISABLED=1
# ==========================================
# Database (PostgreSQL)
# ==========================================
# IMPORTANT: Change these credentials in production!
# ------------------------------------------
# API (NestJS)
# ------------------------------------------
# Controls whether the API uses Postgres or runs in-memory.
# Values: `postgres` | `inmemory`
GRIDPILOT_API_PERSISTENCE=postgres
# Optional: bootstrap demo data (default: true)
# GRIDPILOT_API_BOOTSTRAP=true
# Database connection for the API (preferred: single URL)
DATABASE_URL=postgres://gridpilot_user:CHANGE_ME_IN_PRODUCTION@db:5432/gridpilot_prod
# Postgres container vars (used by `docker-compose.prod.yml` -> `db` service)
POSTGRES_DB=gridpilot_prod
POSTGRES_USER=gridpilot_user
POSTGRES_PASSWORD=CHANGE_ME_IN_PRODUCTION
# ==========================================
# Redis Cache
# ==========================================
# IMPORTANT: Change password in production!
REDIS_URL=redis://:CHANGE_ME_IN_PRODUCTION@redis:6379
# ------------------------------------------
# Redis container vars (used by `docker-compose.prod.yml` -> `redis` service)
# ------------------------------------------
REDIS_PASSWORD=CHANGE_ME_IN_PRODUCTION
REDIS_HOST=redis
REDIS_PORT=6379
# ==========================================
# API Configuration
# ==========================================
API_PORT=3000
API_HOST=0.0.0.0
# ==========================================
# Website Configuration
# ==========================================
# ------------------------------------------
# Website (Next.js) - public (exposed to browser)
# ------------------------------------------
NEXT_PUBLIC_GRIDPILOT_MODE=alpha
NEXT_PUBLIC_SITE_URL=http://localhost:80
NEXT_PUBLIC_API_URL=http://localhost:80/api
NEXT_PUBLIC_SITE_URL=https://your-domain.com
# Browser → API base URL.
# If nginx proxies `/api` to the API service, this is typically:
# https://your-domain.com/api
NEXT_PUBLIC_API_BASE_URL=https://your-domain.com/api
# Optional links / metadata (defaults used when unset)
NEXT_PUBLIC_DISCORD_URL=https://discord.gg/your-invite-code
NEXT_TELEMETRY_DISABLED=1
NEXT_PUBLIC_X_URL=https://x.com/your-handle
# NEXT_PUBLIC_SITE_NAME=GridPilot
# NEXT_PUBLIC_SUPPORT_EMAIL=support@your-domain.com
# NEXT_PUBLIC_SPONSOR_EMAIL=sponsors@your-domain.com
# NEXT_PUBLIC_LEGAL_COMPANY_NAME=Your Company GmbH
# NEXT_PUBLIC_LEGAL_VAT_ID=DE123456789
# NEXT_PUBLIC_LEGAL_REGISTERED_COUNTRY=DE
# NEXT_PUBLIC_LEGAL_REGISTERED_ADDRESS=Street 1, 12345 City
# ==========================================
# Vercel KV (REQUIRED in Production)
# ==========================================
# For local testing, these can be left as placeholders
# In production, get these from: https://vercel.com/dashboard -> Storage -> KV
KV_REST_API_URL=https://placeholder-kv.vercel-storage.com
KV_REST_API_TOKEN=placeholder_kv_token
# ------------------------------------------
# Website (Next.js) - server (NOT exposed to browser)
# ------------------------------------------
# SSR/server-to-server base URL inside Docker network
API_BASE_URL=http://api:3000
# ==========================================
# Automation Mode
# ==========================================
AUTOMATION_MODE=production
# Vercel KV (required for email signup storage/rate limit in production)
KV_REST_API_URL=https://your-kv-rest-api-url.vercel-storage.com
KV_REST_API_TOKEN=CHANGE_ME_IN_PRODUCTION
# ------------------------------------------
# Automation / Companion (advanced)
# ------------------------------------------
# NOTE: `AUTOMATION_MODE` is deprecated (see `getAutomationMode()` in adapters).
# AUTOMATION_MODE=production
AUTOMATION_TIMEOUT=30000
RETRY_ATTEMPTS=3
SCREENSHOT_ON_ERROR=false