Skip to main content

Homeserver for the Matrix decentralised comms protocol

Project description

Synapse is an open-source Matrix homeserver written and maintained by the Matrix.org Foundation. We began rapid development in 2014, reaching v1.0.0 in 2019. Development on Synapse and the Matrix protocol itself continues in earnest today.

Briefly, Matrix is an open standard for communications on the internet, supporting federation, encryption and VoIP. Matrix.org has more to say about the goals of the Matrix project, and the formal specification describes the technical details.

Installing and configuration

The Synapse documentation describes how to install Synapse. We recommend using Docker images or Debian packages from Matrix.org.

Synapse has a variety of config options which can be used to customise its behaviour after installation. There are additional details on how to configure Synapse for federation here.

Using a reverse proxy with Synapse

It is recommended to put a reverse proxy such as nginx, Apache, Caddy, HAProxy or relayd in front of Synapse. One advantage of doing so is that it means that you can expose the default https port (443) to Matrix clients without needing to run Synapse with root privileges. For information on configuring one, see the reverse proxy docs.

Upgrading an existing Synapse

The instructions for upgrading Synapse are in the upgrade notes. Please check these instructions as upgrading may require extra steps for some versions of Synapse.

Platform dependencies

Synapse uses a number of platform dependencies such as Python and PostgreSQL, and aims to follow supported upstream versions. See the deprecation policy for more details.

Security note

Matrix serves raw, user-supplied data in some APIs – specifically the content repository endpoints.

Whilst we make a reasonable effort to mitigate against XSS attacks (for instance, by using CSP), a Matrix homeserver should not be hosted on a domain hosting other web applications. This especially applies to sharing the domain with Matrix web clients and other sensitive applications like webmail. See https://developer.github.com/changes/2014-04-25-user-content-security for more information.

Ideally, the homeserver should not simply be on a different subdomain, but on a completely different registered domain (also known as top-level site or eTLD+1). This is because some attacks are still possible as long as the two applications share the same registered domain.

To illustrate this with an example, if your Element Web or other sensitive web application is hosted on A.example1.com, you should ideally host Synapse on example2.com. Some amount of protection is offered by hosting on B.example1.com instead, so this is also acceptable in some scenarios. However, you should not host your Synapse on A.example1.com.

Note that all of the above refers exclusively to the domain used in Synapse’s public_baseurl setting. In particular, it has no bearing on the domain mentioned in MXIDs hosted on that server.

Following this advice ensures that even if an XSS is found in Synapse, the impact to other applications will be minimal.

Testing a new installation

The easiest way to try out your new Synapse installation is by connecting to it from a web client.

Unless you are running a test instance of Synapse on your local machine, in general, you will need to enable TLS support before you can successfully connect from a client: see TLS certificates.

An easy way to get started is to login or register via Element at https://app.element.io/#/login or https://app.element.io/#/register respectively. You will need to change the server you are logging into from matrix.org and instead specify a Homeserver URL of https://<server_name>:8448 (or just https://<server_name> if you are using a reverse proxy). If you prefer to use another client, refer to our client breakdown.

If all goes well you should at least be able to log in, create a room, and start sending messages.

Registering a new user from a client

By default, registration of new users via Matrix clients is disabled. To enable it:

  1. In the registration config section set enable_registration: true in homeserver.yaml.

  2. Then either:

    1. set up a CAPTCHA, or

    2. set enable_registration_without_verification: true in homeserver.yaml.

We strongly recommend using a CAPTCHA, particularly if your homeserver is exposed to the public internet. Without it, anyone can freely register accounts on your homeserver. This can be exploited by attackers to create spambots targetting the rest of the Matrix federation.

Your new user name will be formed partly from the server_name, and partly from a localpart you specify when you create the account. Your name will take the form of:

@localpart:my.domain.name

(pronounced “at localpart on my dot domain dot name”).

As when logging in, you will need to specify a “Custom server”. Specify your desired localpart in the ‘User name’ box.

Troubleshooting and support

The Admin FAQ includes tips on dealing with some common problems. For more details, see Synapse’s wider documentation.

For additional support installing or managing Synapse, please ask in the community support room #synapse:matrix.org (from a matrix.org account if necessary). We do not use GitHub issues for support requests, only for bug reports and feature requests.

Identity Servers

Identity servers have the job of mapping email addresses and other 3rd Party IDs (3PIDs) to Matrix user IDs, as well as verifying the ownership of 3PIDs before creating that mapping.

They are not where accounts or credentials are stored - these live on home servers. Identity Servers are just for mapping 3rd party IDs to matrix IDs.

This process is very security-sensitive, as there is obvious risk of spam if it is too easy to sign up for Matrix accounts or harvest 3PID data. In the longer term, we hope to create a decentralised system to manage it (matrix-doc #712), but in the meantime, the role of managing trusted identity in the Matrix ecosystem is farmed out to a cluster of known trusted ecosystem partners, who run ‘Matrix Identity Servers’ such as Sydent, whose role is purely to authenticate and track 3PID logins and publish end-user public keys.

You can host your own copy of Sydent, but this will prevent you reaching other users in the Matrix ecosystem via their email address, and prevent them finding you. We therefore recommend that you use one of the centralised identity servers at https://matrix.org or https://vector.im for now.

To reiterate: the Identity server will only be used if you choose to associate an email address with your account, or send an invite to another user via their email address.

Development

We welcome contributions to Synapse from the community! The best place to get started is our guide for contributors. This is part of our larger documentation, which includes

information for Synapse developers as well as Synapse administrators. Developers might be particularly interested in:

Alongside all that, join our developer community on Matrix: #synapse-dev:matrix.org, featuring real humans!

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

matrix_synapse-1.102.0rc1.tar.gz (3.4 MB view details)

Uploaded Source

Built Distributions

matrix_synapse-1.102.0rc1-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl (4.6 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

matrix_synapse-1.102.0rc1-pp310-pypy310_pp73-macosx_11_0_x86_64.whl (3.6 MB view details)

Uploaded PyPy macOS 11.0+ x86-64

matrix_synapse-1.102.0rc1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl (4.6 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

matrix_synapse-1.102.0rc1-pp39-pypy39_pp73-macosx_11_0_x86_64.whl (3.6 MB view details)

Uploaded PyPy macOS 11.0+ x86-64

matrix_synapse-1.102.0rc1-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl (4.6 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

matrix_synapse-1.102.0rc1-pp38-pypy38_pp73-macosx_11_0_x86_64.whl (3.6 MB view details)

Uploaded PyPy macOS 11.0+ x86-64

matrix_synapse-1.102.0rc1-cp38-abi3-musllinux_1_1_x86_64.whl (4.6 MB view details)

Uploaded CPython 3.8+ musllinux: musl 1.1+ x86-64

matrix_synapse-1.102.0rc1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.6 MB view details)

Uploaded CPython 3.8+ manylinux: glibc 2.17+ x86-64

matrix_synapse-1.102.0rc1-cp38-abi3-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl (4.6 MB view details)

Uploaded CPython 3.8+ manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

matrix_synapse-1.102.0rc1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.5 MB view details)

Uploaded CPython 3.8+ manylinux: glibc 2.17+ ARM64

matrix_synapse-1.102.0rc1-cp38-abi3-macosx_10_16_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.8+ macOS 10.16+ x86-64

File details

Details for the file matrix_synapse-1.102.0rc1.tar.gz.

File metadata

  • Download URL: matrix_synapse-1.102.0rc1.tar.gz
  • Upload date:
  • Size: 3.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for matrix_synapse-1.102.0rc1.tar.gz
Algorithm Hash digest
SHA256 ffb97270542ac761dbf1d5981458a5b6a1365b73ec6e851b53969f462f05b317
MD5 f76ac878baec5ecfc3bb579719c9d586
BLAKE2b-256 5e512c53e5fd20c4371edb342c1fd5255cfa2313ac875f9b27c107539df5f29f

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.102.0rc1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.102.0rc1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 10a5062203fcb216bdac1496c244521018d69df26ff9e663f17c0ff73c3134ab
MD5 c9c76d3a6b98205261439da757da3788
BLAKE2b-256 b12bc7d5ef4ebeee4097ae25ba0d258939a572cb31e799ce011f07a004af3c16

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.102.0rc1-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.102.0rc1-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 e9ea1738136183c51892a51e71d5ea1194db6befac53efc46013bec10b8c0025
MD5 48870d319056af26c30af829f6e4bd3d
BLAKE2b-256 0b69cc9c35d468cd1df31cf423270b1b2b033402ff28b6fde44ae84a46e1cd31

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.102.0rc1-pp310-pypy310_pp73-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.102.0rc1-pp310-pypy310_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 55972a570943eccb57117ed3760c1e91c2846c707f5c7d22bcb70d8e2f125458
MD5 819b8a445638ccbfc3885e9198446eda
BLAKE2b-256 f40130c35baa345b2e098398ef51c5db12ef2ccbd38a902f1d8e75203377ac94

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.102.0rc1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.102.0rc1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8cba414dfb9ca040ed00be4e1691ea7ff27e72ebba32e1a9c3c6394e4702817e
MD5 ca62e26aec0fa44806670fdcb712aa16
BLAKE2b-256 59b86da487faed47157d5f6f34899b775bd4851169e05d0c8c9b756962aa9ae8

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.102.0rc1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.102.0rc1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 afd520d0b58e243c18b0b99b69b6ccebb1a3da369f706ec9b468166dcbd4a661
MD5 79667180ed9b1ac76fd34de1efabf961
BLAKE2b-256 7e0ba8807c6fdc8c46a486860d97255ebe2589d4961f514b43787fec015be796

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.102.0rc1-pp39-pypy39_pp73-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.102.0rc1-pp39-pypy39_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 4b219ac825503068798972cafdf4e8160d8d89dd9511bba116376af584502734
MD5 e505be6f30a6c80a142ff460d0d18783
BLAKE2b-256 53bc89b49ff7ee757d811e59954784dacca5a37c01ba122d7634dc3d8aa1a6db

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.102.0rc1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.102.0rc1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1686487e614abda79f00759d4c9e8bfd677925319e7ba61c8916166cec5364a7
MD5 1ecdae4a4b5c73837b645ca2e4105812
BLAKE2b-256 57a8a7f352a66a2f590c33330c92191695ef4fd2eb1296cba7b34833537062e6

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.102.0rc1-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.102.0rc1-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c1365036f72f8bb8363a59f3d5ba9625c9a76c53a893eba51ddd6babd11e03c9
MD5 8acc46c26a57076ceef9669962d8cd46
BLAKE2b-256 eacc24744e1dd08a593dafcf382aff0dd7536111ee79b6eda8e96a81da1cd717

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.102.0rc1-pp38-pypy38_pp73-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.102.0rc1-pp38-pypy38_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 510bc7c8f961471e5a38351c65b1239f9048bfb657b4c40c9969bc54ea582ac4
MD5 24dae13c8a4984dadf875e81c020c619
BLAKE2b-256 44929bc482d96562c0374d77f0c0421c5af733070d9a2d7e328866f02f26a019

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.102.0rc1-cp38-abi3-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.102.0rc1-cp38-abi3-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 a9ff6e1d141cc727122810144d9bf993f2b4ed95cc02680505c3f9dfb37e0893
MD5 845b29d14ed14a366090a640a972564c
BLAKE2b-256 9922bdc8fe77c9c00c76d83048321443bcd9a569dfc7063f9cd435a52a9e328e

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.102.0rc1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.102.0rc1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5cd2ba71f2d90e40e12a5ef19edfb6309cc1dddbf918dbd55910b708a5ecf5de
MD5 53f68c3cfce056b0da6c96b61068289c
BLAKE2b-256 6cb96c8802c23562fa5418bbaf9f9b0606309b878588bf28a01f3dfc3b912ae0

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.102.0rc1-cp38-abi3-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.102.0rc1-cp38-abi3-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 bc68ef034e20f9d2738d79fc53f04bc06807155fbe749efc25b8563f1f8f2abd
MD5 8c1751f48f6eea37c37f3ba746d42870
BLAKE2b-256 01d78e2ca59e40465277e53dbb3120562437ecc1b54899f8df19d88d7f7b75ce

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.102.0rc1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.102.0rc1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e8d9149f05342dad471948af93e54538336693c5f47c9f1c20465b2c0dc90550
MD5 5690b8fd8e074a0218a7260c92efa16a
BLAKE2b-256 5121bd21de20783996ec3cc27432349667f59720530d873e04ae7d93660bd402

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.102.0rc1-cp38-abi3-macosx_10_16_x86_64.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.102.0rc1-cp38-abi3-macosx_10_16_x86_64.whl
Algorithm Hash digest
SHA256 199144dc0db2cecd18fd7b43b95dcfb9f7c8d04d8b892194ceed5eec4fbafdf3
MD5 518e701ff7ce58813a0372ff2236950d
BLAKE2b-256 be3eac877fec51901530b3656db6b4b2cd82526e7adf7cdb33819fea8b3462bd

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page