Install a gateway
Use this procedure for a gateway that will stay at the site — Raspberry Pi 5, Intel NUC, or an Ubuntu/Debian box. The gateway talks to cameras on the LAN and tunnels video to the cloud over TCP 443.
What you will need
- The gateway unit: Pi 5 (8 GB) + PoE HAT, Intel NUC, or equivalent per Supported hardware.
- Power: PoE+ (802.3at) on the switch port, or 12 V DC injector + barrel jack.
- One terminated Cat6 drop from the gateway location back to a PoE-capable switch port.
- A pairing code from the admin: 6-character uppercase alphanumeric, 10-minute expiry (US-GW-1).
- Optional for first boot: USB keyboard, HDMI cable, a monitor.
Procedure
- Unbox the gateway and confirm the model matches the work order.
- Mount the gateway. Horizontal shelf, 600 mm above floor minimum, away from direct heat. For rack mounts use the vendor’s 1U or half-rack kit. Torque rack screws to 1.8 N·m.
- Connect Ethernet. Terminate the Cat6 drop with T568B at both ends. Test with a cable meter — end-to-end continuity on all 4 pairs, no shorts.
-
Apply power. For PoE+: plug the Cat6 into the gateway’s PoE-in RJ45 and bring up the switch port with PoE enabled. For DC: plug the 12 V barrel jack.
-
Wait for first boot. Pi 5 takes 30-45 seconds; NUC takes 20-30 seconds. The gateway’s front LED stays solid green when the WebSocket to the cloud is up.
-
Open a laptop on the same LAN. Run
ping <gateway-ip>. The IP comes from the site IP plan or DHCP lease table. -
Provision the gateway from your workstation. There is no NovaVMS-published OS image and no one-line installer script — the gateway host runs a clean Pi OS, Ubuntu 22.04+, or Debian 12, and you provision it over SSH with the repo script. From the NovaVMS repo on your laptop, run:
Terminal window ./scripts/deploy-gateway.sh provision <ssh-user>@<gateway-ip> --name "<Site-Gateway>"The script installs Go 1.25.5, downloads go2rtc, clones the repo into
/tmp/novavms-src, builds the gateway binary, and writes a systemd (Linux) or launchd (macOS) unit. Installs to/opt/novavms-gateway/novavms-gateway, config at/etc/novavms/gateway.yaml, data at/var/lib/novavms-gateway/. Seescripts/deploy-gateway.sh:81-222for the full sequence. -
Pair the gateway. Replace
<CODE>with the 6-character code from the admin:Terminal window ./scripts/deploy-gateway.sh pair <ssh-user>@<gateway-ip> <CODE>The script SSHes to the gateway and runs the local binary with
--pair <CODE>against the cloud URL already in/etc/novavms/gateway.yaml. On success the binary savesgateway_idandapi_keyback to that file, thendeploy-gateway.shstarts the systemd unit. -
Confirm the heartbeat. The admin’s Gateways page shows a green dot for this gateway within 30 seconds. Ask them to confirm.
- Close up. Lock the rack door or replace the shelf cover. Tag the gateway with its asset ID and the site code.
Variations
- Airgapped install. Pairing always requires a one-time round trip to the cloud (the cloud mints the
api_key), so a fully airgapped first boot is not supported. The closest workflow is bench-pair before shipping — see Zero-touch provisioning for a remote gateway. - Pre-provisioned gateway. If the unit was paired at the office, skip step 8 — power-on is all that is needed. Verify step 9 still passes.
- Silent pairing via QR. Not supported. Pairing is always a 6-character code entered on the gateway CLI; there is no QR ingestion path in the gateway binary or the camera input.
If this didn’t work
- If the LED is off, see Gateway won’t boot.
- If the LED blinks amber, see Gateway won’t pair.
- If the admin’s Gateways page still shows the gateway as Offline after step 9, see Gateway shows Offline.