IoT & infrastructureIn use
Uracam
Live video from off-grid sites over cellular, without a SaaS subscription.
The problem
Remote sites often sit behind carrier-grade NAT on LTE connections, with no way to accept inbound traffic. Commercial camera clouds work around that, but charge a recurring fee per camera.
Approach
A Raspberry Pi at each site pulls the RTSP stream from the local IP camera and keeps a WireGuard tunnel open to a central VPS. The VPS runs a MediaMTX relay and serves viewers over WebRTC, falling back to HLS when the connection degrades. A small Next.js dashboard sits in front, behind authentication.
[ IP camera (RTSP) ]
│ LAN
[ Raspberry Pi edge unit ]
│ WireGuard tunnel over LTE
[ VPS ]
├── MediaMTX relay (WebRTC / HLS)
├── Nginx reverse proxy + auth
└── Next.js dashboardKey decisions
- A WireGuard overlay with persistent keepalives gets around carrier NAT without any inbound port forwarding at the site.
- An SSH jump host with per-unit port offsets allows out-of-band access to each camera for debugging.
- The dashboard runs directly on the VPS under PM2, with no third-party cloud dependencies.
Highlights
- Runs at several remote sites in Southern Africa.
- Viewers get low-latency WebRTC, with automatic HLS fallback on poor links.
- Video stays on infrastructure I control, with no per-camera fees.
Stack
- Raspberry Pi
- WireGuard
- MediaMTX
- WebRTC
- HLS
- Next.js
- TypeScript