element-hq / element-hq/synapse

Synapse 1.150.0 does not expose MatrixRTC transports endpoint despite msc4143_enabled=true

Open
#19,652 7 comments 1 reaction 0 assignees View on GitHub
Dominant language
Python
Stars
4.6k
Forks
600
Avg merge
5d 22h
Merged PRs (30d)
51

Description

### Description

I am trying to enable MatrixRTC (MSC4143) with Element Call + LiveKit on a self-hosted setup, but the endpoint `/_matrix/client/v1/rtc/transports` is not recognized by Synapse.

### Setup

- Synapse deployed via matrix-docker-ansible-deploy
- Element Web + Element Call
- LiveKit + lk-jwt-service working
- Reverse proxy: Traefik (playbook-managed)

### Configuration

In homeserver.yaml:

```yaml
experimental_features:
msc4143_enabled: true

matrix_rtc:
transports:
- type: livekit
livekit_service_url: "https://rtc.kimiu.fr/livekit/jwt"
```

### Well-known

`https://kimiu.fr/.well-known/matrix/client` returns:
```json
{
"m.homeserver": {
"base_url": "https://matrix.kimiu.fr",
"server_name": "kimiu.fr"
},
"org.matrix.msc4143.rtc_foci": [
{
"type": "livekit",
"livekit_service_url": "https://rtc.kimiu.fr/livekit/jwt"
}
]
}
```

### LiveKit

Health endpoint works:

`curl https://rtc.kimiu.fr/livekit/jwt/healthz` → HTTP 200

### Problem

This request returns 404 / M_UNRECOGNIZED:

```
curl -i https://matrix.kimiu.fr/_matrix/client/v1/rtc/transports \
-H "Authorization: Bearer "
```

Response:

```json
{
"errcode": "M_UNRECOGNIZED",
"error": "Unrecognized request"
}
```

### Expected

Synapse should expose the MatrixRTC transport endpoint when MSC4143 is enabled.

### Notes

- Synapse config clearly includes msc4143_enabled: true
- matrix_rtc block is present in homeserver.yaml
- Synapse has been restarted after config changes

Is there an additional flag or requirement to enable this endpoint?

Thanks

### Steps to reproduce

- list the steps
- that reproduce the bug
- using hyphens as bullet points

### Homeserver

matrix.kimiu.fr (self-hosted)

### Synapse Version

1.150.0

### Installation Method

Docker (matrixdotorg/synapse)

### Database

PostgreSQL (single server, no SQLite migration, no backup restore)

### Workers

Single process

### Platform

Debian 12 (OVH VPS), Synapse running in Docker via matrix-docker-ansible-deploy, Traefik reverse proxy, LiveKit + lk-jwt-service for MatrixRTC

### Configuration

MSC4143 enabled (`experimental_features.msc4143_enabled: true`)

```yaml
matrix_rtc configured with LiveKit:
matrix_rtc:
transports:
- type: livekit
livekit_service_url: "https://rtc.kimiu.fr/livekit/jwt"
```

No custom modules, no unusual presence or message retention settings.

### Relevant log output

No relevant errors found in Synapse logs.

The issue is reproducible via API:

```
curl -i https://matrix.kimiu.fr/_matrix/client/v1/rtc/transports \
-H "Authorization: Bearer "
```

Response:

HTTP/2 404
```
{"errcode":"M_UNRECOGNIZED","error":"Unrecognized request"}
```

### Anything else that would be useful to know?

Element Call standalone (https://call.kimiu.fr) works correctly.

LiveKit and JWT service are reachable and healthy:
`https://rtc.kimiu.fr/livekit/jwt/healthz` → HTTP 200

The `.well-known/matrix/client` endpoint is correctly configured and returns the expected RTC config.

The issue only affects the MatrixRTC integration via Synapse.

Contributor guide

Open the contributing guide

Research direction

Start by checking Synapse's MatrixRTC client API routing and MSC4143 feature-gating for version 1.150.0, using the configured endpoint and homeserver.yaml settings described here. Reproduce the request with curl and trace whether the transport endpoint is registered; done means the endpoint returns the configured LiveKit transport, or the missing requirement is clearly identified.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
api, backend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.