10 KiB
Guide Matrix — utilisation et connexion
Objet : rejoindre et administrer le serveur Matrix (Synapse + Element) auto-hébergé. Source : déploiement documenté dans
g9-migration/journal.md(Phase 2, 10/10/2026) etDOSSIER-SOFTWARE.mdS8. Aucun secret dans ce guide — les identifiants vivent dans Vaultwarden, jamais dans le dépôt (.gitignore:matrix.env,*.key,*.cred).
1. État du serveur
| Composant | Machine | URL | Rôle |
|---|---|---|---|
| Synapse (homeserver) | G9 (.24) |
http://192.168.1.24:8008 |
Serveur Matrix (API + fédération) |
| Element Web (client) | G9 (.24) |
http://192.168.1.24:8009 |
Client web, préconfiguré sur le homeserver local |
| Salon ops | — | !mp7MFx9QbrJ0ARtzw… |
Canal d'alertes (watchtower, restic, n8n) — user ops-bot |
| Cible TLS (Phase 4) | — | https://matrix.folzocorp.fr |
Accès sécurisé via Caddy (planifié, non en place) |
- Version Synapse : 1.162.0 ; version Element Web : 1.12.30.
server_namedu homeserver :192.168.1.24→ les identifiants ont la forme@pseudo:192.168.1.24.- Cible finale documentée : migration Matrix + Jitsi vers le J5040 (
.1) (16 Go) — voirDOSSIER-SOFTWARE.mdS2.4/S8.
2. Connexion
2.1 Element Web (PC, LAN)
- Ouvrir
http://192.168.1.24:8009. - Le homeserver est déjà préconfiguré (
config.jsonmonté en lecture seule dans le conteneur →base_url: http://192.168.1.24:8008). Rien à saisir. - Se connecter avec son compte (§3).
⚠️ En
http://IP, Element Web affiche un rond infini (contexte non sécurisé) — lire la section 5. Dépannage avant de diagnostiquer le serveur. Fix recommandé : tunnellocalhost(§5.2) ou TLS Phase 4.
2.2 Element Android (téléphone)
- Installer Element (Play Store / F-Droid).
- À l'écran de bienvenue : Modifier le serveur d'accueil (Changer de serveur).
- Saisir
http://192.168.1.24:8008→ Suivant → Se connecter. - Nom d'utilisateur = le pseudo sans le domaine (ex.
effi, pas@effi:192.168.1.24) + mot de passe.
2.3 Element Desktop (PC)
- Installer Element Desktop (le navigateur n'est pas concerné par la restriction de contexte sécurisé).
- Écran de connexion → Modifier le serveur d'accueil →
http://192.168.1.24:8008.
2.4 Accès depuis l'extérieur (hors LAN)
Matrix n'est pas exposé sur Internet (volontairement). Deux voies :
| Voie | Comment |
|---|---|
WireGuard (J5040 .1) |
Se connecter au VPN depuis le téléphone/PC portable → le LAN .1/24 est atteignable → ouvrir http://192.168.1.24:8009 (Android : saisir directement le homeserver dans l'app) |
| TLS Phase 4 (à faire) | Caddy + matrix.folzocorp.fr → l'app Element utilise https://matrix.folzocorp.fr, accessible de façon sécurisée |
3. Création de compte
L'inscription publique est désactivée (pas de self-registration sur un serveur privé). Les comptes se créent côté serveur, en SSH sur le G9 (
.24).
3.1 Prérequis : un compte admin Synapse
Si aucun admin n'existe, en créer un via le conteneur Synapse :
# sur .24 — trouver le nom du conteneur
docker ps --format '{{.Names}}' | grep -i synapse
# créer un utilisateur admin (le script lit le shared secret du homeserver.yaml)
docker exec -it <conteneur_synapse> register_new_matrix_user \
-c /data/homeserver.yaml -a -u <ADMIN> -p '<MOT_DE_PASSE_ADMIN>'
Si
register_new_matrix_userrefuse (pas deregistration_shared_secretdanshomeserver.yaml) : l'ajouter viasudodans/data/homeserver.yaml(registration_shared_secret: <SECRET_ALEATOIRE>, généré paropenssl rand -hex 32), restart du conteneur, relancer la commande, puis retirer le secret et restart à nouveau. Même pattern queroom_creation: true(journal 2026-10-09). Stocker<MOT_DE_PASSE_ADMIN>dans Vaultwarden.
3.2 Créer les comptes (famille, bots) via l'API admin
Étape 1 — obtenir un token admin (login avec le compte admin) :
curl -s -X POST 'http://192.168.1.24:8008/_matrix/client/v3/login' \
-H 'Content-Type: application/json' \
-d '{
"auth": {
"type": "m.login.password",
"identifier": { "type": "m.id.user", "user": "<ADMIN>" },
"passphrase": "<MOT_DE_PASSE_ADMIN>"
}
}'
# → réponse JSON : récupérer "access_token" (= <TOKEN_ADMIN>)
Étape 2 — créer l'utilisateur (API admin v2, PUT = enregistrement) :
curl -s -X PUT 'http://192.168.1.24:8008/_synapse/admin/v2/users/@<PSEUDO>:192.168.1.24' \
-H "Authorization: Bearer <TOKEN_ADMIN>" \
-H 'Content-Type: application/json' \
-d '{
"password": "<MOT_DE_PASSE_UTILISATEUR>",
"display_name": "<Nom affiché>",
"admin": false
}'
# → 201 Created = compte créé
admin: truepour un second administrateur,falsepour la famille/bots.- Le pseudo est en minuscules, sans espaces ni accents (règle Matrix).
3.3 Première connexion + chiffrement (E2E)
- Ouvrir Element (§2), se connecter avec
@<PSEUDO>:192.168.1.24(Web/Desktop : pseudo seul suffit). - Element demande une phrase de passe de récupération (secure backup) → la noter hors-ligne (papier), c'est la porte de sortie du chiffrement.
- Vérifier ses sessions : Paramètres → Sécurité → Vérification (QR code entre téléphone et PC) pour valider le chiffrement de bout en bout.
3.4 Désinscription / suppression
- Désactiver un compte (propre, conserve la trace) :
curl -s -X POST 'http://192.168.1.24:8008/_synapse/admin/v1/deactivate/<PSEUDO>' \ -H "Authorization: Bearer <TOKEN_ADMIN>" \ -H 'Content-Type: application/json' \ -d '{ "erase": true }' - Vérifier que l'inscription publique reste fermée dans
homeserver.yaml:disable_registration: true(ne pas activerenable_registrationsans point d'accès protégé).
4. Usage type (rappel du plan, S8)
| Salon | Contenu |
|---|---|
| Famille | Messagerie quotidienne du foyer (complément de WhatsApp, pas un remplacement), visio Jitsi intégrée à Element |
| Ops | Alertes machine : watchtower (MAJ images), restic (backup G9), n8n — via ops-bot |
| hermes (prévu) | Salon où la famille parle à Effi (assistant, Phase 3 du second cerveau) |
5. Dépannage
5.1 Le rond infini dans Element Web (cause racine documentée)
Symptôme : page noire, spinner infini sur http://192.168.1.24:8009. Console (F12) :
Browser missing feature: 'crypto'
Browser missing feature: 'securecontext'
Error initialising Matrix session TypeError: window.crypto.randomUUID is not a function
Cause : Element ≥ 1.12 exige un contexte sécurisé (HTTPS, localhost ou file:). En http://<IP>, le navigateur coupe crypto.randomUUID → Element n'arrive pas à initialiser la session. Le serveur n'y est pas pour rien.
Anodins (à ne pas poursuivre) : 404 config.<host>.json (config optionnelle par hôte) et 404 /_matrix/client/v1/auth_metadata (endpoint optionnel).
Cause secondaire : un vieux service worker peut garder en cache une config obsolète (la config cassée « matrix.org » d'avant le fix du 10/10). Nettoyage : F12 → Application → Service Workers → Unregister, puis Storage → Clear site data, puis Ctrl+Maj+R.
5.2 Workaround sans TLS : tunnel localhost
localhost est un contexte sécurisé → Element fonctionne. Depuis le PC :
ssh -L 8009:192.168.1.24:8009 -L 8008:192.168.1.24:8008 <user>@192.168.1.24
# puis ouvrir http://localhost:8009
5.3 Fix définitif : TLS (Phase 4)
Caddy + matrix.folzocorp.fr (même pattern que obsidian.folzocorp.fr, journal Phase 4) → Element Web servi en HTTPS, spinner résolu, accès distant propre.
5.4 Commandes de diagnostic (côté serveur, tout doit répondre)
# 1) API vivante → JSON avec "versions":[...] (200)
curl -s http://192.168.1.24:8008/_matrix/client/versions
# 2) Element servi + config correcte → 200 + base_url = http://192.168.1.24:8008
curl -s http://192.168.1.24:8009/ -o /dev/null -w '%{http_code}\n'
curl -s http://192.168.1.24:8009/config.json
# 3) CORS (sans lui, Element web est muet) → Access-Control-Allow-Origin: *
curl -s -D - -o /dev/null -H "Origin: http://192.168.1.24:8009" \
http://192.168.1.24:8008/_matrix/client/versions | grep -i access-control
# 4) Conteneurs
docker ps --format '{{.Names}}\t{{.Status}}' | grep -Ei 'synapse|element'
Résultats vérifiés le 11/10/2026 : 1) 200 + versions r0.0.1→v1.12 ; 2) 200 + base_url: http://192.168.1.24:8008 ; 3) Access-Control-Allow-Origin: * ; 4) synapse Synapse/1.162.0 UP. Si ces 4 tests passent et qu'Element tourne en rond → problème 100 % navigateur (§5.1/5.2).
5.5 Alertes ops absentes du salon ops
- Vérifier le token
ops-bot: côté G9,/etc/restic/matrix.env(root,600) pour restic ; workflow n8n « Watchtower Notification » pour les MAJ d'images. - Test d'envoi direct :
curl -s -X POST 'http://192.168.1.24:8008/_matrix/client/v3/rooms/!mp7MFx9QbrJ0ARtzw…/send/m.room.message/test1' \ -H "Authorization: Bearer <TOKEN_OPS_BOT>" \ -H 'Content-Type: application/json' \ -d '{"msgtype":"m.text","body":"test alerte"}' # → 200 + {"event_id":"$…"}
6. Sécurité (règles du projet)
| Règle | Application Matrix |
|---|---|
| Secrets hors dépôt | Token admin, mot de passe admin, matrix.env → Vaultwarden / root only, jamais git |
| Pas d'exposition Internet | Accès LAN ou WireGuard ; TLS Phase 4 pour l'exposition contrôlée |
| 2FA | À activer sur les comptes admin (S9 : 2FA sur tous les services exposés) |
| Comptes famille | admin: false, mot de passe unique par personne, phrase de récupération E2E notée hors-ligne |
Guide créé le 11/10/2026 — état vérifié ce jour sur .24 (Synapse 1.162.0, Element 1.12.30). À réaligner quand Matrix migrera vers le J5040 (.1) et que matrix.folzocorp.fr (Caddy TLS) sera en place.