Troubleshooting#
This article contains troubleshooting steps for known issues. If you encounter a problem not listed here, check the GitHub Issues board or file a new ticket after reviewing the Contributing guidelines.
1. Build Fails During make build#
Issue
make build exits with an error during Docker image construction.
Reason
Docker Engine or Docker Compose is not installed, not running, or the host cannot reach the internet to download dependencies.
Solution
Verify Docker Engine and Docker Compose are installed and running:
docker version docker compose version
Confirm your host has internet access and that any proxy settings are correctly configured. See Configure Docker.
2. Containers Keep Restarting#
Issue
One or more containers enter a restart loop after make up.
Solution
Check which container is restarting and review its logs:
docker ps
docker logs -f <container_name>
Common causes:
Missing or incorrectly downloaded AI models. Re-run the model download steps in Build from Source.
Invalid
.envvalues (for example,HOST_IPnot set, or ICE server credentials not meeting length requirements).
3. No Advertisements Displayed in the Browser#
Issue
The Web UI loads but no advertisements appear.
Reason
Detections are not reaching the Web UI via MQTT, or detected labels are not mapped in ProductAssociations.csv.
Solution
Confirm that PID is publishing detections to MQTT by checking PID container logs:
docker logs -f <pid_container_name>
Verify that the labels detected by PID match entries in
web-ui/ProductAssociations.csv(case-insensitive match).Check AIG and ASe container logs for errors:
docker logs -f <aig_container_name> docker logs -f <ase_container_name>
Confirm confidence and recency thresholds in
.envare not set too restrictively (OBJECT_CONFIDENCE_THRESHOLD,OBJECT_RECENCY_FRAME_COUNT).
4. Slow Ad Generation on Low-Resource Systems#
Issue
Ad generation is slow on low-resource systems.
Reason
Ad generation (AIG) runs on the GPU. When Chrome also uses GPU acceleration, the two compete for GPU resources, leaving insufficient capacity for AIG and causing slow ad generation rendering instability.
Solution
Use Google Chrome.
On low-resource systems, launch Chrome with GPU acceleration disabled:
google-chrome --process-per-site --disable-plugins --disable-gpu https://localhost:5000
Alternatively, in Chrome go to Settings → System and disable:
Continue running background apps when Google Chrome is closed
Use graphics acceleration when available
Then relaunch Chrome.
Verify that
HOST_IP,MTX_WEBRTCICESERVERS2_0_USERNAME, andMTX_WEBRTCICESERVERS2_0_PASSWORDare correctly set in.env.
5. Model Download Fails#
Issue
The YOLO11s or AIG model download step exits with an error.
Solution
Confirm internet access and proxy settings.
Ensure Python virtual environment creation succeeds (
python3 -m venv).For Hugging Face downloads, set the
HF_HUB_ENABLE_HF_TRANSFER=1environment variable as documented in Build from Source.Ensure sufficient disk space (500 GB free recommended).
6. Video Not Rendering in Browser (MediaMTX no space left on device)#
Issue
The browser page loads, but video does not render. MediaMTX logs show no space left on device (ENOSPC).
Reason
In this scenario, ENOSPC is usually not caused by hard drive capacity. It is commonly caused by exhausting Linux host resources such as inotify watches, inotify instances, open file descriptor limits, or filesystem inodes.
Solution
Confirm current inotify limits on the host:
cat /proc/sys/fs/inotify/max_user_watches
cat /proc/sys/fs/inotify/max_user_instances
Increase the limits by editing sysctl configuration:
sudo nano /etc/sysctl.conf
Append the following values at the end of the file:
fs.inotify.max_user_watches=1048576
fs.inotify.max_user_instances=10000
Apply the updated kernel parameters immediately:
sudo sysctl -p
Redeploy the Digital Signage stack and verify MediaMTX is healthy:
make up
docker logs -f mediamtx
If needed, also verify inode availability (df -i) and open file limits (ulimit -n) on the host.