Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Configuration

Yet Another Status Page is configured through environment variables and the admin panel.

Environment Variables

Required

VariableDescriptionExample
DATABASE_URIPostgreSQL connection stringpostgres://user:pass@host:5432/db
PAYLOAD_SECRETSecret key for encryption (min 32 chars) - Generate oneyour-super-secret-key-here-32ch
SERVER_URLPublic URL of your status pagehttps://status.example.com

Note: On Vercel, both POSTGRES_URL and SERVER_URL are automatically detected:

  • POSTGRES_URL is set when you add a Vercel Postgres database
  • SERVER_URL falls back to VERCEL_PROJECT_PRODUCTION_URL or VERCEL_URL if not explicitly set

The app supports both DATABASE_URI and POSTGRES_URL for database connections.

Optional

VariableDescriptionDefault
PORTServer port3000
NODE_ENVEnvironment modeproduction

SSO/OIDC Authentication (Optional)

Enable Single Sign-On with any OIDC-compliant identity provider (Keycloak, Okta, Auth0, Azure AD, Google).

VariableDescriptionDefault
OIDC_CLIENT_IDOAuth2 client ID-
OIDC_CLIENT_SECRETOAuth2 client secret-
OIDC_AUTH_URLAuthorization endpoint-
OIDC_TOKEN_URLToken endpoint-
OIDC_USERINFO_URLUser info endpoint-
OIDC_SCOPESOAuth scopesopenid profile email
OIDC_AUTO_CREATECreate users on first logintrue
OIDC_ALLOWED_GROUPSComma-separated list of allowed groups(allow all)
OIDC_GROUP_CLAIMClaim name containing groupsgroups
OIDC_DISABLE_LOCAL_LOGINDisable password login (SSO-only)false

Provider-Specific URLs

Keycloak:

OIDC_AUTH_URL=https://keycloak.example.com/realms/{realm}/protocol/openid-connect/auth
OIDC_TOKEN_URL=https://keycloak.example.com/realms/{realm}/protocol/openid-connect/token
OIDC_USERINFO_URL=https://keycloak.example.com/realms/{realm}/protocol/openid-connect/userinfo

Okta:

OIDC_AUTH_URL=https://{domain}.okta.com/oauth2/default/v1/authorize
OIDC_TOKEN_URL=https://{domain}.okta.com/oauth2/default/v1/token
OIDC_USERINFO_URL=https://{domain}.okta.com/oauth2/default/v1/userinfo

Auth0:

OIDC_AUTH_URL=https://{tenant}.auth0.com/authorize
OIDC_TOKEN_URL=https://{tenant}.auth0.com/oauth/token
OIDC_USERINFO_URL=https://{tenant}.auth0.com/userinfo

Azure AD:

OIDC_AUTH_URL=https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize
OIDC_TOKEN_URL=https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token
OIDC_USERINFO_URL=https://graph.microsoft.com/oidc/userinfo

Google:

OIDC_AUTH_URL=https://accounts.google.com/o/oauth2/v2/auth
OIDC_TOKEN_URL=https://oauth2.googleapis.com/token
OIDC_USERINFO_URL=https://openidconnect.googleapis.com/v1/userinfo

Callback URL

When configuring your identity provider, set the callback/redirect URL to:

https://your-status-page.com/api/users/oauth/callback

Group-Based Access Control

To restrict access to specific groups from your identity provider:

  1. Configure your IdP to include group claims in the userinfo response
  2. Set OIDC_ALLOWED_GROUPS to a comma-separated list of allowed groups
  3. If your IdP uses a different claim name, set OIDC_GROUP_CLAIM

Example Keycloak Setup:

  1. Create a client scope named “groups” with a Group Membership mapper:
    • Token Claim Name: groups
    • Add to userinfo: On
  2. Add the scope to your client
  3. Configure the status page:
OIDC_SCOPES=openid profile email groups
OIDC_ALLOWED_GROUPS=status-page-admins,status-page-editors

SSO-Only Mode

To disable password login and require SSO for all users:

OIDC_DISABLE_LOCAL_LOGIN=true

Warning: Ensure SSO is working correctly before enabling this option, or you may lock yourself out!

Admin Panel Settings

The admin panel has three configuration sections under Configuration:

Site Settings

Access Configuration → Site Settings to configure:

  • Site Name: Displayed in the header and emails
  • Site Description: Meta description for SEO
  • Favicon: Custom favicon for your status page
  • Logos: Light and dark theme logos
  • SEO: Meta titles and descriptions
  • Status Override: Maintenance mode and custom messages

Email Settings

Access Configuration → Email Settings to configure email notifications:

SettingDescription
Enable Email SubscriptionsAllow users to subscribe via email
SMTP HostYour mail server hostname
SMTP PortUsually 587 (TLS) or 465 (SSL)
SMTP SecurityNone, TLS, or SSL
SMTP UsernameAuthentication username
SMTP PasswordAuthentication password
From AddressSender email address
From NameSender display name
Reply-ToReply-to address (optional)

SMS Settings

Access Configuration → SMS Settings to configure SMS notifications:

SettingDescription
Enable SMS SubscriptionsAllow users to subscribe via SMS
Account SIDYour Twilio Account SID
Auth TokenYour Twilio Auth Token
From NumberYour Twilio phone number (required if not using Messaging Service)
Messaging Service SIDAlternative to From Number for better deliverability

SMS Templates

You can customize the SMS message templates with these placeholders:

PlaceholderDescription
{{siteName}}Your site name from Site Settings
{{title}}Incident or maintenance title
{{status}}Current status (e.g., Investigating, Resolved)
{{message}}Update message content
{{schedule}}Maintenance schedule (maintenance only)
{{url}}Link to the incident/maintenance page

Available templates:

  • New Incident Template - For initial incident notifications
  • Incident Update Template - For incident status updates
  • New Maintenance Template - For scheduled maintenance announcements
  • Maintenance Update Template - For maintenance status updates

You can also configure Title Max Length and Message Max Length to control truncation.

Testing Notifications

After configuring SMTP or Twilio:

  1. Create a test subscriber in Notifications → Subscribers
  2. Create a test incident in Status → Incidents
  3. Check the Notifications collection for the auto-generated draft
  4. Click Send Notification Now to test

Security Recommendations

  1. Use strong secrets: Generate a random 32+ character string for PAYLOAD_SECRET
  2. Use HTTPS: Always deploy behind HTTPS in production
  3. Secure database: Use strong passwords and restrict database access
  4. Regular backups: Schedule regular database backups