Skip to main content
This guide takes you from nothing to live view and 24/7 recording on your LAN, then optionally pairs the node with a cloud account for remote access.

Prerequisites

  • A Linux box with Docker and Docker Compose. A NUC or other mini-PC, a Raspberry Pi 5, or a NAS that runs Docker all work. Images are published for amd64 and arm64.
  • A disk with room for recordings. Budget roughly 1–2 GB per hour per 1080p camera — see hardware and disk sizing.
  • At least one camera with an RTSP URL. See Adding cameras for brand-specific URL patterns.
WebRTC needs network_mode: host, which only works fully on Linux. Docker Desktop on macOS or Windows will run the stack, but remote live view will be degraded. Use a Linux host for full functionality.

Start the node

1

Download the compose file

2

Create the data directories

Recordings land in data/recordings. If you want them on a bigger disk, mount that disk there before starting.
3

Start the stack

This starts two containers: go2rtc (streaming) and node (the Nightjar service). Both use host networking.
4

Open the local UI

Open http://<host>:8080 in a browser on your LAN. Replace <host> with the machine’s IP or hostname. The go2rtc admin UI is also available at http://<host>:1984 if you ever need to debug streams.

Add your first camera

1

Find your camera's RTSP URL

Every brand has its own URL pattern. For a Reolink camera it looks like:
See Adding cameras for Amcrest, Dahua, Hikvision, and Ubiquiti patterns.
2

Add it in the local UI

In the UI at :8080, add a camera with a name and the RTSP URL. Add the substream URL too if the camera has one — motion detection runs on it, and it is much lighter. Camera credentials in these URLs never leave the node.
3

Verify live view

The camera tile should show live video within a few seconds. Recording starts automatically: 60-second segments written to data/recordings/<cameraId>/<YYYYMMDD>/.
If the stream does not come up, test the URL with ffprobe or VLC first — see troubleshooting.

Optional: pair with the cloud

Pairing adds remote live view and cloud event history. It is optional — everything above works local-only, forever.
1

Create an account

Sign up free at app.nightjar.ca.
2

Enter the claim code

The local UI at :8080 shows a 6-character claim code. Enter it in the app to claim the node. Codes expire after 15 minutes, but the node automatically fetches a fresh one, so the UI always shows a working code.
3

Done

The node connects outbound to the cloud — no port forwarding, no firewall changes. Your cameras appear in the app, with live view over WebRTC and event clips as they happen. See Remote access for how this works and what data leaves your network.

Next steps

Recording and events

Retention defaults, motion detection, and AI events.

Configuration reference

Everything in config.json and the environment variables.