Install (Kubernetes / Helm)
A Helm chart exists in the app source at deploy/helm/channelwatch/. This page documents what that chart actually shows today.
If you want the simplest deployment path, the Docker Compose install is still the lighter-weight option.
Prerequisites
Section titled “Prerequisites”Current chart assumptions:
- a Kubernetes cluster with Helm available
- a PersistentVolume or StorageClass that supports
ReadWriteOnceaccess mode - network access from the pod to your Channels DVR server
Install from the chart source
Section titled “Install from the chart source”The source-backed chart can be installed from a checked-out ChannelWatch repository:
helm install channelwatch ./deploy/helm/channelwatch \ --namespace channelwatch \ --create-namespaceThis docs page does not assume a published Helm repository URL. If the project later publishes one, check the release notes or app repo for the authoritative install path.
Example install overrides
Section titled “Example install overrides”The chart’s current values.yaml includes these defaults:
replicaCount: 1service.type: ClusterIPservice.port: 8501persistence.enabled: truepersistence.size: 10Gi- probe paths for
/healthz/startup,/healthz/ready, and/healthz/live
Example install with a few overrides:
helm install channelwatch ./deploy/helm/channelwatch \ --namespace channelwatch \ --create-namespace \ --set persistence.size=20Gi \ --set config.tz="America/New_York" \ --set config.channelsDvrHost="192.168.1.50" \ --set config.channelsDvrPort="8089"After the pod reaches Running, forward the service locally if needed:
kubectl port-forward -n channelwatch svc/channelwatch 8501:8501Then open http://localhost:8501 and complete the web-based setup.
Key values
Section titled “Key values”The current chart exposes these values in values.yaml:
| Value | Default | Description |
|---|---|---|
image.repository | coderluii/channelwatch | Container image repository |
image.tag | latest | Image tag |
image.pullPolicy | IfNotPresent | Image pull policy |
replicaCount | 1 | Must remain 1 |
persistence.enabled | true | Enable PVC for /config |
persistence.size | 10Gi | PVC size |
persistence.storageClassName | "" | StorageClass name; empty uses the cluster default |
service.type | ClusterIP | Service type |
service.port | 8501 | Service port |
config.tz | America/New_York | Container timezone |
config.channelsDvrHost | "" | Single-DVR host passed through the chart config map |
config.channelsDvrPort | "8089" | Single-DVR port passed through the chart config map |
config.channelsDvrServers | "" | Raw multi-DVR env payload if you prefer the env-driven server list |
config.disableAuth | "false" | Disable auth toggle passed via env |
resources | {} | Container resource requests and limits |
secretConfig.apiKey | "" | Shared API key secret |
secretConfig.adminUser | "" | Optional bootstrap admin username |
secretConfig.adminPass | "" | Optional bootstrap admin password |
Example values.yaml
Section titled “Example values.yaml”replicaCount: 1
image: repository: coderluii/channelwatch tag: latest pullPolicy: IfNotPresent
persistence: enabled: true size: 20Gi storageClassName: "local-path"
service: type: LoadBalancer port: 8501
config: tz: America/Chicago channelsDvrHost: "192.168.1.50" channelsDvrPort: "8089"
secretConfig: apiKey: "replace-me"
resources: requests: memory: "64Mi" cpu: "50m" limits: memory: "256Mi" cpu: "500m"Apply a custom values file with:
helm install channelwatch ./deploy/helm/channelwatch \ --namespace channelwatch \ --create-namespace \ -f values.yamlHealth probes
Section titled “Health probes”The current chart wires probes directly to the app’s health endpoints:
| Probe | Path | Purpose |
|---|---|---|
| Liveness | /healthz/live | Basic process alive check |
| Readiness | /healthz/ready | Monitoring readiness summary for configured DVRs |
| Startup | /healthz/startup | Startup completion gate |
Equivalent raw manifest example:
livenessProbe: httpGet: path: /healthz/live port: 8501 initialDelaySeconds: 0 periodSeconds: 30 timeoutSeconds: 3 failureThreshold: 3
readinessProbe: httpGet: path: /healthz/ready port: 8501 initialDelaySeconds: 0 periodSeconds: 10 timeoutSeconds: 3 failureThreshold: 3
startupProbe: httpGet: path: /healthz/startup port: 8501 initialDelaySeconds: 0 periodSeconds: 5 timeoutSeconds: 3 failureThreshold: 30/api/health also exists for a higher-level service summary, but the chart uses the /healthz/* endpoints for Kubernetes-native probes.
Upgrading
Section titled “Upgrading”Upgrade from the same chart source:
helm upgrade channelwatch ./deploy/helm/channelwatch \ --namespace channelwatch \ -f values.yamlChannelWatch migrates /config/settings.json on startup and writes timestamped backups under /config/backups/ before migration work runs.
Uninstalling
Section titled “Uninstalling”helm uninstall channelwatch --namespace channelwatchCurrent limits
Section titled “Current limits”- Multi-replica deployments are blocked by chart validation and are unsupported by the app design.
- This page does not claim a separately published Helm repository.
- mDNS discovery limits still apply on Kubernetes networks; see mDNS Auto-Discovery.
Next steps
Section titled “Next steps”- Install (Docker Compose) — the simplest deployment path
- First-Run Configuration — add your Channels DVR server and configure alerts
- Health Probes — detailed probe behavior and Prometheus metrics
- mDNS Auto-Discovery — why discovery is usually a manual-add workflow on Kubernetes