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.81.0rc2.tar.gz (3.2 MB view details)

Uploaded Source

Built Distributions

matrix_synapse-1.81.0rc2-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.81.0rc2-pp39-pypy39_pp73-macosx_11_0_x86_64.whl (3.2 MB view details)

Uploaded PyPy macOS 11.0+ x86-64

matrix_synapse-1.81.0rc2-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.81.0rc2-pp38-pypy38_pp73-macosx_11_0_x86_64.whl (3.2 MB view details)

Uploaded PyPy macOS 11.0+ x86-64

matrix_synapse-1.81.0rc2-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.81.0rc2-pp37-pypy37_pp73-macosx_11_0_x86_64.whl (3.2 MB view details)

Uploaded PyPy macOS 11.0+ x86-64

matrix_synapse-1.81.0rc2-cp37-abi3-musllinux_1_1_x86_64.whl (4.3 MB view details)

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

matrix_synapse-1.81.0rc2-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.81.0rc2-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.81.0rc2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.2 MB view details)

Uploaded CPython 3.7+ manylinux: glibc 2.17+ ARM64

matrix_synapse-1.81.0rc2-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.81.0rc2.tar.gz.

File metadata

  • Download URL: matrix_synapse-1.81.0rc2.tar.gz
  • Upload date:
  • Size: 3.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for matrix_synapse-1.81.0rc2.tar.gz
Algorithm Hash digest
SHA256 6a52b0965af37d2b0557596d8f3e882089f309cef4a063d062ae6a37fd9b4767
MD5 76fb5f70d782b3221537e0c1b37b01ec
BLAKE2b-256 e6d78e4106d1fd59b3cf8ee586ef24798f56da8d6eabdc6cfea4f56a91e4fcd9

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.81.0rc2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0d6710bce2b5c00b1c37fe6ed59e0117f2a4b7e25d325145ba6c4207b8f4ca15
MD5 b994789b0af75e06d2124cddcb3ee99f
BLAKE2b-256 da77403de14363d0010a639fb56ae725fb5118ff4a5c2c46418766239ee396a3

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.81.0rc2-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.81.0rc2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d94eba3101afcf1f3c2b8597a89027b2ed3cce85d4992e6bd12b7573fa73fe6c
MD5 5e89ae3d6cd0ff08453fd174c8cda722
BLAKE2b-256 1576cf084f0f1a8a9383be99f163f0710ca373bed1937b4f2c988d1bca56b838

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.81.0rc2-pp39-pypy39_pp73-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.81.0rc2-pp39-pypy39_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 78b0ebb06a2e02131dfb26a62ef78c6b0217978cebac09fb4cb0d203abec994d
MD5 9cfb581518ac8113c2ab2aeb63055421
BLAKE2b-256 89c70fcd9650d78ddf3e83c41a58b11fee6f029bf6400cb3e8fe21f41faa1c31

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.81.0rc2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 28383c46e4613013ffce319414b290fa4693dbe7b32c69e4f84a519a52899c46
MD5 806872a9ad32121becab3f1b1161fa35
BLAKE2b-256 f65db9ec81fa4bf3a0571686c0cda478e3d3de934799e32d80f8888d2245dba8

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.81.0rc2-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.81.0rc2-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 9dcffd35abbd109b0ed1402027fc18fc88b4fc960d1881d82ef90dffce5e0d78
MD5 9c93a5c02bb40d63b5b14355a1277e15
BLAKE2b-256 bcd0dc1a452b7e423282f7ee071f3f1136c6e80d4df1f7f83087352862e61729

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.81.0rc2-pp38-pypy38_pp73-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.81.0rc2-pp38-pypy38_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 dda1f858ce8d32168c4199bc5a7b96211c17777c3a5efb2aee41169e0697f429
MD5 45e986e19550053b138db7fcd4653c98
BLAKE2b-256 9fbb0c5aa79217c45fbde5128372134bc886e8a50a43c684f2f96e43d9291d3f

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.81.0rc2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6604e2cffae1e5d3c0fd096c3633239dec8548a948b093b3eb7546adeb3348fa
MD5 f16e9bbc992b4eecb40e3d0054043ad1
BLAKE2b-256 46fc5b6c4f16fe4ef7182b2ff5da56b9e770cb81fdfa01e374f3a272757ae861

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.81.0rc2-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.81.0rc2-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 9037f96a85dd84e9fb85d2bb16aa3c4e9f6933ba4bbb23570b5bd50b5baf7dab
MD5 d72af98b347cd4172e0cff57276ae126
BLAKE2b-256 3deb003e37dd7f6768c8b652d9ead56b039cd1e3dd49efaa21dc5339ef33ea8d

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.81.0rc2-pp37-pypy37_pp73-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.81.0rc2-pp37-pypy37_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 f7f43e7fbf290297c0f398242d1524d3618b72a80999b964af395ba048a1fd04
MD5 8fda5e87d46cb7539ddecdc77f73ef57
BLAKE2b-256 88581ef01131c5bc6863bbf58f1b1ab27417c3e39173cd7045779531718c9907

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.81.0rc2-cp37-abi3-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.81.0rc2-cp37-abi3-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 4acf59dd3a4b94f8b379418e8ac797a4a8a0127b9f5798089aa6dd2d12780650
MD5 708308c4c45ef0ac2aa4480418e8a2aa
BLAKE2b-256 a60c7ae2e22909f929b5358047fe8c5191cee189627e0645b4bce50f9a84632d

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.81.0rc2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d8956a66ca434cd1b1132cdadff4658a03d8c521c06e1ca90250870a8dab075f
MD5 b8f504b95e07becae131e5de81bac749
BLAKE2b-256 7ca37fa0e3b9f39fee719a12451d8075c4822b785196560f4bcc8e04a108c06b

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.81.0rc2-cp37-abi3-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 ecc6884d0402dc5bfdba09ac79dc3a68fe1e341f3d4984f9c98a188318837b1b
MD5 d3bc70492d31b1da93f589d8c255214c
BLAKE2b-256 f74ffa04cb7457103a2b4aebc95fdf554842d7f361e10bc17025dd4b3d6b5906

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.81.0rc2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 90d76c7cf2b1d4522fcdc9e6339273a03e4decac3069320eb21c4b553ae19abc
MD5 d9526455030e7c70ba4c8eefbf3de6fb
BLAKE2b-256 b78231b381e434ddc2a38f976d43ce4f002d3bb24c7fa62fd432cc659bcc2152

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.81.0rc2-cp37-abi3-macosx_10_16_x86_64.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.81.0rc2-cp37-abi3-macosx_10_16_x86_64.whl
Algorithm Hash digest
SHA256 a7874051e24f116ebf95272175261774dd7b9df26f38413593e9d651c5eb56ee
MD5 aeb245b400621c2bb7d767e823e37af6
BLAKE2b-256 87d3a337a4c805119b789542e2d0bda94fdcb9211abbf79ef5a6c8d5ab2aa387

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