Install Dependencies
A complete guide to setting up your host machine for Visionaire4 — NVIDIA driver, Docker Engine, NVIDIA Container Toolkit, Docker Compose, and TimescaleDB.
Install Dependencies
Before you can run Visionaire4, your host machine needs a handful of system-level pieces in place: a working NVIDIA driver, Docker, the NVIDIA Container Toolkit, Docker Compose, and a database. This guide installs each of them in order. Follow it top to bottom on a fresh Ubuntu machine and you'll have a host that's fully ready for the Pre-requisite Installation guide.
Assumptions for this guide:
- OS: Ubuntu 22.04 or later (other Linux distributions follow similar steps)
- Access: sudo privileges
- Network: the machine can reach the public internet for package downloads
- GPU: an NVIDIA card is physically installed (skip section 2 if you're going CPU-only)
1. Update the System
Always start with a clean, up-to-date package index:
sudo apt update && sudo apt upgrade -yReboot if the upgrade installed a new kernel:
sudo reboot2. NVIDIA Driver
Skip this section if you're running Visionaire4 in CPU mode.
Check that your GPU is detected
lspci | grep -i nvidiaYou should see your NVIDIA card listed. If nothing appears, confirm the card is seated correctly before continuing.
Remove any existing NVIDIA packages
Mixing driver versions causes hard-to-debug issues. Start clean:
sudo apt-get purge -y 'nvidia-*' 'libnvidia-*'
sudo apt-get autoremove -yInstall the recommended driver
Ubuntu can pick the right driver for your card automatically:
sudo ubuntu-drivers installOr, if you prefer to pin a specific version (Visionaire4 needs 525 or later):
sudo apt install -y nvidia-driver-535Verify
Once the machine is back, run:
nvidia-smiYou should see a table listing your GPU, driver version, and CUDA version. If it errors out, check dmesg | grep -i nvidia for clues.
3. Docker Engine
Visionaire4 ships as a Docker image, so Docker Engine is non-negotiable.
Remove old Docker packages
sudo apt-get remove -y docker docker-engine docker.io containerd runcAdd Docker's official repository
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullInstall Docker Engine, CLI, and the Compose plugin
sudo apt-get update
sudo apt-get install -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-pluginThe docker-compose-plugin package gives you docker compose (Compose v2) — that's all you need for the next sections.
Run Docker without sudo
Add your user to the docker group so you don't need to prefix every command with sudo:
sudo groupadd docker 2>/dev/null || true
sudo usermod -aG docker $USERLog out and log back in (or run newgrp docker) for the group change to take effect.
Verify
docker run --rm hello-world
docker compose versionThe first command pulls a tiny image and prints a "Hello from Docker!" message. The second prints the Compose v2 version.
4. NVIDIA Container Toolkit
This is what makes the --gpus all flag work — it lets Docker containers see your GPU. Skip this section if you're going CPU-only.
Add the NVIDIA repository
distribution=$(. /etc/os-release; echo $ID$VERSION_ID)
curl -fsSL 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 > /dev/nullInstall the toolkit
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkitConfigure Docker to use it
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart dockerVerify
Run a CUDA container and check it can see your GPU:
docker run --rm --gpus all nvidia/cuda:12.2.0-base-ubuntu22.04 nvidia-smiYou should see the same GPU table you got from running nvidia-smi on the host. If you do, the toolkit is working.
5. TimescaleDB
Visionaire4 stores events in a PostgreSQL-compatible database. TimescaleDB is a PostgreSQL extension optimized for time-series workloads — ideal for high-volume event ingestion. Running it as a Docker container is the simplest path.
Pull and run TimescaleDB
docker run -d \
--name timescaledb \
--restart always \
-e POSTGRES_PASSWORD=nfvisionaire123 \
-e POSTGRES_DB=postgres \
-e POSTGRES_USER=postgres \
-e PGDATA=/var/lib/postgresql/data/pgdata \
-p 5432:5432 \
-v /var/lib/postgresql/data:/var/lib/postgresql/data \
timescale/timescaledb:latest-pg18The timescale/timescaledb:latest-pg18 image is PostgreSQL 18 with the latest TimescaleDB pre-installed and ready to use. If you need to pin to a different PostgreSQL version, swap the tag (e.g. latest-pg17, latest-pg16).
Enable the TimescaleDB extension
Connect to the database and enable the extension on the schema you'll be using:
docker exec -it timescaledb psql -U postgres -d postgres \
-c "CREATE EXTENSION IF NOT EXISTS timescaledb;"Verify
docker exec -it timescaledb psql -U postgres -d postgres \
-c "SELECT extname, extversion FROM pg_extension WHERE extname = 'timescaledb';"You should see timescaledb listed with its version.
Add the TimescaleDB repository
sudo apt install -y gnupg postgresql-common apt-transport-https lsb-release wget
sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh
echo "deb https://packagecloud.io/timescale/timescaledb/ubuntu/ $(lsb_release -c -s) main" | \
sudo tee /etc/apt/sources.list.d/timescaledb.list
wget --quiet -O - https://packagecloud.io/timescale/timescaledb/gpgkey | \
sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/timescaledb.gpgInstall TimescaleDB
sudo apt update
sudo apt install -y timescaledb-2-postgresql-18Tune PostgreSQL for TimescaleDB
sudo timescaledb-tune --quiet --yes
sudo systemctl restart postgresqlEnable the extension
sudo -u postgres psql -d postgres \
-c "CREATE EXTENSION IF NOT EXISTS timescaledb;"Change the default password (nfvisionaire123) before exposing this database to anything beyond localhost.
You're Ready
If every verification step above passed, your host is fully prepared. You should now have:
- A working NVIDIA driver (
nvidia-smiworks) - Docker Engine and Docker Compose v2 (
docker run hello-worldworks) - NVIDIA Container Toolkit (
docker run --gpus all ... nvidia-smiworks) - TimescaleDB running on port
5432
Continue to the next guide to install Visionaire4 itself: