Skip to the content.

Vulcan Environment Variables

This document lists all environment variables that can be used to configure Vulcan.

System Configuration

Variable Description Default Example
VULCAN_CONFIG Override path to vulcan.yml config file config/vulcan.yml /etc/vulcan/config.yml
VULCAN_ENV Override Rails environment Uses RAILS_ENV production

Database Configuration

Variable Description Default Example
DATABASE_URL PostgreSQL connection string - postgres://user:pass@localhost:5432/vulcan_development
VULCAN_VUE_DATABASE_PASSWORD PostgreSQL password (production only) - postgres_password

General Application Settings

Variable Description Default Example
VULCAN_APP_URL Application URL http://localhost:3000 https://vulcan.example.com
VULCAN_WELCOME_TEXT Welcome message on login page Welcome to Vulcan Welcome to MITRE Vulcan
VULCAN_CONTACT_EMAIL Contact email for notifications do_not_reply@vulcan admin@example.com

Authentication Settings

Local Login

| Variable | Description | Default | Example | |———-|————-|———|———| | VULCAN_ENABLE_LOCAL_LOGIN | Enable local username/password login | true | true or false | | VULCAN_ENABLE_EMAIL_CONFIRMATION | Require email confirmation for new users | false | true or false | | VULCAN_SESSION_TIMEOUT | Session timeout in minutes | 60 | 120 |

User Registration

| Variable | Description | Default | Example | |———-|————-|———|———| | VULCAN_ENABLE_USER_REGISTRATION | Allow new users to register | true | true or false |

OIDC/OAuth (e.g., Okta, Auth0, Keycloak)

New in v2.2+: Vulcan supports automatic endpoint discovery, reducing configuration from 8+ variables to just 4 essential ones.

Essential Configuration (Auto-Discovery Enabled)

| Variable | Description | Required | Example | |———-|————-|———-|———| | VULCAN_ENABLE_OIDC | Enable OIDC authentication | ✅ | true | | VULCAN_OIDC_ISSUER_URL | OIDC issuer URL | ✅ | https://dev-12345.okta.com | | VULCAN_OIDC_CLIENT_ID | OIDC client ID | ✅ | 0oa1b2c3d4e5f6g7h8i9j | | VULCAN_OIDC_CLIENT_SECRET | OIDC client secret | ✅ | secret_key_here | | VULCAN_OIDC_REDIRECT_URI | OIDC redirect URI | ✅ | https://vulcan.example.com/users/auth/oidc/callback |

Optional Configuration

| Variable | Description | Default | Example | |———-|————-|———|———| | VULCAN_OIDC_DISCOVERY | Enable automatic endpoint discovery | true | false (to disable) | | VULCAN_OIDC_PROVIDER_TITLE | Display name for OIDC provider | OIDC Provider | Okta | | VULCAN_OIDC_PROMPT | OIDC prompt parameter | - | login (forces re-authentication) | | VULCAN_OIDC_CLIENT_SIGNING_ALG | OIDC signing algorithm | RS256 | RS256 |

Manual Configuration (Legacy/Fallback)

Only required when VULCAN_OIDC_DISCOVERY=false or as fallback endpoints

Variable Description Example
VULCAN_OIDC_AUTHORIZATION_URL OIDC authorization endpoint https://dev-12345.okta.com/oauth2/default/v1/authorize
VULCAN_OIDC_TOKEN_URL OIDC token endpoint https://dev-12345.okta.com/oauth2/default/v1/token
VULCAN_OIDC_USERINFO_URL OIDC userinfo endpoint https://dev-12345.okta.com/oauth2/default/v1/userinfo
VULCAN_OIDC_JWKS_URI OIDC JWKS endpoint https://dev-12345.okta.com/oauth2/default/v1/keys

Deprecated Variables

These variables are no longer needed with auto-discovery enabled

Variable Replacement Notes
VULCAN_OIDC_HOST Use VULCAN_OIDC_ISSUER_URL Automatically extracted from issuer URL
VULCAN_OIDC_PORT Use VULCAN_OIDC_ISSUER_URL Automatically extracted from issuer URL
VULCAN_OIDC_SCHEME Use VULCAN_OIDC_ISSUER_URL Automatically extracted from issuer URL

Migration Examples

Before (8+ variables):

VULCAN_ENABLE_OIDC=true
VULCAN_OIDC_ISSUER_URL=https://dev-12345.okta.com
VULCAN_OIDC_CLIENT_ID=your-client-id
VULCAN_OIDC_CLIENT_SECRET=your-secret
VULCAN_OIDC_REDIRECT_URI=https://vulcan.example.com/users/auth/oidc/callback
VULCAN_OIDC_AUTHORIZATION_URL=https://dev-12345.okta.com/oauth2/default/v1/authorize
VULCAN_OIDC_TOKEN_URL=https://dev-12345.okta.com/oauth2/default/v1/token
VULCAN_OIDC_USERINFO_URL=https://dev-12345.okta.com/oauth2/default/v1/userinfo
VULCAN_OIDC_JWKS_URI=https://dev-12345.okta.com/oauth2/default/v1/keys

After (4 variables):

VULCAN_ENABLE_OIDC=true
VULCAN_OIDC_ISSUER_URL=https://dev-12345.okta.com
VULCAN_OIDC_CLIENT_ID=your-client-id
VULCAN_OIDC_CLIENT_SECRET=your-secret
VULCAN_OIDC_REDIRECT_URI=https://vulcan.example.com/users/auth/oidc/callback
# Endpoints automatically discovered from /.well-known/openid-configuration

LDAP

| Variable | Description | Default | Example | |———-|————-|———|———| | VULCAN_ENABLE_LDAP | Enable LDAP authentication | false | true or false | | VULCAN_LDAP_HOST | LDAP server hostname | localhost | ldap.example.com | | VULCAN_LDAP_PORT | LDAP server port | 389 | 636 | | VULCAN_LDAP_TITLE | Display name for LDAP | LDAP | Corporate LDAP | | VULCAN_LDAP_ATTRIBUTE | LDAP attribute for user lookup | uid | sAMAccountName | | VULCAN_LDAP_ENCRYPTION | LDAP encryption method | plain | simple_tls or start_tls | | VULCAN_LDAP_BIND_DN | LDAP bind DN | - | cn=admin,dc=example,dc=com | | VULCAN_LDAP_ADMIN_PASS | LDAP bind password | - | ldap_password | | VULCAN_LDAP_BASE | LDAP search base | - | dc=example,dc=com |

Email/SMTP Settings

Variable Description Default Example
VULCAN_ENABLE_SMTP Enable SMTP for sending emails false true or false
VULCAN_SMTP_ADDRESS SMTP server address - smtp.gmail.com
VULCAN_SMTP_PORT SMTP server port - 587
VULCAN_SMTP_DOMAIN SMTP domain - example.com
VULCAN_SMTP_SERVER_USERNAME SMTP username - notifications@example.com
VULCAN_SMTP_SERVER_PASSWORD SMTP password - smtp_password
VULCAN_SMTP_AUTHENTICATION SMTP authentication method - plain
VULCAN_SMTP_OPENSSL_VERIFY_MODE OpenSSL verify mode for SMTP - none
VULCAN_SMTP_TLS Use TLS for SMTP - true or false
VULCAN_SMTP_ENABLE_STARTTLS_AUTO Enable STARTTLS auto - true or false

Slack Integration

Variable Description Default Example
VULCAN_ENABLE_SLACK_COMMS Enable Slack notifications false true or false
VULCAN_SLACK_API_TOKEN Slack API token - xoxb-your-token
VULCAN_SLACK_CHANNEL_ID Slack channel ID - C1234567890

Project Settings

Variable Description Default Example
VULCAN_PROJECT_CREATE_PERMISSION_ENABLED Require permission to create projects true true or false

Development Environment

For local development, create a .env file in the project root with your settings:

# Database
DATABASE_URL=postgres://postgres:postgres@127.0.0.1:5432/vulcan_vue_development

# Enable OIDC (example for Okta)
VULCAN_ENABLE_OIDC=true
VULCAN_OIDC_PROVIDER_TITLE=Okta
VULCAN_OIDC_ISSUER_URL=https://dev-12345.okta.com
VULCAN_OIDC_HOST=dev-12345.okta.com
VULCAN_OIDC_CLIENT_ID=your_client_id
VULCAN_OIDC_CLIENT_SECRET=your_client_secret

# Disable local login when using OIDC
VULCAN_ENABLE_LOCAL_LOGIN=false

Production Environment

In production, set these as actual environment variables through your deployment platform (Docker, Kubernetes, etc.) rather than using .env files.

Docker Deployment

When using Docker, you can set environment variables in:

For Container Deployments (Docker, ECS, Kubernetes):

# docker-compose.yml
environment:
  RAILS_LOG_TO_STDOUT: "true"
  STRUCTURED_LOGGING: "true"  # Enable JSON logging for CloudWatch/monitoring
  # Other environment variables...

AWS ECS Example:

{
  "environment": [
    {"name": "RAILS_LOG_TO_STDOUT", "value": "true"},
    {"name": "STRUCTURED_LOGGING", "value": "true"}
  ]
}

This ensures OIDC auto-discovery events and all application logs are visible in your container orchestration platform’s logging system.

Rails/Framework Settings

Variable Description Default Example
RAILS_MASTER_KEY Rails master key for credentials - Generated by Rails
RAILS_LOG_TO_STDOUT Log to stdout instead of files - true
RAILS_SERVE_STATIC_FILES Serve static files in production - true
FORCE_SSL Force SSL connections - true

Container Logging (Production)

Variable Description Default Example
RAILS_LOG_TO_STDOUT Enable container-friendly logging false true
STRUCTURED_LOGGING Enable JSON structured logging for CloudWatch/monitoring false true
DOCKER_CONTAINER Indicates running in Docker container (auto-detected) - true
ECS_CONTAINER_METADATA_URI AWS ECS metadata URI (auto-detected) - Auto-set by ECS

Container Logging Features:

GitHub OAuth (Optional)

Variable Description Default Example
GITHUB_APP_ID GitHub OAuth app ID - your_github_app_id
GITHUB_APP_SECRET GitHub OAuth app secret - your_github_app_secret

Notes