Dashbrr supports automatic service discovery and configuration management through:
- Docker container labels
- Kubernetes service annotations
- External configuration files (YAML/JSON)
Reference files:
- Service matrix:
docs/services_matrix.md - Kubernetes manifest bundle:
docs/k8s_discovery_example.yaml
# Discover services from Docker containers
dashbrr config discover --docker
# Discover services from Kubernetes
dashbrr config discover --k8s
# Discover from Kubernetes and auto-confirm service import
dashbrr config discover --k8s --yes
# Discover from both Docker and Kubernetes
dashbrr config discover# Import services from configuration file
dashbrr config import services.yaml
# Export current configuration
dashbrr config export --format=yaml --mask-secrets --output=services.yamlConfigure services using Docker container labels:
labels:
com.dashbrr.service.type: "radarr" # Required: Service type
com.dashbrr.service.url: "http://radarr:7878" # Required: Service URL
com.dashbrr.service.apikey: "${RADARR_API_KEY}" # Usually required: API key/token (supports env vars)
com.dashbrr.service.name: "My Radarr" # Optional: Custom display name
com.dashbrr.service.enabled: "true" # Optional: Enable/disable serviceExample docker-compose.yml:
version: "3"
services:
radarr:
image: linuxserver/radarr
labels:
com.dashbrr.service.type: "radarr"
com.dashbrr.service.url: "http://radarr:7878"
com.dashbrr.service.apikey: "${RADARR_API_KEY}"
com.dashbrr.service.name: "Movies"Configure services using Kubernetes service annotations:
apiVersion: v1
kind: Service
metadata:
name: radarr
annotations:
com.dashbrr.service.type: "radarr"
com.dashbrr.service.url: "http://radarr.media.svc:7878"
com.dashbrr.service.apikey: "${RADARR_API_KEY}" # Optional for general/traefik
com.dashbrr.service.name: "Movies"
com.dashbrr.service.enabled: "true"
spec:
ports:
- port: 7878
selector:
app: radarrNotes:
- Dashbrr uses annotations for Kubernetes discovery because URLs and API-key placeholders are not valid Kubernetes label values.
- When Dashbrr runs inside Kubernetes, discovery uses in-cluster credentials automatically.
- Dashbrr discovers Services across all namespaces, so its ServiceAccount needs list/read access to Services cluster-wide.
- Traefik certificate expiry insights use the
traefik_tls_certs_not_afterPrometheus metric from/metrics. Make sure Traefik metrics are reachable from Dashbrr (same URL or a reachable:9100metrics port on the same host).
Minimal RBAC for in-cluster discovery:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: dashbrr-discovery
rules:
- apiGroups: [""]
resources: ["services"]
verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: dashbrr-discovery
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: dashbrr-discovery
subjects:
- kind: ServiceAccount
name: dashbrr
namespace: your-namespaceServices can be configured using YAML or JSON files:
services:
radarr:
- url: "http://radarr:7878"
apikey: "${RADARR_API_KEY}"
name: "Movies" # Optional
sonarr:
- url: "http://sonarr:8989"
apikey: "${SONARR_API_KEY}"
name: "TV Shows"
prowlarr:
- url: "http://prowlarr:9696"
apikey: "${PROWLARR_API_KEY}"When using environment variables for API keys/tokens (${SERVICE_API_KEY}), the following naming convention is used:
DASHBRR_AUTOBRR_API_KEYDASHBRR_BAZARR_API_KEYDASHBRR_GENERAL_API_KEY(optional)DASHBRR_JELLYFIN_API_KEYDASHBRR_LIDARR_API_KEYDASHBRR_MAINTAINERR_API_KEYDASHBRR_NZBGET_API_KEYDASHBRR_OVERSEERR_API_KEYDASHBRR_PLEX_API_KEYDASHBRR_PROWLARR_API_KEYDASHBRR_QUI_API_KEYDASHBRR_RADARR_API_KEYDASHBRR_READARR_API_KEYDASHBRR_SABNZBD_API_KEYDASHBRR_SONARR_API_KEYDASHBRR_TAILSCALE_API_KEYDASHBRR_TRAEFIK_API_KEY(optional)DASHBRR_UPTIMEKUMA_API_KEY
Discovery/import currently supports these service type keys:
autobrrbazarrgeneraljellyfinlidarrmaintainerrnzbgetoverseerrplexprowlarrquiradarrreadarrsabnzbdsonarrtailscaletraefikuptimekuma
- API keys can be provided via environment variables for enhanced security
- Use
--mask-secretswhen exporting configurations to avoid exposing API keys - Exported configurations with masked secrets will use environment variable references
- Ensure proper access controls for configuration files containing sensitive information
-
Service Discovery:
- Use consistent naming conventions for services
- Group related services in the same namespace/network
- Use environment variables for API keys
-
Configuration Management:
- Keep a backup of your configuration
- Use version control for configuration files
- Document any custom service configurations
-
Kubernetes:
- Start from
docs/k8s_discovery_example.yamlfor RBAC + annotation shape. - Keep discovery credentials in environment variables on the Dashbrr workload, not inline in annotations.
- Start from