Skip to main content

Configuration

SolidPing is configured primarily through environment variables. All environment variables use the SP_ prefix. Configuration uses hierarchical precedence: Environment variables > config.local.yml > config.yml > defaults.

Configuration Methods

  1. Environment Variables - Recommended for Docker and production
  2. Configuration File - config.yml in the working directory (with config.local.yml for local overrides)
  3. Command Line - Some options can be passed via CLI flags

Quick Reference

Essential Variables

VariableDefaultDescription
SP_DB_TYPEsqliteDatabase type: postgres, sqlite, sqlite-memory, postgres-embedded
SP_DB_URL-PostgreSQL connection string
SP_DB_DIR.SQLite database directory
SP_DB_RESETfalseReset database on startup
SP_SERVER_LISTEN:4000Server address and port
SP_BASE_URLhttp://localhost:4000Public URL where SolidPing is accessible

Server Configuration

VariableDefaultDescription
SP_SERVER_LISTEN:4000Listen address (e.g., :4000, 0.0.0.0:8080)
SP_SERVER_JOB_WORKER_NB2Number of job runner goroutines
SP_SERVER_CHECK_WORKER_NB3Number of check runner goroutines
SP_SHUTDOWN_TIMEOUT30sGraceful shutdown timeout
PORT-Alternative to SP_SERVER_LISTEN (for PaaS compatibility)

Distributed Workers

VariableDefaultDescription
SP_NODE_ROLEallNode role: all, api, jobs, checks
SP_NODE_REGION-Worker region (required when role=checks)

Use SP_NODE_ROLE to run SolidPing in a distributed configuration:

  • all - Single node running everything (default)
  • api - Only serve the API and dashboard
  • jobs - Only run background jobs (scheduling, cleanup)
  • checks - Only execute health checks (worker mode)

Logging

VariableDefaultDescription
SP_LOG_LEVELinfoLog level: debug, info, warn, error

Authentication

VariableDefaultDescription
SP_AUTH_JWT_SECRETauto-generatedJWT signing secret
SP_AUTH_REGISTRATION_EMAIL_PATTERN-Restrict registration by email regex

OAuth Providers

Set both _CLIENT_ID and _CLIENT_SECRET to enable each provider:

ProviderVariables
GoogleSP_GOOGLE_CLIENT_ID, SP_GOOGLE_CLIENT_SECRET
GitHubSP_GITHUB_CLIENT_ID, SP_GITHUB_CLIENT_SECRET
GitLabSP_GITLAB_CLIENT_ID, SP_GITLAB_CLIENT_SECRET
MicrosoftSP_MICROSOFT_CLIENT_ID, SP_MICROSOFT_CLIENT_SECRET

Run Mode

VariableDefaultDescription
SP_RUN_MODE-Runtime mode: test (seed test data), demo

Development

VariableDescription
SP_REDIRECTSDev proxy redirects (format: /path:host:port/target,...)

Example Configuration

Environment Variables

# Database (PostgreSQL)
SP_DB_TYPE=postgres
SP_DB_URL=postgresql://solidping:password@localhost:5432/solidping?sslmode=disable

# Server
SP_BASE_URL=https://monitoring.example.com
SP_SERVER_LISTEN=:4000

# Workers
SP_SERVER_JOB_WORKER_NB=4
SP_SERVER_CHECK_WORKER_NB=8

# Authentication
SP_AUTH_JWT_SECRET=your-secure-random-secret
SP_GOOGLE_CLIENT_ID=your-google-client-id
SP_GOOGLE_CLIENT_SECRET=your-google-client-secret

# Logging
SP_LOG_LEVEL=info

Configuration File (config.yml)

db:
type: postgres
url: postgresql://solidping:password@localhost:5432/solidping?sslmode=disable

base_url: https://monitoring.example.com

server:
listen: ":4000"
job_worker_nb: 4
check_worker_nb: 8
shutdown_timeout: 30s

auth:
jwt_secret: your-secure-random-secret

email:
enabled: true
host: smtp.example.com
port: 587
username: noreply@example.com
password: smtp-password
from: noreply@example.com
from_name: SolidPing

slack:
app_id: your-slack-app-id
client_id: your-slack-client-id
client_secret: your-slack-client-secret
signing_secret: your-slack-signing-secret

CLI Configuration

The SolidPing CLI client (sp) uses its own configuration:

VariableDefaultDescription
SOLIDPING_CONFIG~/.config/solidping/settings.jsonCLI config file path
SOLIDPING_URL-Server URL override
SOLIDPING_ORG-Organization override
SOLIDPING_VERBOSEfalseVerbose CLI logging

Sections

Security Recommendations

Production Security

Always change these in production:

  • Set SP_AUTH_JWT_SECRET to a strong random value
  • Database passwords - Use strong, unique passwords
  • Set SP_BASE_URL to your public URL
  • Email credentials - Store securely, never commit to version control