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

Uploaded Source

Built Distributions

matrix_synapse-1.80.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.80.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.80.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.80.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.80.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.80.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.80.0rc1-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.80.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.80.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.80.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.80.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.80.0rc1.tar.gz.

File metadata

  • Download URL: matrix_synapse-1.80.0rc1.tar.gz
  • Upload date:
  • Size: 3.2 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.80.0rc1.tar.gz
Algorithm Hash digest
SHA256 4a4536ce8c82381d2a6a86fe208fb5b7e6507e34cee491d93ad70dd2c7d40b66
MD5 ba863133dfcdb405004fda784c9004a5
BLAKE2b-256 ddc999acf577a8532fbef633925ef2da65de8a070b0b25ce168d3f85766a66ff

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.80.0rc1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f73e17a9d9c93a2f5eec323e7d4a9080967d02d091e764c433e6c7b2a884e37d
MD5 e2c70153c4a91ef2bda898984d9c5980
BLAKE2b-256 7d5c87864b6a7f24f1309a4d536a1be5be691f911eaa591da433976ae8fed89c

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.80.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.80.0rc1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 4d5071484917c31fa25c4b89e6d28eded89444296f9286cccec7bb6cfe58662b
MD5 e860146c2507b893ca347ca30ca1f625
BLAKE2b-256 863569b3cc1f6fced5cd02704f1147cbade70681799c0aa5cfc93881da15a88c

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.80.0rc1-pp39-pypy39_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 c48d6c26fad091397275e9a783f911e765d8ae99bf725cc2ea5b179ec52f6b17
MD5 4b0a959104f6bf2a8151eb24b747e182
BLAKE2b-256 53f1d6cc33f82e617c5e236a66d7ba4b107a436de43719eed9fbbba2311e58dd

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.80.0rc1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8d1669e2a61dd4b19402b6d2f576174698a233a190cbad9ebfb8138de0bb5cc2
MD5 f5f96b5f5c691a68184cf51c8023b71f
BLAKE2b-256 8d1a12db93e51b4fa42e1100e278660475da82ae399c190aa7b9fc8529233428

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.80.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.80.0rc1-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 e20ce957ce5bd968ffd4fa2caa12ce4d32e2a931de6bc921d688099122213eb1
MD5 2f555ab7542d278523bf2bc977b04e0f
BLAKE2b-256 ba935227f65f66a10cb85750da67b1895bf6a3c3d1c6c882bed7b4c40b12fcbf

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.80.0rc1-pp38-pypy38_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 8d32773e2aa65cfac3b33cfd3ae652c739138a898cd4ea05859e30ddf22fbd7b
MD5 6f9267901ede2bcf519a249c0187e1e9
BLAKE2b-256 68e2e17ed65bfa71967f844071df78d5a521b923d8f910f510852cc253ba7f8d

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.80.0rc1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5a05ad216d81547408c2e22941a0dc2e04cff3bf44c13ca7a7cca294f01fdaa9
MD5 f480dbe017452d3feb88eb2f970eb0fe
BLAKE2b-256 cd43ceabeafc785f5f3fc7731f7bd3435ad4d44c65cadd0d58f5451aa4f2534a

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.80.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.80.0rc1-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a41a841e0d080558248cc6d27ca2e9663b5087edddfe74610c53426ea64f4ebe
MD5 b3d94000a8940caec6bb526d6de97a52
BLAKE2b-256 ac6db32b2254ac74423271bc345d218e6841f15183c7025b96aec4d277c50f35

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.80.0rc1-pp37-pypy37_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 996bbcda79642255e91f4f6c86270b30e221b7f5011a14aa8aa5ce380a32f6b1
MD5 8b5803c0b65e8f9ea1e20e73c692f3c0
BLAKE2b-256 0b879cd32e355570e81a6b971d9e862c8964526825f9b9c47fd682ad9751bd75

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.80.0rc1-cp37-abi3-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 18adb2d0cd384091932d91f41c6daca54435fa967c92e4e276eeeecba554846f
MD5 118984828b8dbe80eb41aaa6d40aa7a0
BLAKE2b-256 576a34ef5fad3f05931b6e8c1f2d07a807da9b58fdbb610dcfe32da087201fda

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.80.0rc1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a19f88a5bd2f866377e1a88e50338a47574f1980d86c0e5ed321feedee8b18c4
MD5 c57701811939a47720077948cb71eb1d
BLAKE2b-256 4558661a15df1036e3677604cc5f2d373cd31a3405ae8f692bc47ea707524506

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.80.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.80.0rc1-cp37-abi3-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c836dd61ced3470d27608e8acf744a757599609a5879c95dc8499f682b0c4ac3
MD5 e93fc197c599a6a654f2bfccff498047
BLAKE2b-256 58290bd5bdb8b712d7f2030713703cdb2ee66764352fe615361c08ac00d59759

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.80.0rc1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 caafee0a6c406bd3e85fa4f3e6f21b02a364a4dcd53fe35386b75fe53b108d98
MD5 c65764cad2ee6564866f0e06850e610b
BLAKE2b-256 0e51a45f7f2be8fac410b2a9ff5a6a079deea6d1806699e01f5915b394ec50ff

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.80.0rc1-cp37-abi3-macosx_10_16_x86_64.whl
Algorithm Hash digest
SHA256 24aade4163b804a06af59837ece904d848cb8e9eed1ec665fd3f0bc1ed24c187
MD5 5895a5a6eb98aa0054ba24409fea3f86
BLAKE2b-256 f8da7d4eb4350e5c43d70ef4714883643538dbb9de69a27b0e08a956d1187946

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