Skip to content

Environment Bootstrap Config

The web UI is the primary configuration surface for DVR servers. Use this page only when you need a headless or compose-managed bootstrap path.

PathStatusUse it when
First-run wizard and Settings UISupported and recommendedYou can open the browser UI and want validation before settings are saved.
CHANNELS_DVR_SERVERSSupportedYou want to seed one or more DVR entries from Docker Compose or another container environment.
/config/settings.jsonSupported with careYou manage config files directly and can keep valid JSON plus backups.
CHANNELS_DVR_HOST and CHANNELS_DVR_PORTLegacy compatibilityYou are carrying an older single-DVR install forward. These still work with startup warnings.
CW_DVR_<N>_*DeferredDo not use in v0.9.10.
/config/dvrs.yamlDeferredDo not use in v0.9.10.

CHANNELS_DVR_SERVERS accepts comma-separated entries in this form:

Name@host:port,Name@host:port

Example:

services:
channelwatch:
image: coderluii/channelwatch:0.9.10
container_name: channelwatch
init: true
network_mode: host
volumes:
- /opt/channelwatch:/config
environment:
TZ: "America/New_York"
CHANNELS_DVR_SERVERS: "Living [email protected]:8089,[email protected]:8089"
restart: unless-stopped

Behavior:

  • entries are parsed at startup into the saved dvr_servers list
  • matching existing DVRs keep their IDs and overrides where possible
  • manual DVR entries that are already in settings are preserved
  • saved /config/settings.json remains the runtime source of truth after bootstrap

Use static IP addresses or stable hostnames. ChannelWatch derives DVR identity from host and port, so changing either value creates a new DVR identity unless an existing saved ID is preserved by the merge path.

Older compose files may contain:

environment:
CHANNELS_DVR_HOST: "192.168.1.10"
CHANNELS_DVR_PORT: "8089"

Those variables still work in v0.9.10 so existing installs can start safely, but ChannelWatch logs startup warnings and recommends moving to CHANNELS_DVR_SERVERS, the web UI, or saved dvr_servers in /config/settings.json.

For a one-DVR compose file, the replacement is:

environment:
CHANNELS_DVR_SERVERS: "[email protected]:8089"

If you manage /config/settings.json yourself, make a backup first and keep the JSON valid:

{
"dvr_servers": [
{
"id": "dvr_17c621dc",
"name": "Living Room",
"host": "192.168.1.10",
"port": 8089,
"enabled": true,
"api_key": "",
"overrides": {},
"deleted_at": null
}
]
}

The web UI is safer because it validates values before saving and signals the core process to reload. If you edit the file manually, trigger a reload or restart the container and then verify the DVR appears in the UI.

Do not use these in ChannelWatch v0.9.10:

environment:
CW_DVR_1_NAME: "Living Room"
CW_DVR_1_HOST: "192.168.1.10"
CW_DVR_1_PORT: "8089"
dvrs:
name: "Living Room"
host: "192.168.1.10"
port: 8089

The v0.9.10 app changelog lists CW_DVR_<N>_* and /config/dvrs.yaml as deferred. If you see those names in older references, do not treat them as the shipped runtime startup path for this release.

The Helm chart is single-replica only in v0.9.10 and stores writable state under /config. Use Install (Kubernetes / Helm) for the chart values and keep secrets in Kubernetes Secrets. Do not assume the chart has a dedicated dvrs values block for CW_DVR_<N>_* or /config/dvrs.yaml.