# Caddy Proxy Manager Environment Configuration # Copy this file to .env and update with your secure values # IMPORTANT: chmod 600 .env after creating it # ============================================================================= # REQUIRED SECURITY SETTINGS (PRODUCTION) # ============================================================================= # Session Secret (REQUIRED) # Generate with: openssl rand -base64 32 # Must be at least 32 characters in production SESSION_SECRET=your-secure-session-secret-here-min-32-chars # Admin Credentials (REQUIRED) # USERNAME: Any username (e.g., "admin" is fine) # PASSWORD: Must be 12+ characters with: # - Uppercase letters (A-Z) # - Lowercase letters (a-z) # - Numbers (0-9) # - Special characters (!@#$%^&* etc.) ADMIN_USERNAME=admin ADMIN_PASSWORD=Your-Secure-P@ssw0rd-Here! # ============================================================================= # APPLICATION CONFIGURATION # ============================================================================= # Public base URL for the application (IMPORTANT!) # This is the URL where users access your Caddy Proxy Manager interface. # # ** REQUIRED FOR OAUTH: If using OAuth2/OIDC authentication, this MUST match # the redirect URI configured in your OAuth provider exactly. # The redirect URI will be: {BASE_URL}/api/auth/callback/oauth2 # # Examples: # - Local development: http://localhost:3000 # - Production with domain: https://caddy-manager.example.com # - Production with IP: http://192.168.1.100:3000 # # IMPORTANT: Do not include a trailing slash BASE_URL=http://localhost:3000 # ============================================================================= # ROOTLESS OPERATION (OPTIONAL) # ============================================================================= # User and Group IDs for running containers as non-root # Set these to match your host user to avoid permission issues with volumes # Find your UID/GID with: id -u / id -g # # Defaults: # - Web service: PUID=10001, PGID=10001 # - Caddy service: PUID=10000, PGID=10000 # # For matching your host user (recommended for development): # PUID=1000 # PGID=1000 # ============================================================================= # OAUTH2/OIDC AUTHENTICATION (OPTIONAL) # ============================================================================= # OAuth2/OIDC Provider (works with Authentik, Authelia, Keycloak, etc.) # Enable OAuth2 authentication with any OIDC-compliant provider OAUTH_ENABLED=false OAUTH_PROVIDER_NAME=OAuth2 # Display name (e.g., "Authentik", "Keycloak") OAUTH_CLIENT_ID= OAUTH_CLIENT_SECRET= OAUTH_ISSUER= # OIDC discovery URL (e.g., https://auth.example.com/application/o/app/) # Optional: Override auto-discovered URLs (only if OIDC discovery doesn't work) # OAUTH_AUTHORIZATION_URL= # OAUTH_TOKEN_URL= # OAUTH_USERINFO_URL= # OAuth Settings OAUTH_ALLOW_AUTO_LINKING=false # Auto-link OAuth to accounts without passwords # Example for Authentik: # OAUTH_ENABLED=true # OAUTH_PROVIDER_NAME=Authentik # OAUTH_CLIENT_ID=your-client-id # OAUTH_CLIENT_SECRET=your-client-secret # OAUTH_ISSUER=https://auth.example.com/application/o/caddy-proxy/ # # IMPORTANT: Configure the redirect URI in your OAuth provider: # Redirect URI = {BASE_URL}/api/auth/callback/oauth2 # Example: http://localhost:3000/api/auth/callback/oauth2 # or: https://caddy-manager.example.com/api/auth/callback/oauth2 # ============================================================================= # OPTIONAL: ADVANCED CONFIGURATION # ============================================================================= # Database configuration (usually no need to change) # DATABASE_URL=file:/app/data/caddy-proxy-manager.db # Caddy Admin API endpoint (usually no need to change) # CADDY_API_URL=http://caddy:2019 # Certificate storage directory (usually no need to change) # CERTS_DIRECTORY=./data/certs # Login rate limiting (optional, for custom rate limit settings) # LOGIN_MAX_ATTEMPTS=5 # LOGIN_WINDOW_MS=300000 # LOGIN_BLOCK_MS=900000 # ============================================================================= # CLICKHOUSE ANALYTICS (OPTIONAL) # ============================================================================= # ClickHouse is used for analytics data (traffic events, WAF events). # Data is automatically retained for 90 days via ClickHouse TTL. # CLICKHOUSE_PASSWORD is required — generate with: openssl rand -base64 32 CLICKHOUSE_PASSWORD=your-clickhouse-password-here # CLICKHOUSE_URL=http://clickhouse:8123 # CLICKHOUSE_USER=cpm # CLICKHOUSE_DB=analytics # ============================================================================= # GEOIP UPDATE (OPTIONAL) # ============================================================================= # GeoIP Update (Optional - for geoblocking support) # To enable the geoipupdate container, set COMPOSE_PROFILES=geoipupdate # Get credentials at: https://www.maxmind.com/en/geolite2/signup COMPOSE_PROFILES= GEOIPUPDATE_ACCOUNT_ID= GEOIPUPDATE_LICENSE_KEY=