End-to-end encrypted voice and video for self-hosted community users

April 04, 2025
On-premise

A key component of Element X, Element Web and Element Desktop is the voice and video capabilities made possible by Element Call using the MatrixRTC backend (including LiveKit). 

Element Call powers end-to-end encrypted (E2EE) in-app voice and video calling at scale for our flagship messaging apps. It delivers high fidelity video calls, emoji reactions, flawless conference calls and screensharing. Of course, it also works over federation.

Element Call is already embedded within Element Server Suite (ESS), and is used by our public sector customers to support millions of enterprise-grade calls. Element Call and the MatrixRTC backend will also shortly be integrated in ESS Community Edition, which will soon have its official launch.

To date, Element made a free MatrixRTC backend available for the good of the community at large. This has been hugely popular, but has now passed the point of being sustainable. 

Element Server Suite (ESS) and Element Cloud (EMS) customers already have their own dedicated MatrixRTC backend, as will ESS Community users. Users of the matrix.org homeserver will also be able to continue to use a dedicated instance provided by the Matrix.org Foundation (sponsored by LiveKit). However those self-hosting a homeserver outside of ESS will need to deploy their own MatrixRTC infrastructure. 

Options for those self-hosting outside of ESS

Those self-hosting a free of charge Matrix server, and using Element X, Element Web or Desktop as their client, will need to make a tweak to their server configuration to get LiveKit-backed in-app calling. There are three options available.

Option 1 - use matrix.org for voice and video as a temporary quick fix 

This is the quickest fix, and can serve as an interim solution until you’re ready to set up your own MatrixRTC backend. You can point your server to use matrix.org for voice and video calling. The solution has been kindly made available by matrix.org and LiveKit temporarily to ensure that self-hosters have enough time to deploy their own instance. This capability will continue until at least 5th May. We think it will take about five minutes to implement.

Step 1: Get access to your my_domain/.well-known/matrix/client file

Step 2: Add the following snippet to it (be aware of correct json formatting, you can double check with the handy jq command line tool)

"org.matrix.msc4143.rtc_foci": [
 {
  "type": "livekit",
  "livekit_service_url": "https://livekit-jwt.call.matrix.org"
 }
]

Option 2 - add MatrixRTC/LiveKit to your deployment

The long-term solution is to add the MatrixRTC/LiveKit backend to your own self-hosted deployment. Depending on your setup, this will involve spinning up the MatrixRTC backend components and configuring it in your homeserver and infrastructure. 

The official documentation can be found here, and you might also find this blog post from Element staffer Will Lewis of use.

Option 3 - switch to self-hosted ESS Community Edition, once it’s ready

ESS Community Edition is the official Matrix stack from Element for non-commercial use. Support for Element Call and the MatrixRTC backend in ESS Community Edition will arrive in the coming weeks. Installation instructions are here

And that’s it! If you have any questions, feel free to join us in the webrtc room.

Related Posts

By the same author

Thanks for reading our blog— if you got this far, you should head toelement.ioto learn more!