Repository contains 3 services:
signaling-server(Node.js): auth + signaling relayfrontend(Vite/TS): operator UIcar-video-client(Python): car-side WebRTC sender
python start.pyOptional:
python start.py --skip-updateWrappers:
- Linux/macOS:
./start.sh - Windows:
start.bat
start.py creates missing .env files from .env.example, installs dependencies (unless skipped), picks free ports, and runs all 3 services.
car-video-client supports only:
- RTSP cameras (
MEDIA_SOURCESlist, multiple per car) - local webcams (
MEDIA_SOURCESwithtype=webcam)
After selecting a car, frontend shows all of its camera tracks (up to 4 tiles now).
On source failures it uses a placeholder image (car-video-client/assets/no_signal.png).
- Set
signaling-server/.env:ALLOW_INSECURE_TOKENS=false - Use reachable Keycloak host/IP consistently in all services (for local:
http://127.0.0.1:8080) - Configure:
KEYCLOAK_JWKS_URL/KEYCLOAK_ISSUERin signalingKEYCLOAK_TOKEN_URL+ client credentials in car clientVITE_KEYCLOAK_URLin frontend
signaling-server/.env:ALLOW_INSECURE_TOKENS=truefrontend/.env:VITE_SKIP_KEYCLOAK=truecar-video-client/.env:KEYCLOAK_TOKEN_URL=andSIGNALING_AUTH_TOKEN=demo