
Synapse: homeserver Matrix escrito em Python/Twisted.
element-hq/synapse <https://github.com/element-hq/synapse>_O Synapse é um homeserver de código aberto do Matrix <https://matrix.org/>_ desenvolvido
de 2019 a 2023 como parte da Fundação Matrix.org. A Fundação Matrix.org
não tem recursos para manter o Synapse e ele
continua a ser desenvolvido pela Element <https://github.com/element-hq/synapse>;
adicionalmente, você tem a escolha de outros homeservers Matrix <https://matrix.org/ecosystem/servers/>.
Veja a postagem no blog The future of Synapse and Dendrite <https://matrix.org/blog/2023/11/06/future-of-synapse-dendrite/>_
para mais informações.
================================================================================
Resumidamente, Matrix é um padrão aberto para comunicações na internet, suportando
federação, criptografia e VoIP. Matrix.org tem mais a dizer sobre os objetivos do projeto Matrix <https://matrix.org/docs/guides/introduction>, e a especificação formal <https://spec.matrix.org/> descreve os detalhes técnicos.
.. contents::
A documentação do Synapse descreve como instalar o Synapse <https://matrix-org.github.io/synapse/latest/setup/installation.html>. Recomendamos usar
imagens Docker <https://matrix-org.github.io/synapse/latest/setup/installation.html#docker-images-and-ansible-playbooks> ou pacotes Debian do Matrix.org <https://matrix-org.github.io/synapse/latest/setup/installation.html#matrixorg-packages>_.
.. _federation:
O Synapse possui uma variedade de opções de configuração <https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html>_
que podem ser usadas para personalizar seu comportamento após a instalação.
Há detalhes adicionais sobre como configurar o Synapse para federação aqui <https://matrix-org.github.io/synapse/latest/federate.html>_.
.. _reverse-proxy:
É recomendado colocar um proxy reverso como
nginx <https://nginx.org/en/docs/http/ngx_http_proxy_module.html>,
Apache <https://httpd.apache.org/docs/current/mod/mod_proxy_http.html>,
Caddy <https://caddyserver.com/docs/quick-starts/reverse-proxy>,
HAProxy <https://www.haproxy.org/> ou
relayd <https://man.openbsd.org/relayd.8>_ na frente do Synapse. Uma vantagem
de fazer isso é que você pode expor a porta https padrão (443) para
clientes Matrix sem precisar executar o Synapse com privilégios de root.
Para informações sobre como configurar um, veja a documentação do proxy reverso <https://matrix-org.github.io/synapse/latest/reverse_proxy.html>_.
As instruções para atualizar o Synapse estão em the upgrade notes_.
Por favor, verifique estas instruções, pois a atualização pode exigir etapas extras para algumas
versões do Synapse.
.. _the upgrade notes: https://matrix-org.github.io/synapse/develop/upgrade.html
O Synapse usa várias dependências de plataforma, como Python e PostgreSQL,
e visa seguir as versões upstream suportadas. Veja a
política de descontinuação <https://matrix-org.github.io/synapse/latest/deprecation_policy.html>_
para mais detalhes.
O Matrix fornece dados brutos fornecidos pelo usuário em algumas APIs — especificamente os endpoints do repositório de conteúdo_.
.. _endpoints do repositório de conteúdo: https://matrix.org/docs/spec/client_server/latest.html#get-matrix-media-r0-download-servername-mediaid
Embora façamos um esforço razoável para mitigar ataques XSS (por
exemplo, usando CSP_), um homeserver Matrix não deve ser hospedado em um
domínio que hospeda outras aplicações web. Isso se aplica especialmente a compartilhar
o domínio com clientes web Matrix e outras aplicações sensíveis como
webmail. Veja
https://developer.github.com/changes/2014-04-25-user-content-security para mais
informações.
.. _CSP: https://github.com/matrix-org/synapse/pull/1021
Idealmente, o homeserver não deve simplesmente estar em um subdomínio diferente, mas em
um domínio registrado_ completamente diferente (também conhecido como site de nível superior ou
eTLD+1). Isso porque alguns ataques_ ainda são possíveis enquanto as duas
aplicações compartilham o mesmo domínio registrado.
.. _domínio registrado: https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-03#section-2.3
.. _alguns ataques: https://en.wikipedia.org/wiki/Session_fixation#Attacks_using_cross-subdomain_cookie
Para ilustrar com um exemplo, se seu Element Web ou outra aplicação web sensível
estiver hospedada em A.example1.com, você deve idealmente hospedar o Synapse em
example2.com. Alguma proteção é oferecida ao hospedar em
B.example1.com, então isso também é aceitável em alguns cenários.
No entanto, você não deve hospedar seu Synapse em A.example1.com.
Observe que tudo o que foi dito acima se refere exclusivamente ao domínio usado na configuração
public_baseurl do Synapse. Em particular, não tem relação com o domínio
mencionado em MXIDs hospedados naquele servidor.
Seguir este conselho garante que, mesmo que um XSS seja encontrado no Synapse, o impacto em outras aplicações será mínimo.
A maneira mais fácil de testar sua nova instalação do Synapse é conectando-se a ela a partir de um cliente web.
A menos que você esteja executando uma instância de teste do Synapse em sua máquina local,
em geral, você precisará habilitar o suporte a TLS antes de conseguir conectar-se
com sucesso a partir de um cliente: veja
Certificados TLS <https://matrix-org.github.io/synapse/latest/setup/installation.html#tls-certificates>_.
Uma maneira fácil de começar é fazer login ou registrar-se via Element em
https://app.element.io/#/login ou https://app.element.io/#/register respectivamente.
Você precisará alterar o servidor no qual está fazendo login de matrix.org
e especificar uma URL do Homeserver de https://<server_name>:8448
(ou apenas https://<server_name> se estiver usando um proxy reverso).
Se preferir usar outro cliente, consulte nossa
lista de clientes <https://matrix.org/ecosystem/clients/>_.
Se tudo correr bem, você deve pelo menos conseguir fazer login, criar uma sala e começar a enviar mensagens.
.. _client-user-reg:
Por padrão, o registro de novos usuários através de clientes Matrix está desabilitado. Para habilitá-lo:
Na
seção de configuração de registro <https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#registration>_
defina enable_registration: true em homeserver.yaml.
Em seguida, ou:
a. configure um CAPTCHA <https://matrix-org.github.io/synapse/latest/CAPTCHA_SETUP.html>_, ou
b. defina enable_registration_without_verification: true em homeserver.yaml.
Recomendamos fortemente o uso de um CAPTCHA, especialmente se seu homeserver estiver exposto à internet pública. Sem ele, qualquer pessoa pode registrar livremente contas em seu homeserver. Isso pode ser explorado por atacantes para criar spambots visando o resto da federação Matrix.
Seu novo nome de usuário será formado em parte pelo server_name, e em parte
por um localpart que você especifica ao criar a conta. Seu nome terá a
forma de::
@localpart:my.domain.name
(pronunciado "at localpart on my dot domain dot name").
Como ao fazer login, você precisará especificar um "Servidor Personalizado". Especifique seu
localpart desejado no campo 'Nome de usuário'.
O FAQ do Administrador <https://matrix-org.github.io/synapse/latest/usage/administration/admin_faq.html>_
inclui dicas para lidar com alguns problemas comuns. Para mais detalhes, veja
a documentação mais ampla do Synapse <https://matrix-org.github.io/synapse/latest/>_.
Para suporte adicional na instalação ou gerenciamento do Synapse, pergunte na sala de suporte da comunidade |room|_ (a partir de uma conta matrix.org, se necessário). Não usamos o GitHub Issues para solicitações de suporte, apenas para relatórios de bugs e solicitações de funcionalidades.
.. |room| replace:: #synapse:matrix.org
.. _room: https://matrix.to/#/#synapse:matrix.org
.. |docs| replace:: docs
.. _docs: docs
Os servidores de identidade têm a função de mapear endereços de e-mail e outros IDs de Terceiros (3PIDs) para IDs de usuário Matrix, bem como verificar a propriedade dos 3PIDs antes de criar esse mapeamento.
Eles não são onde contas ou credenciais são armazenadas — estes ficam nos homeservidores. Servidores de Identidade são apenas para mapear IDs de terceiros para IDs Matrix.
Este processo é muito sensível à segurança, pois há risco óbvio de spam se for
muito fácil se inscrever para contas Matrix ou coletar dados 3PID. A longo prazo,
esperamos criar um sistema descentralizado para gerenciá-lo (matrix-doc #712 <https://github.com/matrix-org/matrix-doc/issues/712>), mas enquanto isso,
o papel de gerenciar identidade confiável no ecossistema Matrix é terceirizado para
um conjunto de parceiros conhecidos e confiáveis do ecossistema, que executam 'Servidores de Identidade Matrix'
como o Sydent <https://github.com/matrix-org/sydent>, cujo papel
é puramente autenticar e rastrear logins 3PID e publicar chaves públicas de usuários finais.
Você pode hospedar sua própria cópia do Sydent, mas isso impedirá que você alcance outros
usuários no ecossistema Matrix através de seus endereços de e-mail, e impedirá que eles o encontrem.
Portanto, recomendamos que você use um dos servidores de identidade centralizados
em https://matrix.org ou https://vector.im por enquanto.
Para reiterar: o servidor de identidade será usado apenas se você optar por associar um endereço de e-mail à sua conta, ou enviar um convite para outro usuário através de seu endereço de e-mail.
Aceitamos contribuições para o Synapse da comunidade!
O melhor lugar para começar é nosso
guia para contribuidores <https://matrix-org.github.io/synapse/latest/development/contributing_guide.html>.
Isso faz parte da nossa documentação maior <https://matrix-org.github.io/synapse/latest>, que inclui
informações para desenvolvedores do Synapse, bem como administradores do Synapse. Desenvolvedores podem estar particularmente interessados em:
Esquema de banco de dados do Synapse <https://matrix-org.github.io/synapse/latest/development/database_schema.html>_,notas sobre detalhes de implementação do Synapse <https://matrix-org.github.io/synapse/latest/development/internal_documentation/index.html>_, ecomo usamos git <https://matrix-org.github.io/synapse/latest/development/git.html>_.Junto com tudo isso, junte-se à nossa comunidade de desenvolvedores no Matrix:
#synapse-dev:matrix.org <https://matrix.to/#/#synapse-dev:matrix.org>_, com pessoas reais!
.. |support| image:: https://img.shields.io/matrix/synapse:matrix.org?label=support&logo=matrix :alt: (obtenha suporte em #synapse:matrix.org) :target: https://matrix.to/#/#synapse:matrix.org
.. |development| image:: https://img.shields.io/matrix/synapse-dev:matrix.org?label=development&logo=matrix :alt: (discuta o desenvolvimento em #synapse-dev:matrix.org) :target: https://matrix.to/#/#synapse-dev:matrix.org
.. |documentation| image:: https://img.shields.io/badge/documentation-%E2%9C%93-success :alt: (Documentação renderizada no GitHub Pages) :target: https://matrix-org.github.io/synapse/latest/
.. |license| image:: https://img.shields.io/github/license/matrix-org/synapse :alt: (verifique a licença no arquivo LICENSE) :target: LICENSE
.. |pypi| image:: https://img.shields.io/pypi/v/matrix-synapse :alt: (última versão lançada no PyPi) :target: https://pypi.org/project/matrix-synapse
.. |python| image:: https://img.shields.io/pypi/pyversions/matrix-synapse :alt: (versões Python suportadas) :target: https://pypi.org/project/matrix-synapse