2026.7.16
Multi-instance CrowdSec support and YAML configuration
This release introduces support for connecting CrowdSec Web UI to multiple CrowdSec instances and moves application settings into a unified YAML configuration.
Multiple CrowdSec instances
Multiple LAPIs can now be declared in the instances array. Each instance has its own stable identity, display name, optional icon, LAPI authentication, TLS settings, metrics endpoints, and optional synchronization overrides.
Dashboard, Alerts, and Decisions now provide an instance selector. Choose an individual instance or use the Combined scope to view data across all configured instances.
Highlights include:
- Independent synchronization and connection status for every LAPI.
- Correct handling of overlapping alert, decision, and UUID values between instances.
- Instance-aware alert details, filtering, deletion, and bulk deletion.
- Combined decision and IP-cleanup actions across every configured LAPI, including partial-failure reporting.
- Instance names in notification titles and metadata.
- Per-instance Prometheus endpoints with endpoint selection on the Metrics page.
Metrics remain scoped to one instance and endpoint at a time because CrowdSec exposes process-local counters that should not be summed across unrelated processes.
YAML configuration
Note
Environment variables for overwriting the YAML configuration will be delivered in the following release
CrowdSec Web UI now always uses YAML configuration. Docker installations load:
/app/data/config.yaml
A complete commented template is available in config.example.yaml. Use CONFIG_FILE only when selecting a different path.
A minimal instance definition looks like:
instances:
- id: default
name: CrowdSec
lapi:
url: http://crowdsec:8080
auth:
type: password
username: crowdsec-web-ui
password: my-secret-password
metrics: []YAML supports:
- Global application, UI, authentication, notification, update, and synchronization settings.
- Multiple CrowdSec LAPI definitions.
- Password, mTLS, or unauthenticated LAPI connections.
- Per-instance synchronization overrides.
- Multiple Prometheus endpoints using no authentication, basic authentication, or bearer tokens.
- Direct secrets or references to environment variables and mounted files.
- Startup validation for invalid identities, URLs, authentication combinations, TLS files, durations, and secret sources.
File-backed secrets are recommended for production deployments.
Upgrading
If /app/data/config.yaml does not exist, the application generates it once from deprecated application environment variables and immediately loads it.
After generation:
- The YAML file becomes authoritative and is never automatically overwritten.
- Changes to deprecated application-setting environment variables no longer take effect.
- Secret values are not copied into the generated file; their environment or file references are retained.
- Environment variables explicitly referenced by YAML secrets continue to work.
- A custom path selected with
CONFIG_FILEmust already exist and be readable.
Review the generated file after upgrading and remove obsolete environment settings once the configuration has been verified.
Configuration and referenced secrets are read during startup. Restart the application after editing the YAML or rotating a referenced secret.
Treat every instances[].id as an immutable database identity. IDs must be unique and should not be renamed or reused for another LAPI after synchronization has begun.
Changes
- Add multi-instance LAPI and metrics support (#379)
- Migrate application settings to YAML configuration (#379)
- Fix legacy UUID constraints for multiple instances (#379)
- Fix instance filtering and alert details (#379)
- Include instance names in notifications (#379)
- Update screenshots for multiple instances (#379)
- Fix CI test stability and coverage (#379)
- Improve Docker configuration documentation (#380)
Contributors
Docker
docker pull ghcr.io/TheDuffman85/crowdsec-web-ui:2026.7.16