75 lines
3.2 KiB
Markdown
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`.
|