Brings the dev template into parity with the env vars wiki for variables a developer might toggle locally: - PORT (in Environment & Security) - PLUNK_FROM_ADDRESS (in Plunk API) - New sections: Notifications (NTFY_URL), Attachments, User Management (DISABLE_SIGNUPS, VERIFY_EMAIL_ON_SIGNUP), Phishing Detection All additions are commented so default local behaviour is unchanged. Vars that only make sense in the bundled Docker stack (SMTP relay ports, Minio internals, NEXT_PUBLIC_*, NGINX_PORT) are intentionally omitted. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
135 lines
6.3 KiB
Bash
135 lines
6.3 KiB
Bash
# ==============================================================================
|
|
# Development Environment Configuration
|
|
# ==============================================================================
|
|
# This is for local development. For production/self-hosting, see .env.self-host.example
|
|
|
|
# ==============================================================================
|
|
# Environment & Security
|
|
# ==============================================================================
|
|
NODE_ENV=development
|
|
JWT_SECRET=hBx9Xh8J6KOMAGAsSjvcZJBT5TWyIkFX
|
|
# Port the API server listens on (default: 8080)
|
|
# PORT=8080
|
|
|
|
# ==============================================================================
|
|
# Application URLs
|
|
# ==============================================================================
|
|
# Set to 'true' for HTTPS in production (only used when auto-generating URIs from domains)
|
|
USE_HTTPS=false
|
|
|
|
API_URI=http://localhost:8080
|
|
WIKI_URI=http://localhost:1000
|
|
DASHBOARD_URI=http://localhost:3000
|
|
LANDING_URI=http://localhost:4000
|
|
|
|
# ==============================================================================
|
|
# Plunk API (Optional - for sending emails via Plunk API)
|
|
# ==============================================================================
|
|
# API key for authenticating with the Plunk API (obtained from dashboard)
|
|
PLUNK_API_KEY=
|
|
# From address used for platform notification emails (project disabled, billing limits, etc.)
|
|
# PLUNK_FROM_ADDRESS=
|
|
|
|
# ==============================================================================
|
|
# Database & Redis
|
|
# ==============================================================================
|
|
REDIS_URL=redis://127.0.0.1:56379
|
|
DATABASE_URL=postgresql://postgres:postgres@localhost:55432/postgres
|
|
DIRECT_DATABASE_URL=postgresql://postgres:postgres@localhost:55432/postgres
|
|
|
|
# ==============================================================================
|
|
# S3-compatible Storage (Minio - for file uploads)
|
|
# ==============================================================================
|
|
# For local development, make sure Minio is running via docker compose
|
|
S3_ENDPOINT=http://localhost:9000
|
|
S3_ACCESS_KEY_ID=plunk
|
|
S3_ACCESS_KEY_SECRET=plunkminiopass
|
|
S3_BUCKET=uploads
|
|
S3_PUBLIC_URL=http://localhost:9000/uploads
|
|
S3_FORCE_PATH_STYLE=true
|
|
|
|
# ==============================================================================
|
|
# AWS SES (Required - for sending emails)
|
|
# ==============================================================================
|
|
AWS_SES_REGION=eu-north-1
|
|
AWS_SES_ACCESS_KEY_ID=
|
|
AWS_SES_SECRET_ACCESS_KEY=
|
|
|
|
# Configuration sets for email tracking
|
|
SES_CONFIGURATION_SET=plunk-configuration-set # Default: with open/click tracking
|
|
SES_CONFIGURATION_SET_NO_TRACKING=plunk-configuration-set-no-tracking # Optional: without tracking (enables toggle in UI)
|
|
|
|
# Email sending rate limit (emails per second)
|
|
# If not set, automatically fetches from AWS SES account quota (recommended)
|
|
# Set this to override AWS quota (useful for setting lower limits or testing)
|
|
# Default: Fetched from AWS (typically 14 for sandbox, higher for production accounts)
|
|
# EMAIL_RATE_LIMIT_PER_SECOND=14
|
|
|
|
# ==============================================================================
|
|
# OAuth (Optional - for social login)
|
|
# ==============================================================================
|
|
GITHUB_OAUTH_CLIENT=
|
|
GITHUB_OAUTH_SECRET=
|
|
GOOGLE_OAUTH_CLIENT=
|
|
GOOGLE_OAUTH_SECRET=
|
|
|
|
# ==============================================================================
|
|
# Stripe (Optional - for billing)
|
|
# ==============================================================================
|
|
STRIPE_SK=
|
|
STRIPE_WEBHOOK_SECRET=
|
|
STRIPE_PRICE_ONBOARDING= # Optional: One-time onboarding fee price ID (e.g., price_xxxxx)
|
|
STRIPE_PRICE_EMAIL_USAGE= # Required: Metered price ID for pay-per-email billing
|
|
STRIPE_METER_EVENT_NAME=emails # Meter event name (API key from your Stripe meter, default: emails)
|
|
|
|
# ==============================================================================
|
|
# Security (Optional)
|
|
# ==============================================================================
|
|
# Controls whether projects are automatically disabled when bounce/complaint rate thresholds are exceeded
|
|
# Set to 'false' to disable automatic project suspension (useful for self-hosters who manage manually)
|
|
# Default: true (automatic project disabling enabled)
|
|
# AUTO_PROJECT_DISABLE=true
|
|
|
|
# ==============================================================================
|
|
# Notifications (Optional - system notifications via ntfy)
|
|
# ==============================================================================
|
|
# ntfy topic URL for internal system notifications (e.g. project disabled, billing limits).
|
|
# When unset, ntfy notifications are disabled.
|
|
# Examples:
|
|
# - Public ntfy.sh: https://ntfy.sh/your-unique-topic-name
|
|
# - Self-hosted: https://your-ntfy-server.com/your-topic
|
|
# NTFY_URL=
|
|
|
|
# ==============================================================================
|
|
# Attachments (Optional)
|
|
# ==============================================================================
|
|
# Limits applied to attachments on transactional emails.
|
|
# AWS SES caps total message size at 40 MB; the defaults below leave headroom.
|
|
# MAX_ATTACHMENT_SIZE_MB=10
|
|
# MAX_ATTACHMENTS_COUNT=10
|
|
|
|
# ==============================================================================
|
|
# User Management (Optional)
|
|
# ==============================================================================
|
|
# When 'true', the signup endpoint rejects new user registrations.
|
|
# Default: false
|
|
# DISABLE_SIGNUPS=false
|
|
# When 'true', validates emails on signup (disposable domains, plus-addressing,
|
|
# domain existence, MX records).
|
|
# Default: false
|
|
# VERIFY_EMAIL_ON_SIGNUP=false
|
|
|
|
# ==============================================================================
|
|
# Phishing Detection (Optional - AI-powered phishing scan via OpenRouter)
|
|
# ==============================================================================
|
|
# When OPENROUTER_API_KEY is set, a random sample of outgoing emails is
|
|
# analyzed by an LLM. Projects can be auto-disabled if a single email exceeds
|
|
# PHISHING_CONFIDENCE_THRESHOLD, or if PHISHING_CUMULATIVE_THRESHOLD emails are
|
|
# flagged within PHISHING_CUMULATIVE_WINDOW_MS.
|
|
# OPENROUTER_API_KEY=
|
|
# OPENROUTER_MODEL=anthropic/claude-3-haiku
|
|
# PHISHING_DETECTION_SAMPLE_RATE=0.1
|
|
# PHISHING_CONFIDENCE_THRESHOLD=95
|
|
# PHISHING_CUMULATIVE_THRESHOLD=3
|
|
# PHISHING_CUMULATIVE_WINDOW_MS=3600000
|