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

Uploaded Source

Built Distributions

matrix_synapse-1.81.0rc1-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.0rc1-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.0rc1-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.0rc1-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.0rc1-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.0rc1-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.0rc1-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.0rc1-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.0rc1-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.0rc1-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.0rc1-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.0rc1.tar.gz.

File metadata

  • Download URL: matrix_synapse-1.81.0rc1.tar.gz
  • Upload date:
  • Size: 3.2 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.81.0rc1.tar.gz
Algorithm Hash digest
SHA256 4e355559813409e0e091cb139fbab991b2600ed815f6c029efce741f5f803d9b
MD5 4c2dcff46f595d58315348361cf551c8
BLAKE2b-256 4761259b64836d700ff6d784757cf32f1e4658afd899ec1e6ba619aefaceedd7

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.81.0rc1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 599baaeae986a545e1c42f1994cf45b0fb057f7dc38597545c123dbca052329d
MD5 bdf620ca6f6683b84ccb38e12d68fdad
BLAKE2b-256 84ef4dba8554f025b3640d47b5882683a38e866cc0f5ce38d14338f9fabc2f38

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.81.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.81.0rc1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 e6f246f4259285d23f6c28d62e5503fd56f23571b3ed20c68ac825d06d6e40d2
MD5 7ff094e9a466cb347ab61d44bc92b2fe
BLAKE2b-256 1b6a89f26c07b166a57fe1501f30b23c114b76494bae80bb56fd3e94c2b2d7ee

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.81.0rc1-pp39-pypy39_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 548803a917d9704957c43a5b657bab8e5f93ca5582be21aa6d00a71fdc909b2c
MD5 09c0a510784acb2a7e8ded1b08ef6841
BLAKE2b-256 f7eb756a0a92913f2665f160b7a13e04e74e72cb1dd88e574f4e1caedf39d680

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.81.0rc1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4d32121a972a22807dd3b57bbc5cbc66f654ca68300b864a2806765afab8f3aa
MD5 2270cfd34f78677015ead7d6d9429998
BLAKE2b-256 7408efbaf33084a9b84d9940741bcd0ef84b825d53581091234c68a4e51c2bce

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.81.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.81.0rc1-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 eeeb95dafe4127519538fdf9c4d00b4425defdd92b7fdab6be0243c16625f7eb
MD5 388c295503077dbf9cc3ed3b976cceb7
BLAKE2b-256 3d0ebc6dfae7c5e1eb3181f5e03ebccb862078e15ed8d3882f3d175233ad3b23

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.81.0rc1-pp38-pypy38_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 edb3b2d66e4bf5371765c0362e527cca6b4be3093e9bf07265a9934a7d3cf342
MD5 74042f663037f6371be4cb3f21b0fd23
BLAKE2b-256 40d842ab9293ef5710c509180fe1a9b6c3e41ad979d53f9f10374d11a136331e

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.81.0rc1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7e6d235d3c2eadb93f2f441589541e12ccfd52cdb42181f24d77ed9e80357f30
MD5 968b2db5c2bbc17ae2544740e62af02c
BLAKE2b-256 96e36d8cd8ed678d8a4da842a69e58bc1c7ac01519239fdb5cff35dc9a862659

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.81.0rc1-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.0rc1-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 549b7da3ee623b542d8601d9ecb3e542dc34aa7849a83430f154935e0b20be95
MD5 9feb51390bf06b3a6a44b6c576b1c86c
BLAKE2b-256 145ccb3a11b0a90343706a3002789fd7bdf627f8334b0f6993025fc2d9117e70

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.81.0rc1-pp37-pypy37_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 ee4c33c39b460edd4fdc40ca0b9a833bf9734be68333d853b7d06b92101cb2c8
MD5 f4a0ea03e82ad0087237e26c63e2817d
BLAKE2b-256 f8a957307cd4c18cca57bc7b8285c5945f81dd9c5b17020d91160237bb2a68c6

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.81.0rc1-cp37-abi3-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 1989fc49cea6b42746313c2bdad9c74f422fb05ca61622adf16055d2c625c548
MD5 a3fa32f93c149cbd748c95dfa8355696
BLAKE2b-256 81db3fed5a29232cbca7c3819c4e86921421b2ddda81f2375785dd9b1ee2a9b1

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.81.0rc1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7f16b92c95c6af1f9ce74061b8a2a80fd2c2abc1f52e8f845b3f2cf968b6ab2f
MD5 37c748345bb517737b20aeebeded1c27
BLAKE2b-256 9c22cc9ef2c26839bd654a43f296bf429de80fb4ac7f7b0ac2ddfd920be412e9

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.81.0rc1-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.0rc1-cp37-abi3-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 6dc600bc797d5db6fbbf03343040c3940834bbc90c77bccfa42fc1d3f1b26d68
MD5 d1a707cf9a668d16080b04d8c8e84cf8
BLAKE2b-256 9ec72b9c38086bc67b20e9eac2afb67ead8ff1523895c0ab3bbcd5269395986f

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.81.0rc1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 86b23bb6a2f8028d1855b53f3d8bdb5f12d7272635221ad32c82385560b44cfd
MD5 8291807ff8462410481b45fc19e52208
BLAKE2b-256 1545ebddd0ab39751b19e73cdb2651f8156bc4e2ec4d7131dcefcde970a9940c

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.81.0rc1-cp37-abi3-macosx_10_16_x86_64.whl
Algorithm Hash digest
SHA256 4e7fb37bf38c7482f11f33e62d6770005227abbdb0f2756de05c045826e20645
MD5 f68701b02105022450215a4970f86c49
BLAKE2b-256 8247218a7fbae512fc9799a33dfe19b89677fca0aad000ce777cb70c48b6b4e7

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