Files

75 lines
3.2 KiB
Markdown

# 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`.