Skip to content

Install (Kubernetes / Helm)

ChannelWatch ships an official Helm chart for Kubernetes deployments. The chart wires up the Deployment, Service, PersistentVolumeClaim, ConfigMap, Secret, and health probes in a single install command.

  • Kubernetes 1.25+ cluster
  • Helm 3.10+
  • A PersistentVolume or StorageClass that supports ReadWriteOnce access mode
  • Network access from the pod to your Channels DVR server
Terminal window
helm repo add channelwatch https://coderluii.github.io/ChannelWatch
helm repo update
Terminal window
helm install channelwatch channelwatch/channelwatch \
--namespace channelwatch \
--create-namespace \
--set persistence.size=1Gi \
--set env.TZ="America/New_York"

This creates a channelwatch namespace and deploys the application with a 1 GiB persistent volume for configuration storage.

After the pod reaches Running state, forward the port to access the web UI:

Terminal window
kubectl port-forward -n channelwatch svc/channelwatch 8501:8501

Then open http://localhost:8501 and complete the first-run wizard.

The chart exposes these values for customization. Pass them with --set or in a values.yaml file:

ValueDefaultDescription
image.repositorycoderluii/channelwatchContainer image repository
image.tag"" (uses chart appVersion)Image tag; leave empty to track the chart’s pinned version
image.pullPolicyIfNotPresentImage pull policy
replicaCount1Must remain 1 (see single-replica note above)
persistence.enabledtrueEnable PVC for /config
persistence.size1GiPVC size
persistence.storageClass""StorageClass name; empty uses the cluster default
service.typeClusterIPService type (ClusterIP, NodePort, or LoadBalancer)
service.port8501Service port
env.TZUTCContainer timezone (IANA format)
resources.requests.memory64MiMemory request
resources.limits.memory256MiMemory limit
replicaCount: 1
image:
repository: coderluii/channelwatch
tag: ""
pullPolicy: IfNotPresent
persistence:
enabled: true
size: 2Gi
storageClass: "local-path"
service:
type: LoadBalancer
port: 8501
env:
TZ: "America/Chicago"
resources:
requests:
memory: "64Mi"
cpu: "50m"
limits:
memory: "256Mi"
cpu: "500m"

Apply with:

Terminal window
helm install channelwatch channelwatch/channelwatch \
--namespace channelwatch \
--create-namespace \
-f values.yaml

ChannelWatch v1.0 exposes three Kubernetes-idiomatic health endpoints. The Helm chart configures these automatically, but they are documented here for reference if you deploy via raw manifests.

ProbePathPurpose
Liveness/healthz/liveBasic process alive check. Returns 200 if the application can respond at all. Kubernetes restarts the pod if this fails.
Readiness/healthz/readyReturns 200 when at least one configured Channels DVR server is connectable. Traffic is withheld until this passes.
Startup/healthz/startupReturns 200 after the core has completed its initial load (config read, migration check, first DVR connection attempt). Prevents liveness/readiness checks from firing too early.

Example probe configuration for a raw Deployment manifest:

livenessProbe:
httpGet:
path: /healthz/live
port: 8501
initialDelaySeconds: 10
periodSeconds: 30
failureThreshold: 3
readinessProbe:
httpGet:
path: /healthz/ready
port: 8501
initialDelaySeconds: 15
periodSeconds: 10
failureThreshold: 6
startupProbe:
httpGet:
path: /healthz/startup
port: 8501
initialDelaySeconds: 5
periodSeconds: 5
failureThreshold: 24
Terminal window
helm repo update
helm upgrade channelwatch channelwatch/channelwatch \
--namespace channelwatch \
-f values.yaml

ChannelWatch migrates its configuration automatically on startup. A backup of your previous settings is written to /config/backups/ before any migration step runs.

Terminal window
helm uninstall channelwatch --namespace channelwatch