#### Important Note #### # This file is used to store environment variables for the Prowler App. # For production, it is recommended to use a secure method to store these variables and change the default secret keys. #### Prowler UI Configuration #### PROWLER_UI_VERSION="stable" AUTH_URL=http://localhost:3000 API_BASE_URL=http://prowler-api:8080/api/v1 NEXT_PUBLIC_API_BASE_URL=${API_BASE_URL} NEXT_PUBLIC_API_DOCS_URL=http://prowler-api:8080/api/v1/docs AUTH_TRUST_HOST=true UI_PORT=3000 # openssl rand -base64 32 AUTH_SECRET="N/c6mnaS5+SWq81+819OrzQZlmx1Vxtp/orjttJSmw8=" # Google Tag Manager ID NEXT_PUBLIC_GOOGLE_TAG_MANAGER_ID="" #### MCP Server #### PROWLER_MCP_VERSION=stable # For UI and MCP running on docker: PROWLER_MCP_SERVER_URL=http://mcp-server:8000/mcp # For UI running on host, MCP in docker: # PROWLER_MCP_SERVER_URL=http://localhost:8000/mcp #### Code Review Configuration #### # Enable Claude Code standards validation on pre-push hook # Set to 'true' to validate changes against AGENTS.md standards via Claude Code # Set to 'false' to skip validation CODE_REVIEW_ENABLED=true #### Prowler API Configuration #### PROWLER_API_VERSION="stable" # PostgreSQL settings # If running Django and celery on host, use 'localhost', else use 'postgres-db' POSTGRES_HOST=postgres-db POSTGRES_PORT=5432 POSTGRES_ADMIN_USER=prowler_admin POSTGRES_ADMIN_PASSWORD=postgres POSTGRES_USER=prowler POSTGRES_PASSWORD=postgres POSTGRES_DB=prowler_db # Read replica settings (optional) # POSTGRES_REPLICA_HOST=postgres-db # POSTGRES_REPLICA_PORT=5432 # POSTGRES_REPLICA_USER=prowler # POSTGRES_REPLICA_PASSWORD=postgres # POSTGRES_REPLICA_DB=prowler_db # POSTGRES_REPLICA_MAX_ATTEMPTS=3 # POSTGRES_REPLICA_RETRY_BASE_DELAY=0.5 # Celery-Prowler task settings TASK_RETRY_DELAY_SECONDS=0.1 TASK_RETRY_ATTEMPTS=5 # Valkey settings # If running Valkey and celery on host, use localhost, else use 'valkey' VALKEY_HOST=valkey VALKEY_PORT=6379 VALKEY_DB=0 # API scan settings # The path to the directory where scan output should be stored DJANGO_TMP_OUTPUT_DIRECTORY="/tmp/prowler_api_output" # The maximum number of findings to process in a single batch DJANGO_FINDINGS_BATCH_SIZE=1000 # The AWS access key to be used when uploading scan output to an S3 bucket # If left empty, default AWS credentials resolution behavior will be used DJANGO_OUTPUT_S3_AWS_ACCESS_KEY_ID="" # The AWS secret key to be used when uploading scan output to an S3 bucket DJANGO_OUTPUT_S3_AWS_SECRET_ACCESS_KEY="" # An optional AWS session token DJANGO_OUTPUT_S3_AWS_SESSION_TOKEN="" # The AWS region where your S3 bucket is located (e.g., "us-east-1") DJANGO_OUTPUT_S3_AWS_DEFAULT_REGION="" # The name of the S3 bucket where scan output should be stored DJANGO_OUTPUT_S3_AWS_OUTPUT_BUCKET="" # Django settings DJANGO_ALLOWED_HOSTS=localhost,127.0.0.1,prowler-api DJANGO_BIND_ADDRESS=0.0.0.0 DJANGO_PORT=8080 DJANGO_DEBUG=False DJANGO_SETTINGS_MODULE=config.django.production # Select one of [ndjson|human_readable] DJANGO_LOGGING_FORMATTER=human_readable # Select one of [DEBUG|INFO|WARNING|ERROR|CRITICAL] # Applies to both Django and Celery Workers DJANGO_LOGGING_LEVEL=INFO # Defaults to the maximum available based on CPU cores if not set. DJANGO_WORKERS=4 # Token lifetime is in minutes DJANGO_ACCESS_TOKEN_LIFETIME=30 # Token lifetime is in minutes DJANGO_REFRESH_TOKEN_LIFETIME=1440 DJANGO_CACHE_MAX_AGE=3600 DJANGO_STALE_WHILE_REVALIDATE=60 DJANGO_MANAGE_DB_PARTITIONS=True # openssl genrsa -out private.pem 2048 DJANGO_TOKEN_SIGNING_KEY="" # openssl rsa -in private.pem -pubout -out public.pem DJANGO_TOKEN_VERIFYING_KEY="" # openssl rand -base64 32 DJANGO_SECRETS_ENCRYPTION_KEY="oE/ltOhp/n1TdbHjVmzcjDPLcLA41CVI/4Rk+UB5ESc=" DJANGO_BROKER_VISIBILITY_TIMEOUT=86400 DJANGO_SENTRY_DSN= DJANGO_THROTTLE_TOKEN_OBTAIN=50/minute # Sentry settings SENTRY_ENVIRONMENT=local SENTRY_RELEASE=local NEXT_PUBLIC_SENTRY_ENVIRONMENT=${SENTRY_ENVIRONMENT} #### Prowler release version #### NEXT_PUBLIC_PROWLER_RELEASE_VERSION=v5.12.2 # Social login credentials SOCIAL_GOOGLE_OAUTH_CALLBACK_URL="${AUTH_URL}/api/auth/callback/google" SOCIAL_GOOGLE_OAUTH_CLIENT_ID="" SOCIAL_GOOGLE_OAUTH_CLIENT_SECRET="" SOCIAL_GITHUB_OAUTH_CALLBACK_URL="${AUTH_URL}/api/auth/callback/github" SOCIAL_GITHUB_OAUTH_CLIENT_ID="" SOCIAL_GITHUB_OAUTH_CLIENT_SECRET="" # Single Sign-On (SSO) SAML_SSO_CALLBACK_URL="${AUTH_URL}/api/auth/callback/saml" # Lighthouse tracing LANGSMITH_TRACING=false LANGSMITH_ENDPOINT="https://api.smith.langchain.com" LANGSMITH_API_KEY="" LANGCHAIN_PROJECT="" # RSS Feed Configuration # Multiple feed sources can be configured as a JSON array (must be valid JSON, no trailing commas) # Each source requires: id, name, type (github_releases|blog|custom), url, and enabled flag # IMPORTANT: Must be a single line with valid JSON (no newlines, no trailing commas) # Example with one source: RSS_FEED_SOURCES='[{"id":"prowler-releases","name":"Prowler Releases","type":"github_releases","url":"https://github.com/prowler-cloud/prowler/releases.atom","enabled":true}]' # Example with multiple sources (no trailing comma after last item): # RSS_FEED_SOURCES='[{"id":"prowler-releases","name":"Prowler Releases","type":"github_releases","url":"https://github.com/prowler-cloud/prowler/releases.atom","enabled":true},{"id":"prowler-blog","name":"Prowler Blog","type":"blog","url":"https://prowler.com/blog/rss","enabled":false}]'