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.
Supported setup paths in v1.6.5
Section titled “Supported setup paths in v1.6.5”| Path | Status | Use it when |
|---|---|---|
| First-run wizard and Settings UI | Recommended | Use the first-run connection test, then manage saved servers in Settings. |
CHANNELS_DVR_SERVERS |
Supported with limits | Seed a fresh install with DVRs that do not need API keys. Read the override behavior below. |
/config/settings.json |
Supported with care | You manage config files directly and can keep valid JSON plus backups. |
CHANNELS_DVR_HOST and CHANNELS_DVR_PORT |
Legacy compatibility | You are carrying an older single-DVR install forward. These still work with startup warnings. |
CW_DVR_<N>_* |
Deferred | Do not use in v1.6.5. |
/config/dvrs.yaml |
Deferred | Do not use in v1.6.5. |
CHANNELS_DVR_SERVERS
Section titled “CHANNELS_DVR_SERVERS”CHANNELS_DVR_SERVERS accepts comma-separated entries in this form:
Name@host:port,Name@host:portExample:
services: channelwatch: image: coderluii/channelwatch:1.6.5 container_name: channelwatch init: true network_mode: host volumes: - /opt/channelwatch:/config environment: TZ: "America/New_York" CHANNELS_DVR_SERVERS: "Living Room@192.168.1.10:8089,Basement@192.168.1.20:8089" restart: unless-stoppedOn a fresh /config directory, the container entrypoint writes these entries to settings.json. Use Settings > General > DVR & App to confirm they were saved.
After confirming the saved entries, remove the DVR bootstrap variables from Compose and apply that Compose change with docker compose up -d. This recreates the service to change its environment; keep the same /config mount. Normal compatible in-app updates do not require this step.
Entries matching an existing host and port retain its ID and overrides. Other saved DVRs are kept. Use stable hostnames or IP addresses, and check notification routing if you replace an entry. The environment format has no API-key field; use the first-run manual form for a DVR that requires one.
Legacy single-DVR variables
Section titled “Legacy single-DVR variables”Older compose files may contain:
environment: CHANNELS_DVR_HOST: "192.168.1.10" CHANNELS_DVR_PORT: "8089"Those variables remain for compatibility and carry the same override caveat. Confirm the server is saved in Settings before removing them. For a new install, prefer the first-run wizard.
For a one-DVR compose file, the replacement is:
environment: CHANNELS_DVR_SERVERS: "Main@192.168.1.10:8089"Direct settings file edits
Section titled “Direct settings file edits”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 } ]}This is an excerpt, not a replacement for your complete settings file. Preserve unrelated fields and existing IDs. Do not replace encrypted key values with empty strings.
The web UI validates values before saving and restarts the monitoring core. For a manual file change, follow Hot Reload and verify the DVR appears in Settings and connects on the dashboard.
Deferred paths
Section titled “Deferred paths”Do not use these in ChannelWatch v1.6.5:
environment: CW_DVR_1_NAME: "Living Room" CW_DVR_1_HOST: "192.168.1.10" CW_DVR_1_PORT: "8089"The v1.6.5 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.
Kubernetes and Helm
Section titled “Kubernetes and Helm”The Helm chart is single-replica only in v1.6.5 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.
Next steps
Section titled “Next steps”- Adding DVR Servers - add and manage servers through the web UI
- Per-DVR Notification Routing - route event types to notification channels per server
- Hot Reload - understand what reloads and what needs restart