# VPS-SHOGUN_MATRIX-FLUFFYCHAT

**Date** : 2026-11-01 · **Serveur** : shogun.ovh (Yunohost 12.1.41, Debian 12) · **Agent** : vps-admin

Déploiement d'un serveur Matrix (tuwunel) + client (fluffychat) et création du compte d'un nouvel utilisateur.

## Réalisé

| Élément | Détail |
|---|---|
| Domaine | `chat.shogun.ovh` créé (A/AAAA déjà résolus vers 213.166.193.159 + IPv6) |
| Fluffychat | `2.11.3~ynh1` → **https://chat.shogun.ovh/** (path `/`), certif LE auto |
| Tuwunel | `1.9.4~ynh1` → **https://matrix.shogun.ovh/**, `server_name = shogun.ovh` (IDs `@user:shogun.ovh`), registration **fermé**, calls **off**, fédération **off** (choix explicite) |
| Compte YNH | **`zc`** (ZeroClaw) — `zc@shogun.ovh`, groupe `all_users` → accès Fluffychat |
| Secret | mot de passe YNH dans le coffre `opencode/shogun-zeroclaw` (jamais affiché) |

### Réglages Fluffychat

- Homeserver par défaut patché en `matrix.shogun.ovh` (fichier `/var/www/fluffychat/main.dart.js`, constante `chat.fluffy.default_homeserver`).
- Permission `fluffychat.main` = **`all_users`** uniquement (`visitors` retiré) → accès via SSO YNH obligatoire.

### Login Matrix = LDAP Yunohost

Le paquet tuwunel active **LDAP natif** (`[global.ldap]` → `ldap://localhost:389`, `ou=users,dc=yunohost,dc=org`, `admin_filter` sur le groupe `tuwunel.admin`) :

- l'utilisateur se connecte dans Fluffychat avec ses **identifiants Yunohost** ;
- le compte Matrix est **auto-créé au 1er login** (origin `ldap`) ;
- vérifié : login `zc` → **HTTP 200**, `@zc:shogun.ovh`.

## Pièges rencontrés

1. **`--args` de Yunohost 12 : séparateur `&`, pas `,`** (`"domain=x.tld&path=/"`). Avec `,` → erreur « Pick a valid value for the argument 'domain' » trompeuse. Il n'y a pas non plus de `--no-tty`.
2. **Nom `zeroclaw` déjà pris** : user **système** `zeroclaw` (uid 967, `/opt/zeroclaw`, nologin) = le service **ZeroClaw 0.8.7** (systemd user + linger, `/opt/zeroclaw/bin/zeroclaw daemon`). Yunohost refuse l'homonyme → compte YNH créé sous le nom **`zc`**.
3. **Bug du paquet fluffychat** : son `ynh_replace --match='="matrix.org"'` ne matche plus sur la v2.11.3 (la constante est `"chat.fluffy.default_homeserver","matrix.org"`, sans `=`) → **le homeserver par défaut n'est jamais patché**. Fait manuellement ; **à refaire après chaque upgrade** de l'app.
4. Commandes : c'est `yunohost user permission <add|remove|info>` (il n'y a **pas** `yunohost app permission`).
5. Le mot de passe est visible dans `ps` pendant `yunohost user create -p …` (fenêtre ~1 s, méthode standard YNH).
6. **`registration_token` n'est pas dans le `tuwunel.toml` installé** : il est stocké en app setting (`yunohost app setting tuwunel registration_token`, régénéré le 01/11) mais **inactif** tant que `allow_registration` n'est pas activé via le panneau de config. `allow_federation = false` est la seule ligne posée hors défaut.

## Vérifications faites

```
curl https://matrix.shogun.ovh/_matrix/client/versions     → 200
curl https://shogun.ovh/.well-known/matrix/server          → {"m.server": "matrix.shogun.ovh:443"}
curl https://shogun.ovh/.well-known/matrix/client          → m.homeserver = https://matrix.shogun.ovh
curl https://chat.shogun.ovh/                              → 302 → /yunohost/sso (SSO actif)
```

## Commandes utiles

```bash
# sudo sur shogun : ssh -p 2022 shogun@shogun.ovh (mdp dans pass opencode/shogun-sudo)
yunohost app info tuwunel
yunohost app setting tuwunel registration_token   # secret : créer un compte Matrix à la main
yunohost app config tuwunel                       # panneau : réactiver fédération / registration
yunohost user permission info fluffychat.main     # qui a accès à Fluffychat
yunohost app setting fluffychat default_matrix_server
```

- Comptes Matrix : création manuelle via le **registration token** si LDAP désactivé, sinon LDAP fait tout.
- Réactiver la fédération si besoin : panneau de config de l'app (`allow_federation`) + port 8448 ouvert côté OVH à vérifier.

## Voir aussi

Note [[04_NOTES/VPS-SHOGUN_ZEROCLAW]] (partie ZeroClaw : pairing, canal Matrix du bot, auto-join, cron OS vs `zeroclaw cron`).
