Setting Up Your Virtual Node
Host Requirements
Virtual nodes are packaged as a ready-to-use Docker image. Before installing one, make sure your system meets the following prerequisites:
- Host system with Docker installed (Windows, Mac, Linux)
- Network access to your building automation devices
- Internet access to connect with the Novant Cloud
- Admin rights on the host system
Resource Requirements
Virtual nodes run as containerized services and should be sized based on expected load. The table below outlines baseline and higher-capacity configurations to help you choose appropriate system resources before deployment.
| Minimum | High Capacity |
|---|---|
| 1-2 vCPU | 4 vCPU |
| 4 GB RAM | 16-32 GB RAM |
| 8 GB Storage | 32 GB Storage |
Configure with Docker Compose
The easiest way to run a virtual node is with Docker Compose, which keeps all settings in a single file.
- Create a folder on your system for the virtual node (for example:
~/novant-node/). - Inside that folder, create a file named
docker-compose.yaml. - Add the following content:
version: "3"
services:
novant-vnode:
image: ghcr.io/novant-io/vnode-base:0.4.2
platform: linux/amd64
restart: always
network_mode: host
volumes:
- {host_data_dir}:/data/Key Things to Know
Platform (CPU architecture): Virtual nodes support
linux/amd64,linux/arm64, andlinux/arm. Most systems useamd64. If your host uses an ARM-based CPU, update theplatformvalue to match — this avoids slower emulation.Storage location: Replace
{host_data_dir}with a folder on your host machine where data can be saved. This folder must be non-volatile so data isn’t lost when the container restarts. See the platform-specific install guides for example paths.Network mode:
network_mode: hostis required for full network access, including BACnet device discovery and broadcast-based protocols. This mode is only supported on Linux. On Windows and Mac, Docker Desktop runs containers inside a virtual machine, which meansnetwork_mode: hostdoes not provide true host network access. The node will still function, but discovery features that rely on broadcast traffic (such as BACnet Who-Is) may not work. In those environments, devices may need to be added manually by IP address.Automatic restart:
restart: alwaysis required so the container restarts automatically after a firmware update. Without this, the node will stay down after an update until manually restarted.
License Installation
Before starting your virtual node, you’ll need to install its license so it can connect to Novant Cloud.
In the Novant Cloud interface, go to your project’s Settings > Nodes tab.
Copy the license text shown for your virtual node.
On your host system, create a folder for secrets (if it doesn’t already exist) and add the license file:
mkdir -p {host_data_dir}/secrets/Paste the license content into:
{host_data_dir}/secrets/node.license
Start the Container
Navigate to the folder where you created
docker-compose.yaml (e.g.,
~/novant-node/):
cd ~/novant-node
docker compose up -dDocker Compose looks for docker-compose.yaml in the
folder you run it from. If your file is in a different folder, point to
it with -f:
docker compose -f /path/to/docker-compose.yaml up -dStopping and Restarting
You can manage the container at any time with Docker Compose commands
(run them from the same folder as your
docker-compose.yaml):
# Stop the container (shuts it down, keeps data intact)
docker compose down
# Restart the container (useful after edits or updates)
docker compose restart
# Bring it back up (if it was stopped)
docker compose up -dPost-Installation Verification
| Check | What to Verify |
|---|---|
| Node status | Log into your Novant project, go to the Nodes tab, and confirm your node appears as “Online.” |
| Network connectivity | Confirm the node can reach building automation devices and has
outbound access to node.novant.io. |
| Protocol communication | Test BACnet, Modbus, or other protocol communication and verify device discovery and data collection are working. |
If your node is not coming online or you’re having trouble communicating with devices, see the Troubleshooting guide.