Blog del Podcast
podcast      GitHub      Twitter   Telegram

Servidor de mensajería Matrix Synapse, en Raspberry, Ubuntu, Debian… con Docker

Tiempo estimado de lectura: 4 minutos. 469 palabras. matrix

Cómo expliqué en el Podcast, no existe una  imagen oficial del contenedor Synapse,  pero black0 ha creado una para todo tipo de arquitecturas, entre ellas ARM. 

El contenedor de black0/synapse se crea exactamente igual que con la  imagen oficial, matrixdotorg/synapse.

He utilizado la versión black0/synapse:v1.20.1,  porque la versión latest, he visto que no tiene compatibilidad con arquitectura ARM,  en el momento de escribir este artículo.

Si vas a instalarlo en un Ubuntu, Debian,… con arquitectura amd64, puedes utilizar la imagen oficial matrixdotorg/synapse. Sustituye en cada comando black0/synapse:v1.20.1 por matrixdotorg/synapse.

Creando archivos de configuración

Vamos a utilizar la imagen con el comando generate, para generar el archivo de configuración de nuestro servidor matrix-synapse.

Crearemos un volumen en la ruta $HOME/docker/synapse-data, dónde están los archivos de configuración.

Recuerda añadir en la variable SYNAPSE_SERVERNAME,  la dirección de tu servidor.

Voy a utilizar matrix.ugeek.duckdns.org, como dirección de ejemplo de mi servidor.

docker run -it --rm         -v $HOME/docker/synapse-data:/data         -e SYNAPSE_SERVER_NAME=matrix.ugeek.duckdns.org         -e SYNAPSE_REPORT_STATS=yes         black0/synapse:v1.20.1 generate

Crear el Contenedor

 Ahora que tenemos los archivos de configuración, vamos a crear el contenedor con el servidor.

docker run -d --name synapse         -v $HOME/docker/synapse-data:/data         -p 8008:8008         black0/synapse:v1.20.1

Si todo ha salido correctamente, conectándonos a la dirección de nuestro servidor por el puerto 8008,  veremos una página de Matrix, conforme el servidor está disponible.

Crear contenedor con traefik

Yo utilizo traefik a modo de proxy inverso y así también consigo mi certificado Let's Encrypt de un modo sencillo con este docker-compose.

Recuerda sustituir la dirección del servidor en los dos lugares que aparece en este docker-compose (matrix.ugeek.duckdns.org).

version: "3"

services:
matrix:
image: "black0/synapse:v1.20.1"
container_name: synapse
#   ports:
#     - "8008:8008"
networks:
- web
volumes:
- $HOME/docker/synapse-data:/data
environment:
- SYNAPSE_NO_TLS=1  # La documentación dice si este valor es igual a 0, permite la federación
- SYNAPSE_SERVER_NAME=matrix.ugeek.duckdns.org
- SYNAPSE_ENABLE_REGISTRATION=1
- SYNAPSE_ALLOW_GUEST=1
- SYNAPSE_REPORT_STATS=1
labels:
- traefik.frontend.rule=Host:matrix.ugeek.duckdns.org
- traefik.frontend.entryPoints=https
- traefik.port=8008
- traefik.backend=synapse

networks:
web:
external: true

Permitir la federación, significa poder comunicarte con otros servidores de Matrix-Synapse

Ahora para levantar el docker:

docker-compose up -d

Creando usuarios

Los usuarios hay que crearlos desde un cliente de Matrix (fluffy Chat, Element,…), en esta web hay un amplio listado para todos los sistemas operativos https://matrix.org/clients/. Pero antes tenemos que habilitar la opción en el servidor.

Para permitir el registro de usuarios, hay que editar el archivo homeserver.yaml y desmarcar la "#" habilitando enable_registration: true

nano ~/docker/synapse-data/homeserver.yaml

Desmarcamos la opción enable_registration y ponemos true.  

# Enable registration for new users.
enable_registration: true

Reinicia el contenedor.

Ahora con nuestro cliente favorito, podemos crear nuestra cuenta en el servidor.

Cerrar registro de usuarios

Si no quieres que se creen más usuarios, siempre puedes volver a marcar con "#" y poner false en enable_registration.

# Enable registration for new users.
enable_registration: false

Fuentes


Publicado por Angel el jueves 28 enero del 2021



También te puede interesar:




Powered by org-bash-blog

Writing in orgmode whith emacs

Licencia de Creative Commons
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional.