# STORAGE REDIS_URL="redis://127.0.0.1:6379" DATABASE_URL="postgresql://postgres:postgres@localhost:5432/postgres?schema=public" DATABASE_URL_DIRECT="$DATABASE_URL" CLICKHOUSE_URL="http://localhost:8123/openpanel" # Symmetric key for all at-rest encryption: TOTP secrets, GSC tokens, and # object-store export credentials (S3 secret keys, GCS service-account keys). # Generate with: openssl rand -hex 32 ENCRYPTION_KEY="" # OBJECT-STORE EXPORT (S3/GCS) tuning — optional, sensible defaults shown. # The flushExports cron job windows ClickHouse by inserted_at and uploads # batched files. LAG keeps a safety gap behind now() for in-flight inserts; # BATCH_SIZE is rows per file; MAX_BATCHES_PER_RUN bounds backlog drain per # tick; CONCURRENCY is parallel (project,integration) uploads. # EXPORT_LAG_SECONDS="60" # EXPORT_BATCH_SIZE="50000" # EXPORT_MAX_BATCHES_PER_RUN="20" # EXPORT_CONCURRENCY="4" # REST BATCH_SIZE="5000" BATCH_INTERVAL="10000" CONCURRENCY="10" NEXT_PUBLIC_DASHBOARD_URL="http://localhost:3000" NEXT_PUBLIC_API_URL="http://localhost:3333" WORKER_PORT=9999 API_PORT=3333 # REDPANDA (optional, runs in parallel with the groupmq events queue) # Empty REDPANDA_BROKERS disables both producer and consumer; everything # falls back to groupmq. Set REDPANDA_PROJECT_IDS=* to route all projects, # or a comma-separated allow-list to route specific ones. # REDPANDA_BROKERS="" # REDPANDA_EVENTS_TOPIC="events" # REDPANDA_CONSUMER_GROUP="openpanel-events" # REDPANDA_PROJECT_IDS="" # REDPANDA_PARTITIONS_CONCURRENT="8" # Local dev with docker-compose: # REDPANDA_BROKERS="localhost:19092" # REDPANDA_PROJECT_IDS="*" # EMAIL - set one or both; SMTP takes priority over Resend if SMTP_HOST is set # Option A - Resend # RESEND_API_KEY="" # EMAIL_SENDER="hello@openpanel.dev" # Option B - SMTP (used first when SMTP_HOST is present, even if RESEND_API_KEY is also set) # SMTP_HOST="" # SMTP_PORT="587" # SMTP_SECURE="false" # SMTP_USER="" # SMTP_PASS="" # EMAIL_SENDER="hello@openpanel.dev"