--- gitea: none include_toc: true --- # A complete Matrix installation This is going to be a Matrix installation with all bells and whistles. Not just the server, but every other bit that you need or want. We're building it with workers, so it will scale. ## Overview A complete Matrix environment consists of many parts. Other than the Matrix server itself (Synapse) there are all kinds of other things that we need: * [Synapse](https://element-hq.github.io/synapse/latest/) * Webclient ([Element Web](https://github.com/element-hq/element-web)) * [Element Call](https://github.com/element-hq/element-call) for audio/video conferencing * Management with [Synapse-Admin](https://github.com/Awesome-Technologies/synapse-admin) * Moderation with [Draupnir](https://github.com/the-draupnir-project/Draupnir) * [Consent tracking](https://element-hq.github.io/synapse/latest/consent_tracking.html) * Authentication via [OpenID](https://element-hq.github.io/synapse/latest/openid.html) * Several [bridges](https://matrix.org/ecosystem/bridges/) # Overview This documentation aims to describe the installation of a complete Matrix platform, with all bells and whistles. Several components are involved and finishing the installation of one can be necessary for the installation of the next. These are the components we're going to use ## Synapse This is the core component: the Matrix server itself. Installation and configuration is documented under [synapse](synapse). You should probably install this first. ## PostgreSQL This is the database Synapse uses. This should be the first thing you install after Synapse, and once you're done, reconfigure the default Synapse install to use PostgreSQL. ## nginx We need a webserver for several things, see how to [configure nginx](nginx) here. If you install this, make sure to check which certificates you need, fix the DNS entries and probably keep TTL for for those entries very low until after the installation, when you know everything's working. ## Element Call Element Call is the new way to have audio and video conferences, both one-on-one and with groups. This does not use Jitsi and keeps E2EE intact. See how to [setup and configure it](element-call). # Element Web This is the fully-fledged web client, which is very [easy to set up](element-call). # TURN We may need a TURN server, and we'll use [coturn](coturn) for that. It's apparently also possible to use the built-in TURN server in Livekit, which we'll use if we use [Element Call](call). It's either/or, so make sure you pick the right approach. You could possibly use both coturn and LiveKit, if you insist on being able to use both legacy and Element Call functionality. This is not documented here yet. # Draupnir With Draupnir you can do moderation. It requires a few changes to both Synapse and nginx, here's how to [install and configure Draupnir](draupnir).