Configuration¶
Overview¶
DUMB relies on the runtime configuration file /config/dumb_config.json to control its services, logging, API settings, and more. The copy at utils/dumb_config.json inside the image or source tree is the default template, not the file DUMB updates at runtime.
DUMB also supports environment variables, .env files, and Docker secrets. If the same setting is defined in multiple places, the precedence is as follows:
Configuration Precedence
- Docker Secrets (
/run/secrets/<ENV_VAR>, highest priority) - Container/Process Environment Variables
/config/.envdumb_config.json(lowest priority)
%%{ init: { "flowchart": { "curve": "basis" } } }%%
flowchart TD
SEC([Docker secrets])
ENV([Environment variables])
DOT([/config/.env])
CFG[(dumb_config.json)]
MERGE[Resolved configuration]
API[DUMB API]
PH[Process handler]
SVC[Managed services]
SEC ==> MERGE
ENV ==> MERGE
DOT ==> MERGE
CFG ==> MERGE
MERGE ==> API
API ==> PH
PH ==> SVC
Configuration File Structure¶
Be Careful When Modifying dumb_config.json
While DUMB is highly configurable via dumb_config.json,
some changes can cause failures during startup.
As such, it is not recommended to make modifications unless you fully understand their impact.
Below is a schematic of the main dumb_config.json sections. The ellipses
stand for nested service objects; copy the actual template or query the config
API when you need valid JSON.
{
"puid": 1000,
"pgid": 1000,
"tz": "",
"data_root": "/data",
"dumb": { ... },
"traefik": { ... },
"traefik_proxy_admin": { ... },
"cloudflared": { ... },
"cli_debrid": { ... },
"cli_battery": { ... },
"decypharr": { ... },
"infinidysk": { ... },
"emby": { ... },
"jellyfin": { ... },
"lidarr": { ... },
"phalanx_db": { ... },
"plex": { ... },
"tautulli": { ... },
"bazarr": { ... },
"pulsarr": { ... },
"maintainerr": { ... },
"mediastorm": { ... },
"aiostreams": { ... },
"altmount": { ... },
"neutarr": { ... },
"profilarr": { ... },
"seerr": { ... },
"seerr_sync": { ... },
"postgres": { ... },
"pgadmin": { ... },
"prowlarr": { ... },
"rclone": { ... },
"riven_backend": { ... },
"riven_frontend": { ... },
"radarr": { ... },
"sonarr": { ... },
"whisparr": { ... },
"zilean": { ... },
"zurg": { ... }
}
Each section configures a specific service.
Below is a breakdown of some of the sections:
General Settings¶
User & Timezone¶
"puid": 1000,
"pgid": 1000,
"tz": "",
"data_root": "/data"
- puid / pgid – Define the user and group IDs for container execution.
- tz – Set the timezone (e.g.,
America/New_York). - data_root – Base path for service data directories.
Root User Not Allowed
puid/pgid cannot be set to 0 (root). DUMB requires a non-root user for security reasons.
Logging Settings¶
Located in dumb:
"log_level": "INFO",
"log_name": "DUMB",
"log_dir": "/log",
"log_count": 2,
"log_size": "10M",
"color_log": true
- log_level – Set the logging verbosity (
DEBUG,INFO,WARNING,ERROR). - The DUMB API service page also provides a capability-gated temporary DEBUG override. It applies immediately without a restart and does not persist or alter managed-service log levels.
- log_dir – Directory where logs are stored.
- log_count – Number of rotated logs to retain.
- log_size – Maximum log file size before rotation.
- color_log – Enables colored log output.
Integration Tokens & Credentials¶
Located in the dumb section of dumb_config.json:
"plex_token": "",
"plex_address": "",
"github_token": "",
"github_username": ""
Plex Integration¶
plex_token– This token is used by Riven backend for interacting with your Plex account. It allows features such as using watchlists and sending library scan requests to the Plex server.plex_address– The internal or external URL of your Plex server (e.g.,http://127.0.0.1:32400).
These values are used automatically by Riven when setting up the Riven Backend.
GitHub Integration¶
github_token– Used to increase GitHub API rate limits and unlock access to private/sponsored repositories such aszurgwhen associated with your GitHub account.github_username– (Reserved for future use) Will support additional GitHub-sourced services and contributor personalization.
To create a GitHub token:
- Go to GitHub Developer Settings → Tokens (Classic)
- Click Generate new token (classic)
-
Set an expiration and grant only the read access required by the repository you need. Public release checks normally require no token. Private or sponsored repositories require read access granted by that repository's owner; DUMB does not require package-write access.

-
Click Generate token and copy the token — it will only be shown once
- Add the token to
/config/.envor your container environment asDUMB_GITHUB_TOKEN=, or setdumb.github_tokenin/config/dumb_config.json.
Service Configuration¶
Each DUMB-integrated service is configured within its own section of dumb_config.json.
See the individual service pages for in-depth configuration details:
- DUMB API
- DUMB Frontend
- Traefik
- Traefik Proxy Admin
- Cloudflared
- Decypharr
- CLI Debrid
- InfiniDysk
- AltMount
- Plex Media Server
- Jellyfin
- Emby
- Seerr
- Sonarr
- Radarr
- Lidarr
- Prowlarr
- Whisparr
- NeutArr
- Profilarr
- Bazarr
- Pulsarr
- Maintainerr
- mediastorm
- AIOStreams
- pgAdmin 4
- PostgreSQL
- rclone
- Riven Backend
- Riven Frontend
- Zilean
- Zurg
core_service (Arr integration)¶
Some services (notably the Arrs) include a core_service field to tell DUMB
which core workflow(s) they should attach to. This field accepts a single value,
a comma-separated string, or a list.
See the Core Service Routing reference for detailed behavior and examples.
Allowed values:
""(blank): no core integrationdecypharr: route Arr automation through Decypharrinfinidysk: route Arr automation through InfiniDyskaltmount: route Arr automation through AltMount
To combine workflows, use a list or a comma-separated core_service.
Examples:
"sonarr": {
"instances": {
"Default": {
"core_service": "decypharr"
}
}
}
"radarr": {
"instances": {
"Default": {
"core_service": "infinidysk"
}
}
}
"whisparr": {
"instances": {
"Combined": {
"core_service": ["decypharr", "infinidysk", "altmount"]
}
}
}