Skip to content

Ports and protocols

Every NovaVMS component listens on a specific port. This page lists them all so you can open firewalls or diagnose connectivity.

Component ports

PortProtocolComponentDirectionConfigurable viaNotes
443TCPFrontend / API ingress (Caddy)Inbound from browsers and gatewaysReverse-proxy configTLS terminates here in production.
5200TCPFrontend dev server (Vite)Inbound (dev only)vite.config.tsLocal development only.
8090TCPCloud backend REST API + WebSocket (local dev default)Inbound from browsers, gateways, service accountsSERVER_ADDRDev default 127.0.0.1:8090 (see cloud/internal/config/config.go:202). In production compose, SERVER_ADDR=0.0.0.0:8080 and the container listens on 8080 (see deploy.sh:111); Caddy reverse-proxies 443 → 8080.
8080TCPCloud backend (production container)Caddy → cloud upstreamSERVER_ADDRProduction container listens on 8080. Not exposed to host directly when a Caddy overlay is used.
8554TCPRTSP server (go2rtc, gateway side)Inbound from cameras and playback clientsgo2rtc configDirect-mode streaming on the gateway host. Cloud compose does NOT expose 8554.
8555UDPWebRTC mediaBidirectional with browsersgo2rtc config / cloud SFUMapped by docker-compose.prod.yml:49. ICE candidate transport.
11984TCPgo2rtc HTTP APILoopback onlyGO2RTC_ADDRStream management. Dev default. Not exposed publicly.
3478UDPTURN relay control (Pion)Inbound from browsers behind strict NATTURN_ADDRMapped by docker-compose.prod.yml:48. Used only when direct P2P fails.
49152 - 49252UDPTURN relay media portsBidirectionalTURN_RELAY_MIN_PORT, TURN_RELAY_MAX_PORTAllocate the whole range. Mapped by docker-compose.prod.yml:50.
5432TCPPostgreSQLInternal docker network only in prod; dev allows host mappingDATABASE_URLThe production compose does NOT publish 5432 to the host. Dev compose maps ${POSTGRES_PORT:-5432}:5432.
5434TCPPostgreSQL (dev override)Loopback onlyDATABASE_URLUsed when port 5432 is occupied on the dev host (see CLAUDE.md).
9000TCPMinIO S3 API (self-host dev only)Internal docker networkMINIO_ENDPOINT / S3_ENDPOINTShips in the self-host dev docker-compose.yml for local object storage. The Novalien-hosted production compose does NOT ship MinIO; it uses GCS or external S3.
9001TCPMinIO console (self-host dev only)Local browserMINIO_CONSOLE_PORTShould not be exposed to the public internet.

Firewall rules for a typical install

  • Browser -> cloud frontend: allow inbound TCP 443 on the public IP that serves novavms.novalien.com.
  • Browser -> WebRTC: allow inbound and outbound UDP 8555 and UDP 49152-49252 on the cloud server.
  • Gateway -> cloud: allow outbound TCP 443 on the gateway host (WebSocket + API over TLS).
  • Camera -> gateway: allow inbound TCP 554 (RTSP) and UDP 3702 (ONVIF WS-Discovery) on the gateway LAN.
  • Gateway -> cameras: allow outbound TCP 80, 443, 554, and the camera’s ONVIF port (often 2020) on the gateway host.
  • Cloud -> TURN: leave UDP 3478 inbound open on the cloud server for clients behind strict NAT.
  • Between cloud and database: loopback only, no external rule needed.