Skip to main content

Dashboard

The frontend publishes 127.0.0.1:8443 and serves HTTPS. Keep this loopback binding unless a separately reviewed administrative access layer protects it. Frontend nginx proxies API traffic to the backend on the private dashboard network.

Campaign traffic

Traefik publishes ports 80 and 443. In production, each campaign uses an approved hostname and Traefik obtains certificates through the configured DNS challenge. In development, routing uses the generated local configuration and self-signed certificates. The optional webcam feature additionally requires outbound DNS and UDP access to Google’s public STUN service on port 19302 from both the target browser environment and the operator’s dashboard browser. Webcam media uses a direct WebRTC path when ICE negotiation succeeds; there is no configured TURN relay fallback.

Docker networks

  • bitm-dashboard connects frontend and admin backend.
  • bitm-network connects control-plane and campaign routing components.
  • docker-control is an internal network for admin Docker operations.
  • traefik-control is an internal network for Traefik discovery.
  • Additional campaign networks are created dynamically for isolation.

Forwarded client addresses

Only headers from explicitly trusted proxy paths are accepted when resolving client addresses. Do not add arbitrary public proxy hosts to TRUSTED_DASHBOARD_PROXY_HOSTS.

Certificates

setup creates local certificate files when missing. The private key remains host-readable for the physical-machine operator and is copied into the frontend image with runtime ownership and restrictive mode. Do not loosen the host key mode to solve container startup problems; rebuild through the CLI so the Dockerfile applies the correct in-image ownership.
Last modified on August 28, 2026