Files
element_matrix_chat/mas/README.md
T

3.2 KiB

Matrix Authentication Service setup

Este directorio contiene la configuración base para desplegar Matrix Authentication Service (MAS) junto al stack de Synapse/Element. MAS es el componente necesario para poder delegar el inicio de sesión al flujo OIDC moderno y activar el acceso mediante código QR (MSC4108) desde Element móvil.

Estructura

mas/
├── config.example.yaml   # Plantilla de configuración
├── config.yaml           # (generado) Config en uso por el contenedor
├── keys/                 # Claves de firma de OIDC (no se versionan)
├── scripts/bootstrap.sh  # Script para generar secretos/clave y copiar la config
└── secrets/              # Secretos usados tanto por MAS como por Synapse

Los archivos dentro de keys/ y secrets/ están ignorados en git para evitar exponer credenciales. El script scripts/bootstrap.sh genera la estructura mínima necesaria y solo debe ejecutarse una vez (puedes volver a lanzarlo si algún archivo falta).

Pasos rápidos

  1. Copia la plantilla de configuración y genera secretos/clave privada:

    cd mas
    ./scripts/bootstrap.sh
    

    Esto crea:

    • config.yaml (copiado desde config.example.yaml).
    • secrets/encryption.key: clave hex de 32 bytes para cifrado interno.
    • secrets/shared_secret.txt: token compartido con Synapse (MAS API).
    • keys/mas_signing.key: clave RSA 2048 bits para firmar tokens OIDC.
  2. Edita config.yaml y ajusta:

    • http.public_base: dominio público donde expondrás MAS (ej. https://auth-af2f3d.organic-machine.com/).
    • matrix.homeserver: nombre del servidor Matrix si cambia.
    • El string de conexión a Postgres si usas credenciales distintas.
  3. Copia el contenido de secrets/shared_secret.txt y pégalo en synapse_data/homeserver.yaml dentro de matrix_authentication_service.secret (agregado en este PR).

  4. Publica MAS detrás de tu reverse-proxy/Coolify redirigiendo /_matrix/client/*/(login|logout|refresh) hacia el puerto del servicio.

Consulta la guía en la raíz (README.md) para reiniciar los contenedores con docker compose. Una vez que Synapse y MAS estén en marcha verás el flag org.matrix.msc4108: true al consultar https://matrix-af2f3d.organic-machine.com/_matrix/client/versions y Element mostrará el inicio de sesión por QR.

Reverse proxy / Coolify

  • Publica MAS en un subdominio (p.ej. auth-af2f3d.organic-machine.com) que apunte al puerto 8083 definido en docker-compose.yml.
  • Copia las rutas de compatibilidad:
    location ~ ^/_matrix/client/(.*)/(login|logout|refresh) {
        proxy_pass http://10.10.10.7:8080;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
    }
    
    Ajusta la IP/puerto si usas otra red interna o si el reverse proxy corre en otro host. En Coolify puedes crear una regla HTTP adicional que apunte al contenedor mas.
  • Expón el endpoint de rendezvous en https://auth.../_matrix/client/unstable/org.matrix.msc4108/rendezvous para que el valor coincida con msc4108_delegation_endpoint en synapse_data/homeserver.yaml.