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


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