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

Uploaded Source

Built Distributions

matrix_synapse-1.75.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.75.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.75.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.75.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.75.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.75.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.75.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.75.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.75.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.75.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.75.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.75.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.75.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.75.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.75.0.tar.gz.

File metadata

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

File hashes

Hashes for matrix_synapse-1.75.0.tar.gz
Algorithm Hash digest
SHA256 d1eed00cb63f562fa7919277d1a7ab57d2896e033d39b9a11834537d0dc6757d
MD5 4920f1d0c654a8bddff4356db961ce7d
BLAKE2b-256 99103796ded90d09f3c871d6b57ccdc0f9113328de5d974f7ba4295e58165aef

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.75.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b8e19723ee7d0dec8a5e01a72f58cc0d12c78adbd88a2a7961c43665398a6931
MD5 73c92e934c384e53af00997c39a84c77
BLAKE2b-256 99d6cedb1042e985912b97876927702cb95d1a30a69242cffa6e04629331d9b2

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.75.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.75.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 84c92b36df2546831cb14bc4b2b088298d3192a15fa3164469e66d7a86ebeeeb
MD5 b979accc437ce6b90f8b13fb625a0a56
BLAKE2b-256 9c225a7436696645e2c34acfb0d14291a881fbd142001d63c4fca4e7304ec3d2

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.75.0-pp39-pypy39_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 227648a63a99008cabe40f7dbf2c2860fde83eb15e6972ce0d7855019fe08f37
MD5 0e4ca46d0ab70368e5c05480a0ca966d
BLAKE2b-256 be832b531f45fee5f4993c68e488759afdf7dd707b1c6e46f5568f0cbf226a19

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.75.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a21914205ef431237280b87ed6cfb9ff56bff13e003d14069e616df086f05291
MD5 532ebc7a43fe2e33322b0519eebf89e2
BLAKE2b-256 1454742c98c56b2da6509c40c2fe31fd4ba6e9f7774057eb4910e29a43ee6277

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.75.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.75.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d6b42008fd084f9a52ebb389e7b266cd3a19e3dbfa39cade62101f9c4b9b2bd1
MD5 ee0498a3f70f1f5f8af5007b2b5ed574
BLAKE2b-256 ea44fbbe6455db64102558552ac52bb78e9de0eb3310f408fcc8f47df9f986b0

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.75.0-pp38-pypy38_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 2b5124b6a4b9505c7b346cfc0422ea17ae23446d8b4c9df74f98fe74590eb5f5
MD5 c933bd44a4a6b591e71c11f238fafdf2
BLAKE2b-256 7a18bf33969faeb66374357d8f90602a58d1b1f68ad4d9de2973b7decd9d6dfd

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.75.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 33e44fcc3a5e2c3ffbdcf855dbe2794945354fa3f79b65201721277a576960f8
MD5 25d012ae98d5bd74ea2a0dd99bddacb3
BLAKE2b-256 f8e9b6cce70752b7f6a24817f030ef570da8e02d426002cb255e58231b888994

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.75.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.75.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 5853a4fb855acddf64272fa1a1f3bb88308e49237ad31bff4e8e8ec21075a682
MD5 40f0b5cb1274216ab24f963981a3210c
BLAKE2b-256 1065dafc9b2a0cc10b34de5ced31510a890d1db389f38024c6c4959c8ccee081

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.75.0-pp37-pypy37_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 8f8520c10b37c408816b7a640108e238f8c5d9b1eacb18d260dffcc9632d6fb3
MD5 d9e9582a72419a4b95884ed3b18c6ee9
BLAKE2b-256 d45a3781911184648c4dbfe8bf4bda68a5f23dbee92b4b66c58106fcbee3c101

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.75.0-cp37-abi3-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 38a8aeb46dbc2f1a4dae0ebae4d7c7ec01f50eafa276522aba29b0dc30743f34
MD5 48719a1e097f0cb9bd101e37eb98f51a
BLAKE2b-256 5a33538bcd8f0bb64c42fff3a184f210f0a8f6fb933cfe07c5ffb2479b944797

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.75.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 afb25dc57967a6d92ffd9cdcffaa7e63e9529d836c4fb230d389ed65427e1aaf
MD5 442954f1eeace368a2aacd81e63ae6e4
BLAKE2b-256 1cc15280393958872da453ea7ee47247709c78c9e106afee172f109c121fcc28

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.75.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.75.0-cp37-abi3-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 8dbfe8cf2af8eea4f4c7115f547a6461a3283e5f3f3cf3cc637227d884576089
MD5 df4b2ff7a2d12d63068008fa1011e878
BLAKE2b-256 ad14312c74e755b421e1dbcfd0438fb1e726dc290dfa4f2ecf4e648358bc49cd

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.75.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 83b20a303c41de1f3571ba6bd3138ca9d80f214501c85244142b77ea315e7623
MD5 65995eb1fbd6b5aa59d0f6d9a8c72093
BLAKE2b-256 8541a7268dd0eec91fea0ff49bd3f1cf3daf2af93106e7fedf10ecf9f56b316f

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.75.0-cp37-abi3-macosx_10_16_x86_64.whl
Algorithm Hash digest
SHA256 8d0555acb5fdab1c77e65d08678d17f6a790a094b1b256f8dac244c55e7a8079
MD5 00a16ed295391a770bb639f1dd863fa0
BLAKE2b-256 a57a85c7d3b5ac6b281a8261834a7cb8ffda4cff31d11592649f89e7bcd40905

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