Skip to content

Vulcan Environment Variables

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

System Configuration

VariableDescriptionDefaultExample
VULCAN_CONFIGOverride path to vulcan.yml config fileconfig/vulcan.yml/etc/vulcan/config.yml
VULCAN_ENVOverride Rails environmentUses RAILS_ENVproduction

Database Configuration

VariableDescriptionDefaultExample
DATABASE_URLPostgreSQL connection string-postgres://user:pass@localhost:5432/vulcan_development
VULCAN_VUE_DATABASE_PASSWORDPostgreSQL password (production only)-postgres_password

General Application Settings

VariableDescriptionDefaultExample
VULCAN_APP_URLApplication URLhttp://localhost:3000https://vulcan.example.com
VULCAN_WELCOME_TEXTWelcome message on login pageWelcome to VulcanWelcome to MITRE Vulcan
VULCAN_CONTACT_EMAILContact email for notificationsdo_not_reply@vulcanadmin@example.com

Authentication Settings

Local Login

VariableDescriptionDefaultExample
VULCAN_ENABLE_LOCAL_LOGINEnable local username/password logintruetrue or false
VULCAN_ENABLE_EMAIL_CONFIRMATIONRequire email confirmation for new usersfalsetrue or false
VULCAN_SESSION_TIMEOUTSession timeout in minutes60120

User Registration

VariableDescriptionDefaultExample
VULCAN_ENABLE_USER_REGISTRATIONAllow new users to registertruetrue 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)

VariableDescriptionRequiredExample
VULCAN_ENABLE_OIDCEnable OIDC authenticationtrue
VULCAN_OIDC_ISSUER_URLOIDC issuer URLhttps://dev-12345.okta.com
VULCAN_OIDC_CLIENT_IDOIDC client ID0oa1b2c3d4e5f6g7h8i9j
VULCAN_OIDC_CLIENT_SECRETOIDC client secretsecret_key_here
VULCAN_OIDC_REDIRECT_URIOIDC redirect URIhttps://vulcan.example.com/users/auth/oidc/callback

Optional Configuration

VariableDescriptionDefaultExample
VULCAN_OIDC_DISCOVERYEnable automatic endpoint discoverytruefalse (to disable)
VULCAN_OIDC_PROVIDER_TITLEDisplay name for OIDC providerOIDC ProviderOkta
VULCAN_OIDC_PROMPTOIDC prompt parameter-login (forces re-authentication)
VULCAN_OIDC_CLIENT_SIGNING_ALGOIDC signing algorithmRS256RS256

Manual Configuration (Legacy/Fallback)

Only required when VULCAN_OIDC_DISCOVERY=false or as fallback endpoints

VariableDescriptionExample
VULCAN_OIDC_AUTHORIZATION_URLOIDC authorization endpointhttps://dev-12345.okta.com/oauth2/default/v1/authorize
VULCAN_OIDC_TOKEN_URLOIDC token endpointhttps://dev-12345.okta.com/oauth2/default/v1/token
VULCAN_OIDC_USERINFO_URLOIDC userinfo endpointhttps://dev-12345.okta.com/oauth2/default/v1/userinfo
VULCAN_OIDC_JWKS_URIOIDC JWKS endpointhttps://dev-12345.okta.com/oauth2/default/v1/keys

Deprecated Variables

These variables are no longer needed with auto-discovery enabled

VariableReplacementNotes
VULCAN_OIDC_HOSTUse VULCAN_OIDC_ISSUER_URLAutomatically extracted from issuer URL
VULCAN_OIDC_PORTUse VULCAN_OIDC_ISSUER_URLAutomatically extracted from issuer URL
VULCAN_OIDC_SCHEMEUse VULCAN_OIDC_ISSUER_URLAutomatically extracted from issuer URL

Migration Examples

Before (8+ variables):

bash
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):

bash
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

VariableDescriptionDefaultExample
VULCAN_ENABLE_LDAPEnable LDAP authenticationfalsetrue or false
VULCAN_LDAP_HOSTLDAP server hostnamelocalhostldap.example.com
VULCAN_LDAP_PORTLDAP server port389636
VULCAN_LDAP_TITLEDisplay name for LDAPLDAPCorporate LDAP
VULCAN_LDAP_ATTRIBUTELDAP attribute for user lookupuidsAMAccountName
VULCAN_LDAP_ENCRYPTIONLDAP encryption methodplainsimple_tls or start_tls
VULCAN_LDAP_BIND_DNLDAP bind DN-cn=admin,dc=example,dc=com
VULCAN_LDAP_ADMIN_PASSLDAP bind password-ldap_password
VULCAN_LDAP_BASELDAP search base-dc=example,dc=com

Email/SMTP Settings

VariableDescriptionDefaultExample
VULCAN_ENABLE_SMTPEnable SMTP for sending emailsfalsetrue or false
VULCAN_SMTP_ADDRESSSMTP server address-smtp.gmail.com
VULCAN_SMTP_PORTSMTP server port-587
VULCAN_SMTP_DOMAINSMTP domain-example.com
VULCAN_SMTP_SERVER_USERNAMESMTP username-notifications@example.com
VULCAN_SMTP_SERVER_PASSWORDSMTP password-smtp_password
VULCAN_SMTP_AUTHENTICATIONSMTP authentication method-plain
VULCAN_SMTP_OPENSSL_VERIFY_MODEOpenSSL verify mode for SMTP-none
VULCAN_SMTP_TLSUse TLS for SMTP-true or false
VULCAN_SMTP_ENABLE_STARTTLS_AUTOEnable STARTTLS auto-true or false

Slack Integration

VariableDescriptionDefaultExample
VULCAN_ENABLE_SLACK_COMMSEnable Slack notificationsfalsetrue or false
VULCAN_SLACK_API_TOKENSlack API token-xoxb-your-token
VULCAN_SLACK_CHANNEL_IDSlack channel ID-C1234567890

Project Settings

VariableDescriptionDefaultExample
VULCAN_PROJECT_CREATE_PERMISSION_ENABLEDRequire permission to create projectstruetrue or false

Development Environment

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

bash
# 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:

  • .env file (created by setup-docker-secrets.sh)
  • docker-compose.yml using the environment: section
  • Container runtime with -e flags

For Container Deployments (Docker, ECS, Kubernetes):

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

AWS ECS Example:

json
{
  "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

VariableDescriptionDefaultExample
RAILS_MASTER_KEYRails master key for credentials-Generated by Rails
RAILS_LOG_TO_STDOUTLog to stdout instead of files-true
RAILS_SERVE_STATIC_FILESServe static files in production-true
FORCE_SSLForce SSL connections-true

Container Logging (Production)

VariableDescriptionDefaultExample
RAILS_LOG_TO_STDOUTEnable container-friendly loggingfalsetrue
STRUCTURED_LOGGINGEnable JSON structured logging for CloudWatch/monitoringfalsetrue
DOCKER_CONTAINERIndicates running in Docker container (auto-detected)-true
ECS_CONTAINER_METADATA_URIAWS ECS metadata URI (auto-detected)-Auto-set by ECS

Container Logging Features:

  • Automatic Detection: Vulcan automatically detects container environments (Docker, ECS, Kubernetes)
  • JSON Logging: When STRUCTURED_LOGGING=true, logs are output in JSON format for easy parsing by CloudWatch, Splunk, etc.
  • OIDC Discovery Visibility: All OIDC auto-discovery events are logged with detailed context for production debugging
  • Request Tracking: Includes request IDs in structured logs when available

GitHub OAuth (Optional)

VariableDescriptionDefaultExample
GITHUB_APP_IDGitHub OAuth app ID-your_github_app_id
GITHUB_APP_SECRETGitHub OAuth app secret-your_github_app_secret

Notes

  • Boolean values: Use true or false (case-insensitive)
  • All boolean environment variables default to false unless otherwise specified
  • Variables marked with - in the Default column are required when the feature is enabled
  • Sensitive values (passwords, secrets) should never be committed to version control

Part of the MITRE Security Automation Framework (SAF)