NodeIntel is a self-hosted, real-time surveillance and telemetry dashboard. It connects remote client devices (phones, tablets, laptops) to a secure admin console, broadcasting live video, audio, GPS location, and system telemetry over a unified WebSocket/WebRTC layer.
- Target Node (Client): The device capturing sensor data. Delivered as a lightweight web app that runs in any modern browser.
- Admin Console (Deck): A centralized, secure dashboard used to view the live video feeds, listen to audio, send voice commands, and track targets on a live GPS map.
- WebSocket Relay (Server): A Node.js backend acting as the signaling and relay server for real-time data and commands.
NodeIntel is designed to run securely over the internet without complex firewall rules using Tailscale and Cloudflare.
- Tailscale Funnel: Exposes the local Node.js WebSocket relay server to the public internet securely.
- Cloudflare Pages: Hosts the static frontend interface (Client and Admin Deck), which automatically routes its connections to the Tailscale Funnel.
NodeIntel utilizes FIDO2 Passkeys alongside a 4-digit PIN for strong two-factor authentication on the admin panel, with all credentials stored locally.
-
Clone and Install:
git clone https://github.com/omwardhanM/NodeIntel.git cd NodeIntel npm install -
Generate Local SSL Certificates (Required for local sensor access):
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes -subj "/CN=NodeIntel" -
Start the Relay Server:
npm start
-
Connect:
- Local Network:
https://<YOUR_LOCAL_IP>:3000 - Admin Console:
https://<YOUR_LOCAL_IP>:3000/admin(Default PIN: 0192)
- Local Network:
- Start a Tailscale funnel on your server:
tailscale funnel --bg 3001 - Deploy the
public/folder to Cloudflare Pages. - Access your app via the Cloudflare Pages URL (e.g.,
https://nodeintel.pages.dev). The frontend automatically routes WebSockets to your Tailscale Funnel.