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

Uploaded Source

Built Distributions

matrix_synapse-1.77.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.2 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

matrix_synapse-1.77.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl (4.2 MB view details)

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

matrix_synapse-1.77.0-pp39-pypy39_pp73-macosx_11_0_x86_64.whl (3.2 MB view details)

Uploaded PyPy macOS 11.0+ x86-64

matrix_synapse-1.77.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.2 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

matrix_synapse-1.77.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl (4.2 MB view details)

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

matrix_synapse-1.77.0-pp38-pypy38_pp73-macosx_11_0_x86_64.whl (3.2 MB view details)

Uploaded PyPy macOS 11.0+ x86-64

matrix_synapse-1.77.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.2 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

matrix_synapse-1.77.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl (4.2 MB view details)

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

matrix_synapse-1.77.0-pp37-pypy37_pp73-macosx_11_0_x86_64.whl (3.2 MB view details)

Uploaded PyPy macOS 11.0+ x86-64

matrix_synapse-1.77.0-cp37-abi3-musllinux_1_1_x86_64.whl (4.2 MB view details)

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

matrix_synapse-1.77.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.2 MB view details)

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

matrix_synapse-1.77.0-cp37-abi3-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl (4.2 MB view details)

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

matrix_synapse-1.77.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.77.0-cp37-abi3-macosx_10_16_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.7+ macOS 10.16+ x86-64

File details

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

File metadata

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

File hashes

Hashes for matrix_synapse-1.77.0.tar.gz
Algorithm Hash digest
SHA256 bb97e1ef92d0a9b78ce3d9233bf701253f39f47fd5d5b9c61444d156733ee5bd
MD5 83714b1454145cc77b23dda7d4467a1d
BLAKE2b-256 8bc6b31671369a47a079ccf14b692a70d767359a7442556c780e60aca07d2e2f

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.77.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c1ab215e6a90715ca20b3e833e72708d5c66dc8eb66ab7380b7298b99146933d
MD5 76d4a3e145d94620bcb583493796284e
BLAKE2b-256 d9714c3909e5051657e423847d6dd36d5cbd9213faba5c07788c114f8183b16d

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.77.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.77.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 ba73f1a6de197cf13112fdecb3ef971de58e7f4562b0741eb74b6e11e4e23f34
MD5 88d35bf794ba73c03ec73730d59f1173
BLAKE2b-256 c4b00a1f86e6af4a10409fb2c7c0109e0bc298208c7345305cfd00fa2df64b74

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.77.0-pp39-pypy39_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 b3d9117af286c991806e5a0ba23b7bd56081b21a0619f8db8f0be500baafbd8f
MD5 25f14f1902587931b7593421aff9d622
BLAKE2b-256 257f62f7b3ff3865718344aeff5a7881c2eebd4d77fdff26cecdc2ae6a15b493

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.77.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f68d89973b062343e7769f2e414098cdf359a76179610a5dff643405b02f1f8a
MD5 658fc48e1bd3dba421681f082b9c9470
BLAKE2b-256 7d3df07f44f05d2382ee5f14082d1cea8918f66910f267b3f216f9414fe61a89

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.77.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.77.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d27efcb96b6d9fad89f108ab46fd8e9b48df8e3180aa9575ff404d93a762b588
MD5 67b35f3da903bf70f1950090997de138
BLAKE2b-256 2aa5ca5b351b11338dd5109abfb09cb4529f740145b53a9c48172f25fac18bad

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.77.0-pp38-pypy38_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 2c0aea7294d290b5de666c32ae1c4e4c548aec3bf27b1410d19ddd9d9e756f63
MD5 d5b3bf9e9498f7e3c6ddb384090ea4a7
BLAKE2b-256 d5092e36f88447314ddc43e68d075d331e5a2e2bb5223fde9fd05144c6d81ecf

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.77.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 202d3defea6f89a339678c2b232c4421144321c4ca98ab059bc1824b12cbd6c9
MD5 8ba06fdc795f46bdb6517ea1fb1937af
BLAKE2b-256 568d102448e516bcd09771149887976987270c54a9c43c7c2ea19b196afa7102

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.77.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.77.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 cd4d53fc078cd0d8cb328f69abf72284cdbed69eaccce097e35cb2ecc6e7327a
MD5 50817e4db8bc0187f95d43424876480a
BLAKE2b-256 1e02e5ff4c4ffedbfd91690b6de64141a9835d33da94b0933e24b320a7d2b201

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.77.0-pp37-pypy37_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 d91ffdeca10ba7babf77d3d1accde3b27ec7b10923f3e32755cf62d1d9e7bd94
MD5 ca98b75f786e76729b37bc4a350fa50f
BLAKE2b-256 fc48b00314e0f9357685c82c5feaf4e1799db3e88bfaf62b89f78ff888039d3c

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.77.0-cp37-abi3-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 fa4b2c1d6a2f31a3646c05bb8734365c9fdbfecd5e3b070a43aae82775107860
MD5 7f7c67264435b7c8d6f1b4bc6f94c920
BLAKE2b-256 d43dd80e057764954ea3d3ece0fe1b9fc0874ba56c114d63d30ef568de8c2acf

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.77.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ad2df30bd3184ef538fbc1b9363ca2820c8879b269ddef7348fa23842d262798
MD5 02a035f2ebbd2c8c1eb5e8dcaaca375e
BLAKE2b-256 03a083830d861478dc679e2f06ff6e73443e6e12c9b830f1b5987aba0e086455

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.77.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.77.0-cp37-abi3-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 1bfaa69d03be0c8fcbd653cabcf89e44e33f639dd15053c9ff09637523bd3800
MD5 b60cfb0a4ae0cf3c5729f9d7504de966
BLAKE2b-256 caf0b7eedc2e2a6eb0a16c415d868dfef30e65a15e84c77f6af2312d6c109d75

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.77.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d0ee35f3442d6a3e56c261b962e65e8416fa7234f3133e8d644dec6d63d7b3f9
MD5 f96000fc38c7e591b4c7e6d726e24c66
BLAKE2b-256 fd5417bf0f4528e4869d470910c0de4930d8181a193508d3ebaafcd4bd83e900

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.77.0-cp37-abi3-macosx_10_16_x86_64.whl
Algorithm Hash digest
SHA256 2a74ab00b3b2834cf07588421f58e4d68481cb80447fa0164f1ef8ea6156f2e6
MD5 6cad950d0db5499d510b2205e9f8525a
BLAKE2b-256 49bab2b5316f7773643147be39f50775804eeec978639aa9e3eb4b75752e8a39

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