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.94.0rc1.tar.gz (3.3 MB view details)

Uploaded Source

Built Distributions

matrix_synapse-1.94.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.94.0rc1-pp39-pypy39_pp73-macosx_11_0_x86_64.whl (3.5 MB view details)

Uploaded PyPy macOS 11.0+ x86-64

matrix_synapse-1.94.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.94.0rc1-pp38-pypy38_pp73-macosx_11_0_x86_64.whl (3.5 MB view details)

Uploaded PyPy macOS 11.0+ x86-64

matrix_synapse-1.94.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.94.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.94.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.94.0rc1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.6 MB view details)

Uploaded CPython 3.8+ manylinux: glibc 2.17+ ARM64

matrix_synapse-1.94.0rc1-cp38-abi3-macosx_10_16_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.8+ macOS 10.16+ x86-64

File details

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

File metadata

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

File hashes

Hashes for matrix_synapse-1.94.0rc1.tar.gz
Algorithm Hash digest
SHA256 009329872a04ba7ab3aa7b2d85741c27ff4a83d1b4b92614d09fd587ff4becf7
MD5 7acab1c229dceb170557fe4c7768c275
BLAKE2b-256 ada52156c5a50f3987961cbbbc962ff302f11b62507bd7719e28aeb326a9c50a

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.94.0rc1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5bec2f80d52af40d5937e9e591546d45c20821d341892910629a11d33d526510
MD5 dc387e92f11cd449d89aa9f8a848c2ac
BLAKE2b-256 b08573c4c2b998b06853046adc1f3b2dc522b23821b9176c8937398eb442a5f1

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.94.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.94.0rc1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 dd07ed6b8bec0b8eb8f79220dee57e40d45cc0910a202ebabcb1bcfa93278be4
MD5 778cc4bd9344d09f83c292120d08e09b
BLAKE2b-256 246d5b8ac08bbfaa9796de3995d53f7dfc4c4826293200ffb595c28273fe5735

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.94.0rc1-pp39-pypy39_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 ebc801db541d5ca6b9b44e54e35ae69ff87b8e5328e8d11c075f334af7c05135
MD5 3182560884ee1c66a3c97dbb8cd734fd
BLAKE2b-256 a685f2b196a9960e4977a1df0c58a161daa1688707eed3e6c19356ee71445fa4

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.94.0rc1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 30e5e70a2aece6d1f8ba3b6a6f30efdf7ab8d552023ebc1c64f98aa88d343a41
MD5 6219691a8870d02479ebe83ebb915157
BLAKE2b-256 0bf1a3863fa4713bf495088a085bc4a7ea270a668c78925d16f4aafbfa9a259f

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.94.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.94.0rc1-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 ceca2bb9cd1453dcb63e44f5a8dd8d7f78fdd169ee37642cdc1591169a47d2a9
MD5 02f5df6a7202a6a938390154966050a4
BLAKE2b-256 f34e5bc8abd1350b544c0f6cae0f87832737859a2ab928b9429cab410f3ef6ab

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.94.0rc1-pp38-pypy38_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 68e1318f018a29592cb8e7fa8f10896b173eed5d8443c0bc57f038687d7094a7
MD5 170c4d5c517e6ee3e7cec6303a85b169
BLAKE2b-256 a787c9f47452cdd31bac68859cf06e838e14f7ab6d89f2fd2f9f4a5639e931a2

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.94.0rc1-cp38-abi3-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 045236618e8216af973c83582cd95b456595850284a83f424b32dbe52ac2afce
MD5 db22eb58e05e4ca6fbb4c280680daab2
BLAKE2b-256 05d81665b9d82ea0d3639420ee6746c759d203be7640924c697dc72c91d42488

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.94.0rc1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1148ad16df8cdeee9183d2af2629b0f9f52dcfcee814980e3e85b179f7fa0c3e
MD5 eccbba47bb2a76f8e81200de09fc2f2e
BLAKE2b-256 78e994008744e23b05be2fe94cfffd271dc6aeb9c27b6f421fccd75e51ab9ab4

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.94.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.94.0rc1-cp38-abi3-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 1225258b74c80ca57a9bca5b603422cd3d942f67fb5c6ebf25351752e26c8a19
MD5 152ab9eb318fd82a645e237b38132d24
BLAKE2b-256 e74654e016cd9eebf86f091f680f516bd4dd8a7f5d06ea7b57c3fcc24dd00d18

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.94.0rc1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b954ce9d4c453192afa93295f988737d7cd30230341c15b8a7f1affd4d6dd37a
MD5 1cb4b3bd37c38a729159803f29e3771f
BLAKE2b-256 6a70c22eb383b44bb9448210056a524508d4e2cb14e6a947afe2dc1802ea63a0

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.94.0rc1-cp38-abi3-macosx_10_16_x86_64.whl
Algorithm Hash digest
SHA256 589729ab2037235b50c3497dad1523f70b72a9d4827f16f70421115b9ef4b1b4
MD5 50dc3e6e0f953df60b8e2bb946ed4c40
BLAKE2b-256 beec478d2d5ec49a2e38713f2a758ec23f49845a1e276b32008c2494084037a0

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