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.73.0.tar.gz (3.1 MB view details)

Uploaded Source

Built Distributions

matrix_synapse-1.73.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.1 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

matrix_synapse-1.73.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl (4.1 MB view details)

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

matrix_synapse-1.73.0-pp39-pypy39_pp73-macosx_11_0_x86_64.whl (3.1 MB view details)

Uploaded PyPy macOS 11.0+ x86-64

matrix_synapse-1.73.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.1 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

matrix_synapse-1.73.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl (4.1 MB view details)

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

matrix_synapse-1.73.0-pp38-pypy38_pp73-macosx_11_0_x86_64.whl (3.1 MB view details)

Uploaded PyPy macOS 11.0+ x86-64

matrix_synapse-1.73.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.1 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

matrix_synapse-1.73.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl (4.1 MB view details)

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

matrix_synapse-1.73.0-pp37-pypy37_pp73-macosx_11_0_x86_64.whl (3.1 MB view details)

Uploaded PyPy macOS 11.0+ x86-64

matrix_synapse-1.73.0-cp37-abi3-musllinux_1_1_x86_64.whl (4.1 MB view details)

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

matrix_synapse-1.73.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.1 MB view details)

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

matrix_synapse-1.73.0-cp37-abi3-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl (4.1 MB view details)

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

matrix_synapse-1.73.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.1 MB view details)

Uploaded CPython 3.7+ manylinux: glibc 2.17+ ARM64

matrix_synapse-1.73.0-cp37-abi3-macosx_10_16_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.7+ macOS 10.16+ x86-64

File details

Details for the file matrix_synapse-1.73.0.tar.gz.

File metadata

  • Download URL: matrix_synapse-1.73.0.tar.gz
  • Upload date:
  • Size: 3.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for matrix_synapse-1.73.0.tar.gz
Algorithm Hash digest
SHA256 f8b9a78bc49e3109aa12042c9fc0c3f6bdc5ae77d24231b9e7c264d0bf70f246
MD5 de159390225ae5eb40328ec3c18533ae
BLAKE2b-256 c4085db872990edaad2fcfde2be29ebaa22f8b10a571b804f6be8206c6b127d4

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.73.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f75a269d8fe12359847e40efe43d8f344faa400d14cde1db761135ebafa855f2
MD5 b07af5870eeb0f60245802a4701c0156
BLAKE2b-256 ed2752b8cc9454fd2fb6282cc8cd6e23544a6a85c0f5c7f22aeff392ec79c9bd

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.73.0-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.73.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 cb729f7c7103f775a956a0a6348a6b19757099520d8322de3ebe30d3d61e119b
MD5 681ec56c9433158f8c776d0d6f9bca92
BLAKE2b-256 ad88fc99844bece584a77a89ddf434ef65efcae4124ffc7ea607a6e3e91ba2f3

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.73.0-pp39-pypy39_pp73-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.73.0-pp39-pypy39_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 8c3c071eeb55c7b00fa1d32a85f69c1814e5ef3742f65ced906bed1f5b2bb098
MD5 4542b4450863e01055846b960eb36e2e
BLAKE2b-256 508f192092056d2717b580635037de2816af2d49838c8aa3c547f04e85ab5740

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.73.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3ba2f3b195657e98913070ce90461c82f860c853c00568fe4783319142f1873a
MD5 58cc51025b9322a40eda35ff94292b59
BLAKE2b-256 19110a285df4d0dc25797c1bb59e55a0d50640ca81f865c4d1e607534727dec0

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.73.0-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.73.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c7f4963b5d7bd29c5e63f918b83d0feded3fee729bead9f84a56020a95456cad
MD5 a0dcc7c3ca922f7b597f9974aa0a76fc
BLAKE2b-256 0b04afec52f829ca153d06805e1679e23dd321cfd31ad603dda14e19a9e1a267

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.73.0-pp38-pypy38_pp73-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.73.0-pp38-pypy38_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 cf437346858c03fafaa8b3830914c43d89dc0399f53ea018e09f7c5d228a9a59
MD5 f11e1d8e944e08cc8efb408e5c006672
BLAKE2b-256 bdd4e4773a3fe994d6a57910fbadd52a85145d99b20d33137d17d0f48b29555b

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.73.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.73.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 50a5b7979bf73e7618f6c011cf5cb8fedaa18348a8fe4680e3e84014b1a15e55
MD5 9f50de3ab47b7f1bc5061ba7d66d1d1a
BLAKE2b-256 52e8d4c3af3ac4924de18e556847d5fd24c86430ae122e2916a85e3480ccf5c5

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.73.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.73.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 6859493dd937ab9695239dd6aab07cdc42ec0ef410437df595d62652cd7d169c
MD5 9a0e4198a5fddec07459d8bfeb61e6b7
BLAKE2b-256 c115b277c7ec2d54a27e436878c8324eac460bb1fd29e23a381852b7b23501f4

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.73.0-pp37-pypy37_pp73-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.73.0-pp37-pypy37_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 d76ead20c7304bf3736ed4d4c9055bcaef5f2828151a86a17250a68f6b1aa337
MD5 f1ace9375c5dfeea72ef9445ff138e94
BLAKE2b-256 bb50e806b6d0e00fa44efdaf5c34287f908b1b361beb3fd7180f5653268bfa30

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.73.0-cp37-abi3-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.73.0-cp37-abi3-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 351583910253eb9504fededbebf1da0fe75106798312bd9bfc6c8f3a8962aa3b
MD5 7d21f8cf1c426406e38e305db512f424
BLAKE2b-256 f0a48984c18df64cc9c8714e4ccb47580c8bdf4f83e1c86539d6c0e8b1ce0142

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.73.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.73.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 261903b169d8c5088f5e96634fcaff10026bb4e91e0c13c4287e1ff813973ad8
MD5 cfc95f6a6cfed79527d3f9d5424d3d87
BLAKE2b-256 5a61272f19bd5b3f0154af272164822ada48020493e9c3cd211db2327af4f2d5

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.73.0-cp37-abi3-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.73.0-cp37-abi3-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 ebdc3c5a998e5510cc3317de1db7e078b7ab052b9aab58a08c3f9a5505658a10
MD5 cfb805e04d343c3a53585600833437d7
BLAKE2b-256 8d7407605186763ed370dfe9d7008ea2c9fe17a57cfcd2f832bd8d0cd80b9fb2

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.73.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.73.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e0ee0b140987285271689906142200832ec6bb08ba9ddf0042d4b5680a3f8586
MD5 c47533a8ddda52c1de9b55ed7d38bdd0
BLAKE2b-256 5a7a797449d27309fb34ce129bf270d5e8bd295a60383aa77c112d42097eb617

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.73.0-cp37-abi3-macosx_10_16_x86_64.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.73.0-cp37-abi3-macosx_10_16_x86_64.whl
Algorithm Hash digest
SHA256 fd6700c1ef5c172d82d895ec08b1a3d15e956c853bc093d28b7f1b0bcb88b970
MD5 29da579e2f3dc20ae98bee6bbb386b7c
BLAKE2b-256 e1d114b54855af6b891b07797f9af15ea662e3162854273b5144db77bad32715

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