Skip to content

API Keys

ChannelWatch stores a separate API key for each Channels DVR server you add. The key field is masked in the web UI so the value isn’t visible after you save it. The encrypted value is stored in /config/settings.json inside the container.

Each DVR server entry has its own API key field. This lets you use different credentials for each server without sharing a single key across your entire setup.

The API key is optional if your Channels DVR server does not require authentication. When left blank, ChannelWatch connects without a key.

  1. Go to Settings > DVR Servers.
  2. Select the server you want to update.
  3. Enter the API key in the API Key field.
  4. Click Save. The key is re-encrypted for storage in /config/settings.json and masked in the UI immediately.

For headless or automated deployments, you can supply per-DVR API keys through environment variables. The format uses a 1-based index for each server:

environment:
CW_DVR_1_API_KEY: "your-dvr-api-key"
CW_DVR_2_API_KEY: "second-dvr-api-key"

If you need to change the API key for a specific DVR server (for example, after rotating credentials on the Channels DVR side):

  1. Go to Settings > DVR Servers.
  2. Select the server.
  3. Enter the new API key.
  4. Click Save.

The old value is overwritten immediately.

Rotating the encryption key used for stored DVR API keys

Section titled “Rotating the encryption key used for stored DVR API keys”

If you need to re-encrypt all stored DVR API keys with a new key file, use the shipped doctor command:

Terminal window
docker exec channelwatch channelwatch doctor rotate-encryption-key

The current implementation rotates /config/encryption.key, re-encrypts stored DVR api_key values with the new key, and keeps encryption.key.bak as a recovery copy when an older key existed. The CLI parser and tests in the app repo confirm this command is now a shipped path.

Older releases stored DVR credentials in plaintext in settings.json. In the current release family, stored DVR API keys can be migrated into encrypted form, with /config/encryption.key created or loaded as needed by the Fernet helper.

If you’re upgrading from a much older install, keep the backup set and the matching encryption key material together so restores remain usable.