Repository navigation
Install with Docker
Vision Call publishes a ready-made image for both regular PCs and ARM boards such as the Raspberry Pi:
ghcr.io/anand34577/vision-call:latest
It works with Docker on Linux, Docker Desktop on Windows and macOS, and Podman.
docker run -d --name visioncall --restart unless-stopped \
-p 8443:8443 -p 8080:8080 -p 7882:7882/udp \
-v visioncall-data:/data \
ghcr.io/anand34577/vision-call:latestOn Windows PowerShell, put it on one line or replace each \ with a backtick (`).
Get the first admin password:
docker logs visioncall 2>&1 | grep -i passwordOpen https://<this-computer's-ip>:8443 from any device on your network and sign in as admin.
Download the compose file and start it:
curl -fsSL https://raw.githubusercontent.com/anand34577/vision-call/main/docker-compose.yml -o docker-compose.yml
docker compose up -d
docker compose logs app | grep -i passwordOn Windows PowerShell, download it with:
irm https://raw.githubusercontent.com/anand34577/vision-call/main/docker-compose.yml -OutFile docker-compose.ymlTo change a setting, create a file called .env next to docker-compose.yml with the lines you need (see Configuration or the full list in .env.example), then run docker compose up -d again.
To pin a version instead of following latest, add VISIONCALL_VERSION=v1.0.1 to .env.
| Port | Purpose |
|---|---|
8443/tcp |
The web app over HTTPS. Browsers need HTTPS for camera and microphone. |
8080/tcp |
The web app over plain HTTP. Used by the Android app and health checks. |
7882/udp |
Audio and video for group calls. |
You can change the port on the left of 8443:8443 or 8080:8080 freely, for example -p 9443:8443. The UDP port is different: both numbers must match, and the app must know it. To use 7000, set -e WEBRTC_UDP_PORT=7000 -p 7000:7000/udp.
Everything (database, uploaded files, the certificate and the session key) is stored in the visioncall-data volume. Removing and recreating the container keeps it. To remove the data as well, run docker volume rm visioncall-data.
Prefer a folder you can see? Use -v ./visioncall-data:/data instead. The container runs as user ID 10001, so give it the folder first:
mkdir visioncall-data && sudo chown 10001:10001 visioncall-dataMost networks don't need this. Add it only if calls fail between devices on different subnets or across a VPN mesh (see Networking and Firewall).
-
Add these lines to
.env, using this computer's LAN IP and a long random secret:EXTERNAL_IP=192.168.1.50 TURN_HOST=192.168.1.50:3478 TURN_SECRET=put-a-long-random-string-here -
Start the relay alongside the app:
docker compose --profile turn up -d
The relay uses host networking, which works on Linux. On Docker Desktop, run coturn directly on the host instead.
docker compose pull && docker compose up -dOr with plain docker run:
docker pull ghcr.io/anand34577/vision-call:latest
docker rm -f visioncall
# then run the same "docker run" command againYour data stays in the volume. See Backups and Upgrades for backups.
git clone https://github.com/anand34577/vision-call.git
cd vision-call
docker build -t visioncall .Then use visioncall instead of ghcr.io/anand34577/vision-call:latest in the commands above.
Getting started
Install
Set up
Run it
Develop