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

Uploaded Source

Built Distributions

matrix_synapse-1.75.0rc2-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.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.75.0rc2-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.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.75.0rc2-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.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.75.0rc2-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.0rc2-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.0rc2-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.0rc2-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.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.75.0rc2.tar.gz.

File metadata

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

File hashes

Hashes for matrix_synapse-1.75.0rc2.tar.gz
Algorithm Hash digest
SHA256 4e62acf0afb6568231fec60d9d89445bb404053465ff23af63e85209b8163ef0
MD5 6b60c05a200774170fd5651f75b98dc8
BLAKE2b-256 5d679ebdf22282c1c585e7014acbdd61e2578ad9dca9b554480be4968287729f

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.75.0rc2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6352388da593ef2f31143392bbf47dcc45694e13aca3c28a55b7b08aa644b010
MD5 cb324fb6fffec04bbf4a01bf604b9cb5
BLAKE2b-256 96657146d444c9e04298f48ded25634fb96dada2003136ae150f23c6a70fa655

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.75.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.75.0rc2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d9e8575f67e466ea41317615cab60b5ec5dd2138ef5cddeac6ac81c0d9e437df
MD5 27e6f0ec56b3f684e06a7d41d1e608db
BLAKE2b-256 66a0ed25779cc8ed0546f0bd8a823bed344c7ba004351f922799b4ea4d35a310

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.75.0rc2-pp39-pypy39_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 80a77404d4468d4d306d67a0599c26c34cb7fe76585425cc74179a50a1202cbe
MD5 e5c83d94f08abf26ead6a70c9b537888
BLAKE2b-256 304ce531373528cd97d64e3290f358c3b8f09532f685c54ca5ca3661ad8247aa

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.75.0rc2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8eb7dafdba4f06b5119696b01be2fc5d036c9281d631cf88540e788ecfd65809
MD5 fe2a43911a525c061b6c665d18509585
BLAKE2b-256 c9e186784f308122f4a8adeaaa6e61f9d728693e2ed74c5109fb650896e445d9

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.75.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.75.0rc2-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 73b879ef57b5981d4b0a528c1dc3ffb67d2d61d82b5aaae04e833f528477aa84
MD5 b8b33e0246e74f8a64520c24dea01896
BLAKE2b-256 79f5688faf498cd83e20c8be974a3faefc75ab558a853628b843e20381054926

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.75.0rc2-pp38-pypy38_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 fb9fbc7c5339e2c0493fc0baf3e3e3bd58581b7a10f37e9602be7a98ae982e74
MD5 de3de5da7469af3ff53c094f70bb20d7
BLAKE2b-256 d6ad56349fd08e448f0b37f0ba871bf73c7971886d410d0cf2734256a3f4e35c

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.75.0rc2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b093b3ede419f8cd4504596bfb1f7bde70897a324507b22aff809b51ebc1162c
MD5 883acb33a24296eedad8200326c246b4
BLAKE2b-256 d6f24c287fd54fafc5c8abaf65e52a639da3e6e1f5ccb979a0f08cfa8c9080dd

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.75.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.75.0rc2-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c2521a25e7d1b7c718d6e051e91dfae47b39f086aad21f7e19eb3b127028c198
MD5 4228d1764882c9c1ff5a42e39c2c7ff0
BLAKE2b-256 be1f3dab005c15b6d0eefc7151c84ac25ba48652df0c3b161b313b6e9b2c0f38

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.75.0rc2-pp37-pypy37_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 0ede3be3202627eccfbebce5ef69596882553ffeeb90414c2bc17936c7c145c2
MD5 e577b46051a1150bd59975462dccd6a8
BLAKE2b-256 a3a5ea59016e9b86f3871a6b9bf8833705438d7d403b640f04f701fd5b1185e7

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.75.0rc2-cp37-abi3-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 b86863a87e9b9d48533f96fea9862df2de63e4616d33ddd0482006cce469e185
MD5 2c42ab4c2376215f79d041ebd2c9e5a3
BLAKE2b-256 d98ffb7d2511c022283301021e736d8c9530fd7408acdc4615a084c458e2b0b2

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.75.0rc2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3a3d3afcc7244654bbadc2ebbf81405570eed4134cbfa43235bb9a5b5ed395e1
MD5 46a0f6152a03377edab227870732d386
BLAKE2b-256 7aabcb6833053a0f727fae344f8c44318f6e077f075fe97149127d95170e96f6

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.75.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.75.0rc2-cp37-abi3-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 4d00aebdf4666a71eb385dfddb8e2e4e03dcb6c2f3cd5498c0c33f5fb284c342
MD5 ce8d11554a7cff25f17dda306d9b9036
BLAKE2b-256 12cfe879705a07d8a4db7c1dc589d7bed0f1fe35b35759d2309380fbd06e6a3a

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.75.0rc2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c2e26808022da2aef31dcb92115482d0ae47ac55024a188403923486639240ff
MD5 fc610ba5114961c49a865654eec01acb
BLAKE2b-256 d786ce4aa48e519bf9118ff227a2af80ad6e3a6134da3bd20f01f96290f81b0b

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.75.0rc2-cp37-abi3-macosx_10_16_x86_64.whl
Algorithm Hash digest
SHA256 3c3c4d46391ef24f0fa694dcf51efd14a1b2018c3408dbdfac0586b0f49c8aa2
MD5 0b3b0ad2f05dbad47bc73851334ffb24
BLAKE2b-256 40d1143ad07e2c092bec6c96a5ef078a30945ab2b121226113822f02117b2f3d

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