Install on Bare-Metal Linux
ChannelWatch is primarily deployed as a Docker container. These steps show a direct Linux host install when you cannot or do not want to run Docker. ChannelWatch does not have a native package manager installer.
Before you start
Section titled “Before you start”Docker is the primary and best-tested deployment path. If Docker is an option on your host, use Install (Docker Compose) instead.
Use this page when you need a direct Linux service managed by systemd.
You will need:
- A recent Linux distribution with
systemd - Python 3 and
venv - A local ChannelWatch checkout or release artifact on disk
- A dedicated config path, such as
/opt/channelwatch/config
Prepare the host
Section titled “Prepare the host”Create a dedicated service account and working directory, then build a Python virtual environment:
sudo useradd --system --home /opt/channelwatch --shell /usr/sbin/nologin channelwatchsudo mkdir -p /opt/channelwatch /opt/channelwatch/configsudo chown -R channelwatch:channelwatch /opt/channelwatch
python3 -m venv /opt/channelwatch/.venv/opt/channelwatch/.venv/bin/pip install --upgrade pipInstall the application into that environment using the release artifact or source checkout you already have on the host.
Run ChannelWatch directly
Section titled “Run ChannelWatch directly”The same Python entrypoint used by the container is available on bare metal:
/opt/channelwatch/.venv/bin/python -m channelwatch.mainSet a dedicated config path so ChannelWatch writes settings, logs, and backups outside the application code directory.
Create a systemd service
Section titled “Create a systemd service”Use a unit like this as a starting point:
[Unit]Description=ChannelWatchAfter=network-online.targetWants=network-online.target
[Service]User=channelwatchGroup=channelwatchWorkingDirectory=/opt/channelwatchEnvironment=CONFIG_PATH=/opt/channelwatch/configEnvironment=TZ=America/New_YorkExecStart=/opt/channelwatch/.venv/bin/python -m channelwatch.mainRestart=on-failureRestartSec=5
[Install]WantedBy=multi-user.targetSave it as /etc/systemd/system/channelwatch.service, then reload and start the service:
sudo systemctl daemon-reloadsudo systemctl enable --now channelwatchOpen the web UI
Section titled “Open the web UI”By default, ChannelWatch serves the web UI on port 8501:
http://your-linux-host:8501Then complete First-Run Configuration.
Upgrading
Section titled “Upgrading”Stop the service, update your local ChannelWatch code or artifact, refresh Python dependencies if needed, then start the service again.
Because this path runs outside Docker, make sure your backup routine includes /opt/channelwatch/config before you upgrade.