# Matrix Authentication Service setup Este directorio contiene la configuración base para desplegar [Matrix Authentication Service (MAS)](https://github.com/element-hq/matrix-authentication-service) 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: ```bash 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`.