Skip to main content

Linux Deployment

Tested on Ubuntu 22.04 LTS and Debian 12. Other distros work; install commands differ.

Prerequisites

# Docker Engine (official repo, not the distro version)
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
newgrp docker

# Docker Compose v2 ships with the engine on this install path
docker compose version

Optional: NVIDIA GPU support

# NVIDIA Container Toolkit
distribution=$(. /etc/os-release; echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

sudo apt update && sudo apt install -y nvidia-container-toolkit
sudo systemctl restart docker

# Verify
docker run --rm --gpus all nvidia/cuda:12.4.0-base-ubuntu22.04 nvidia-smi

Run Waldo

git clone https://github.com/oldhero5/waldo.git
cd waldo
cp .env.example .env
# Edit .env to set passwords + APP_ENV=production
docker compose --profile nvidia up -d

Reverse proxy

For HTTPS, terminate at Caddy or Nginx. Caddyfile example:

waldo.example.com {
reverse_proxy localhost:8000
}

Caddy will auto-provision a Let's Encrypt cert.

Systemd

To start Waldo on boot, use a tiny systemd unit:

# /etc/systemd/system/waldo.service
[Unit]
Description=Waldo
After=docker.service
Requires=docker.service

[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/opt/waldo
ExecStart=/usr/bin/docker compose --profile nvidia up -d
ExecStop=/usr/bin/docker compose down

[Install]
WantedBy=multi-user.target
sudo systemctl enable --now waldo