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

Uploaded Source

Built Distributions

matrix_synapse-1.101.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl (4.6 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

matrix_synapse-1.101.0-pp310-pypy310_pp73-macosx_11_0_x86_64.whl (3.6 MB view details)

Uploaded PyPy macOS 11.0+ x86-64

matrix_synapse-1.101.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.6 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

matrix_synapse-1.101.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl (4.6 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

matrix_synapse-1.101.0-pp39-pypy39_pp73-macosx_11_0_x86_64.whl (3.6 MB view details)

Uploaded PyPy macOS 11.0+ x86-64

matrix_synapse-1.101.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.6 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

matrix_synapse-1.101.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl (4.6 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

matrix_synapse-1.101.0-pp38-pypy38_pp73-macosx_11_0_x86_64.whl (3.6 MB view details)

Uploaded PyPy macOS 11.0+ x86-64

matrix_synapse-1.101.0-cp38-abi3-musllinux_1_1_x86_64.whl (4.6 MB view details)

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

matrix_synapse-1.101.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.6 MB view details)

Uploaded CPython 3.8+ manylinux: glibc 2.17+ x86-64

matrix_synapse-1.101.0-cp38-abi3-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl (4.6 MB view details)

Uploaded CPython 3.8+ manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

matrix_synapse-1.101.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.5 MB view details)

Uploaded CPython 3.8+ manylinux: glibc 2.17+ ARM64

matrix_synapse-1.101.0-cp38-abi3-macosx_10_16_x86_64.whl (3.6 MB view details)

Uploaded CPython 3.8+ macOS 10.16+ x86-64

File details

Details for the file matrix_synapse-1.101.0.tar.gz.

File metadata

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

File hashes

Hashes for matrix_synapse-1.101.0.tar.gz
Algorithm Hash digest
SHA256 ca27870aaef60332d3d7ea8eed2b689b586bfee94e36ad59929fe0d4a7ba8c5a
MD5 dcf775772126fcca8bef3a0aae3d26d5
BLAKE2b-256 05552f0dbfb13deb7d50f737bf36f2ad24b5f71c3489f38a526f3f62fc1404d9

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.101.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.101.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 02a5ebddf8e1674f7d9fe8fbaea269fac87a39e3be1d2a895fa6da4558a61fa2
MD5 10431d94565f445ddf0098263053ec3b
BLAKE2b-256 c6ef9ec9c910ff9605e73772a54a24abcb54f40920f32025261dad30dc33a9c7

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.101.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.101.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c15da9420e98bf894f164661d3fda356192bc140f0ea65e1934cc700af2f27ec
MD5 0964bd1dc396d1ca9d04b8a305a5143c
BLAKE2b-256 57d2674df6120355f48b28cfee016c842afbc5e6bf0baa7f4357fbf6f475aa71

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.101.0-pp310-pypy310_pp73-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.101.0-pp310-pypy310_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 de3e4d241f3175ebf00b0566cd7a7f848a027f6abd7fbcd308fe37feee36d8a9
MD5 c82c26b535b79d0fa85949890f616c1e
BLAKE2b-256 736edaca812eddf27f5f6802482d0636779dd189eb055e5128a688fcca7b2b7d

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.101.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9870901683136fedbf7305378016a79f9acbf65b71851aac8654df0e02678b6f
MD5 9578d9c53aa4b8c7b638eb9a643105f6
BLAKE2b-256 0fbe9f3d0daaf9ed01aad93e7f335dec213f5eefc610fb77eb25f5ba230f390b

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.101.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.101.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 75a62a439b1a29946dc394668f4a972c7857ed237fea3e2f63267999fb03b7d7
MD5 42225d2bf2e2245a999f358d282ac763
BLAKE2b-256 95eff269421390914008367af5c60dfe93dd5be8bc40d7b599489a1ef68c1aa3

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.101.0-pp39-pypy39_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 3cdab48ed5f94bed6d87f1fba32e02a1fe1d9f5cd2005a5fe7212f0e73bbf3cc
MD5 ebff00eaf619d6b232b4254bd5eb89c6
BLAKE2b-256 bbf467c967f4c30c9f3e32c84bad6aae5e1f79bac301bbec541e1e30f2415d19

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.101.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cfd8c9c41975914d41627022dc75921ef314ede68a9d69139dd2e41118ea6146
MD5 04bcb9c9ebee39f627ac6d57d77c04d2
BLAKE2b-256 de5963fffd7ddd418cec80df0adc1c2e102b01e32778b0d47f9d0221cc4dcc8a

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.101.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.101.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 f39b947c9804b7f6693c82811b06601459e2a44326c1e3c17df190d106c3f30e
MD5 89da797ecc8c10eafc3774ff3edbd9cc
BLAKE2b-256 78fc50646100543478d63ffae755edc0598b6f94dfcbca93fd96521a66e5ead0

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for matrix_synapse-1.101.0-pp38-pypy38_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 ed3cc2f473867eac88f5cf82577228dc532e1053c77ffc30c4eaa6b51661eab4
MD5 ceefdd4bb411801b648168524799c042
BLAKE2b-256 bc3cbad57f948102a1c2fe36c8af923f8a336fcde53fb554232c6d501cd3ad37

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.101.0-cp38-abi3-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.101.0-cp38-abi3-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 0c3e1cc7f2abb6ffca8dfd7e18f9bb182548b38d50c7efe23d8e38061c70a515
MD5 509d01c6e22058002130bc2b0d30d8d8
BLAKE2b-256 1d7f2dd3356db587f1526dbe13b8c0656513c3e492fcc6733316d9ab720f2d16

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.101.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.101.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 342de51b02301e9d6c6a6daba2bd69ffa146f97e9c0722af0e8730d8b90c67ab
MD5 35a8c51a44fd311511dd6d1c6886fde5
BLAKE2b-256 985d1aebfec49ac20408f25897134d96969ad61ac50291fb4e2a0cbcd33716d0

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.101.0-cp38-abi3-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.101.0-cp38-abi3-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 f5d98cacfffc5579e42eb7cacf8f54ef58d9cba288b807527299c3ebd352252e
MD5 c61f3a87c438a5a24f87285779639cff
BLAKE2b-256 d25b94c70a26407bbbd3824ee37163b1f2988419b5e5a04c6cd7dcce9fe269ba

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.101.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.101.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e695abf6136a4d8ecfbefa7db6f086d7ef8e968b53d01f4f7cfaf1ff6a3e6ada
MD5 7daecbe86bc6a2d232ad44273e481ec0
BLAKE2b-256 dae14a3ee4ce52cbaabdb01ed24339a79d0871f64ff569f801af5b1613705ef6

See more details on using hashes here.

Provenance

File details

Details for the file matrix_synapse-1.101.0-cp38-abi3-macosx_10_16_x86_64.whl.

File metadata

File hashes

Hashes for matrix_synapse-1.101.0-cp38-abi3-macosx_10_16_x86_64.whl
Algorithm Hash digest
SHA256 77ffea14fb1520f519c0d11cc0c508446664afc7204209ee9d357e91a4b1e24f
MD5 bb09bd9fbc5871cd0dd63643e1bfb4be
BLAKE2b-256 2cdee4c5c7f46c6305cfd24b0bd10a4259d7a7777bed5f01076a73d23d9ab056

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