Hi there! Recently I’ve been setting up a self-hosted instance of matrix, using Synapse in docker, but I’ve been struggling to get voice chat working, could anyone give me some pointers? It looks like I need something called a TURN server, but I can’t find any good instructions to set this up, or if this is actually what I need to enable voice chat.
Thank you so much to any responses!
Edit: this is what my compose file looks like (with some information ommitted)
services:
synapse:
image: ghcr.io/element-hq/synapse:latest
restart: unless-stopped
environment:
- SYNAPSE_CONFIG_PATH=/data/homeserver.yaml
volumes:
- ./files:/data
depends_on:
- db
ports:
- 8008:8008/tcp
networks:
- npm_proxy
db:
image: docker.io/postgres:15-alpine
environment:
- POSTGRES_USER=**Ommitted**
- POSTGRES_PASSWORD=**Ommitted**
- POSTGRES_INITDB_ARGS=--encoding=UTF-8 --lc-collate=C --lc-ctype=C
volumes:
- ./schemas:/var/lib/postgresql/data
restart: unless-stopped
networks:
npm_proxy:
external: true
Update: someone on windows is able to call me, but on their phone, it says MISSING_MATRIX_RTC_FOCUS. I’m going to look into this
All of the other answers mentioning coturn here are wrong - your friend is trying to call you using element call, which needs an instance of a livekit and a JWT micro service to grant permissions to use the livekit instance. You can use a livekit cloud account, but you do need to host the JWT service. I would suggest looking up Element’s documentation
This is probably the reason. Older element versions has video and telephony via native interfaces and coturn/turnserver for firewall hole poking.
The newer Element X uses a different infrastructure that even allows multi user conferences. You need to update your well-known server response to point it to the new infrastructure: https://github.com/element-hq/element-call
I have written a tutorial to set it up. Here you go: https://ztfr.de/matrixrtc-with-synology-container-manager-docker/
Did you create your own docker container, or did you use the official one?
I have the official one up and running, voice and video chat work out of the box.
I just updated the post with my compose.yaml file in case that’s helpful
I’ve tried using the docker container at ghcr.io/element-hq/synapse and https://hub.docker.com/r/matrixdotorg/synapse, whenever someone tries to call another, it just stays on “connecting” forever
You’ll need a TURN server to relay calls and provide signalling capabilities, which is needed most of the time. Here’s Synapse docs on it, and I’ll probably use coturn:
https://element-hq.github.io/synapse/latest/turn-howto.html
There’s also this new technology called Element Call, which uses a diffent tool called LiveKit. You should check it out too
https://github.com/element-hq/element-call/blob/livekit/README.md
Look at https://github.com/coturn/coturn
I’d recommend using https://github.com/spantaleev/matrix-docker-ansible-deploy. It makes managing synapse and related services pretty easy.
You have a higher chance of solving this issue if you ask in #webrtc:matrix.org