
Synapse: servidor doméstico de Matrix escrito en Python/Twisted.
element-hq/synapse <https://github.com/element-hq/synapse>_Synapse es un homeserver de código abierto Matrix <https://matrix.org/>_ desarrollado desde 2019 hasta 2023 como parte de la Fundación Matrix.org. La Fundación Matrix.org no puede mantener el mantenimiento de Synapse y continúa siendo desarrollado por Element <https://github.com/element-hq/synapse>; además tienes la opción de otros homeservers Matrix <https://matrix.org/ecosystem/servers/>.
Consulta la entrada de blog The future of Synapse and Dendrite <https://matrix.org/blog/2023/11/06/future-of-synapse-dendrite/>_ para más información.
=========================================================================
Brevemente, Matrix es un estándar abierto para comunicaciones en internet, que soporta federación, cifrado y VoIP. Matrix.org tiene más que decir sobre los objetivos del proyecto Matrix <https://matrix.org/docs/guides/introduction>, y la especificación formal <https://spec.matrix.org/> describe los detalles técnicos.
.. contents::
La documentación de Synapse describe cómo instalar Synapse <https://matrix-org.github.io/synapse/latest/setup/installation.html>. Recomendamos usar imágenes Docker <https://matrix-org.github.io/synapse/latest/setup/installation.html#docker-images-and-ansible-playbooks> o paquetes Debian de Matrix.org <https://matrix-org.github.io/synapse/latest/setup/installation.html#matrixorg-packages>_.
.. _federation:
Synapse tiene una variedad de opciones de configuración <https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html>_ que se pueden usar para personalizar su comportamiento después de la instalación. Hay detalles adicionales sobre cómo configurar Synapse para federación aquí <https://matrix-org.github.io/synapse/latest/federate.html>_.
.. _reverse-proxy:
Se recomienda colocar un proxy inverso 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/> o relayd <https://man.openbsd.org/relayd.8>_ delante de Synapse. Una ventaja de hacerlo es que permite exponer el puerto https predeterminado (443) a los clientes Matrix sin necesidad de ejecutar Synapse con privilegios de root. Para información sobre cómo configurar uno, consulta la documentación de proxy inverso <https://matrix-org.github.io/synapse/latest/reverse_proxy.html>_.
Las instrucciones para actualizar Synapse están en las notas de actualización_. Por favor, revisa estas instrucciones ya que la actualización puede requerir pasos adicionales para algunas versiones de Synapse.
.. _the upgrade notes: https://matrix-org.github.io/synapse/develop/upgrade.html
Synapse utiliza varias dependencias de plataforma como Python y PostgreSQL, y busca seguir las versiones upstream compatibles. Consulta la política de obsolescencia <https://matrix-org.github.io/synapse/latest/deprecation_policy.html>_ para más detalles.
Matrix sirve datos sin procesar proporcionados por el usuario en algunas APIs, específicamente los puntos finales del repositorio de contenido_.
.. _content repository endpoints: https://matrix.org/docs/spec/client_server/latest.html#get-matrix-media-r0-download-servername-mediaid
Si bien hacemos un esfuerzo razonable para mitigar los ataques XSS (por ejemplo, mediante el uso de CSP_), un homeserver Matrix no debe alojarse en un dominio que albergue otras aplicaciones web. Esto se aplica especialmente a compartir el dominio con clientes web Matrix y otras aplicaciones sensibles como el webmail. Consulta https://developer.github.com/changes/2014-04-25-user-content-security para más información.
.. _CSP: https://github.com/matrix-org/synapse/pull/1021
Idealmente, el homeserver no debería estar simplemente en un subdominio diferente, sino en un dominio registrado_ completamente diferente (también conocido como sitio de nivel superior o eTLD+1). Esto se debe a que algunos ataques_ aún son posibles mientras las dos aplicaciones compartan el mismo dominio registrado.
.. _registered domain: https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-03#section-2.3
.. _some attacks: https://en.wikipedia.org/wiki/Session_fixation#Attacks_using_cross-subdomain_cookie
Para ilustrar esto con un ejemplo, si tu Element Web u otra aplicación web sensible está alojada en A.example1.com, idealmente deberías alojar Synapse en example2.com. Alojarlo en B.example1.com ofrece cierta protección, por lo que también es aceptable en algunos escenarios. Sin embargo, no debes alojar tu Synapse en A.example1.com.
Ten en cuenta que todo lo anterior se refiere exclusivamente al dominio utilizado en la configuración public_baseurl de Synapse. En particular, no tiene relación con el dominio mencionado en los MXIDs alojados en ese servidor.
Seguir este consejo garantiza que incluso si se encuentra un XSS en Synapse, el impacto en otras aplicaciones será mínimo.
La forma más fácil de probar tu nueva instalación de Synapse es conectándote a ella desde un cliente web.
A menos que estés ejecutando una instancia de prueba de Synapse en tu máquina local, en general necesitarás habilitar el soporte TLS antes de poder conectarte exitosamente desde un cliente: consulta certificados TLS <https://matrix-org.github.io/synapse/latest/setup/installation.html#tls-certificates>_.
Una forma sencilla de empezar es iniciar sesión o registrarse a través de Element en https://app.element.io/#/login o https://app.element.io/#/register respectivamente. Deberás cambiar el servidor al que te conectas de matrix.org y en su lugar especificar una URL de Homeserver de https://<server_name>:8448 (o simplemente https://<server_name> si estás usando un proxy inverso). Si prefieres usar otro cliente, consulta nuestro desglose de clientes <https://matrix.org/ecosystem/clients/>_.
Si todo va bien, al menos deberías poder iniciar sesión, crear una sala y comenzar a enviar mensajes.
.. _client-user-reg:
Por defecto, el registro de nuevos usuarios a través de clientes Matrix está deshabilitado. Para habilitarlo:
En la sección de configuración de registro <https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#registration>_ establece enable_registration: true en homeserver.yaml.
Luego o:
a. configurar un CAPTCHA <https://matrix-org.github.io/synapse/latest/CAPTCHA_SETUP.html>_, o
b. establecer enable_registration_without_verification: true en homeserver.yaml.
Recomendamos encarecidamente usar un CAPTCHA, particularmente si tu homeserver está expuesto a internet público. Sin él, cualquiera puede registrar cuentas libremente en tu homeserver. Esto puede ser explotado por atacantes para crear spambots dirigidos al resto de la federación Matrix.
Tu nuevo nombre de usuario se formará en parte a partir del server_name y en parte de un localpart que especifiques al crear la cuenta. Tu nombre tendrá la forma de::
@localpart:my.domain.name
(se pronuncia 'at localpart on my dot domain dot name').
Al igual que al iniciar sesión, deberás especificar un 'Custom server'. Especifica tu localpart deseado en el cuadro 'User name'.
El FAQ de administración <https://matrix-org.github.io/synapse/latest/usage/administration/admin_faq.html>_ incluye consejos para tratar algunos problemas comunes. Para más detalles, consulta la documentación más amplia de Synapse <https://matrix-org.github.io/synapse/latest/>_.
Para soporte adicional sobre instalación o gestión de Synapse, por favor pregunta en la sala de soporte comunitario |room|_ (desde una cuenta de matrix.org si es necesario). No usamos GitHub issues para solicitudes de soporte, solo para informes de errores y solicitudes de funciones.
.. |room| replace:: #synapse:matrix.org
.. _room: https://matrix.to/#/#synapse:matrix.org
.. |docs| replace:: docs
.. _docs: docs
Los servidores de identidad tienen la tarea de asignar direcciones de correo electrónico y otros IDs de terceros (3PID) a IDs de usuario de Matrix, así como verificar la propiedad de los 3PID antes de crear esa asignación.
No son donde se almacenan cuentas o credenciales; estos residen en los homeservers. Los servidores de identidad son solo para mapear IDs de terceros a IDs de Matrix.
Este proceso es muy sensible a la seguridad, ya que existe un riesgo obvio de spam si es demasiado fácil registrarse para cuentas Matrix o recolectar datos de 3PID. A largo plazo, esperamos crear un sistema descentralizado para gestionarlo (matrix-doc #712 <https://github.com/matrix-org/matrix-doc/issues/712>), pero mientras tanto, el rol de gestionar la identidad confiable en el ecosistema Matrix se delega a un grupo de socios ecosistémicos conocidos y confiables, que ejecutan 'Servidores de Identidad Matrix' como Sydent <https://github.com/matrix-org/sydent>, cuyo rol es puramente autenticar y rastrear inicios de sesión con 3PID y publicar claves públicas de los usuarios finales.
Puedes alojar tu propia copia de Sydent, pero esto te impedirá contactar a otros usuarios en el ecosistema Matrix a través de su dirección de correo electrónico, y les impedirá encontrarte. Por lo tanto, recomendamos que uses uno de los servidores de identidad centralizados en https://matrix.org o https://vector.im por ahora.
Para reiterar: el servidor de identidad solo se usará si eliges asociar una dirección de correo electrónico a tu cuenta, o enviar una invitación a otro usuario a través de su dirección de correo electrónico.
¡Aceptamos contribuciones a Synapse de la comunidad! El mejor lugar para comenzar es nuestra guía para contribuidores <https://matrix-org.github.io/synapse/latest/development/contributing_guide.html>. Esto es parte de nuestra documentación más amplia <https://matrix-org.github.io/synapse/latest>, que incluye información tanto para desarrolladores de Synapse como para administradores de Synapse. Los desarrolladores podrían estar particularmente interesados en:
Esquema de base de datos de Synapse <https://matrix-org.github.io/synapse/latest/development/database_schema.html>_,notas sobre los detalles de implementación de Synapse <https://matrix-org.github.io/synapse/latest/development/internal_documentation/index.html>_, ycómo usamos git <https://matrix-org.github.io/synapse/latest/development/git.html>_.Además de todo eso, únete a nuestra comunidad de desarrolladores en Matrix: #synapse-dev:matrix.org <https://matrix.to/#/#synapse-dev:matrix.org>_, ¡con humanos reales!
.. |support| image:: https://img.shields.io/matrix/synapse:matrix.org?label=support&logo=matrix :alt: (get support on #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: (discuss development on #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: (Rendered documentation on GitHub Pages) :target: https://matrix-org.github.io/synapse/latest/
.. |license| image:: https://img.shields.io/github/license/matrix-org/synapse :alt: (check license in LICENSE file) :target: LICENSE
.. |pypi| image:: https://img.shields.io/pypi/v/matrix-synapse :alt: (latest version released on PyPi) :target: https://pypi.org/project/matrix-synapse
.. |python| image:: https://img.shields.io/pypi/pyversions/matrix-synapse :alt: (supported python versions) :target: https://pypi.org/project/matrix-synapse