Administration de la plateforme
Accessible uniquement aux users avec role admin. 3 pages dédiées + tools MCP admin-only.
/admin · Tableau de bord de la plateforme
Vue globale de la plateforme, rafraĂźchie Ă chaque visite :
- Totaux : users, projects, sites (total / running / error), databases, repos, previews running, backups
- 24h : deploys, deploys échoués, actions audit
- Storage : taille totale des backups Nextcloud
- Liens rapides : erreurs audit récentes, actions MCP, health endpoint
/users · Gestion des utilisateurs
Table des users
Chaque row expose :
- Email + nom + user_id
- Role dropdown : client â admin (self-demote interdit)
- rotate key : régénÚre l'API key long-terme (révoque l'ancienne)
- supprimer : delete user (refuse si projects restants)
Créer un user
Deux méthodes dans la sidebar droite :
- Inviter par email : envoie un magic link, user crée sa session au clic. Recommandé.
- CrĂ©er avec API key : gĂ©nĂšre l'user + API key long-terme affichĂ©e 1Ă. Pour CLI/CI/MCP sans email.
/admin/audit · Journal d'audit
Historique complet des actions via MCP, API REST, Web UI, CLI.
Filtres disponibles
- Tool : ex
create_site,delete_project... - Source : mcp | api | web | cli
- Résultat : success | error
- User ID : filtre par utilisateur
- Limit : nombre d'entrées à retourner (défaut 100, max 500)
Colonnes
- Timestamp (ISO)
- User (email joint depuis DB, ou "bootstrap")
- Tool + source + résultat + durée
- Détail : errorMsg surligné rouge OU params du call (JSON expandable)
push_files). L'audit log est admin only pour cette raison.Tools MCP admin-only
list_users·delete_user·update_user_roleinvite_user: magic link valable 24h (vs 15 min pour un login normal viarequest_magic_link)update_project_owner: transfert de project entre userslist_audit_log·audit_stats·admin_statsexec_site: shell arbitraire dans un container (dangereux, admin only)change_site_runtime: passe un site sur un autre runtime. DESTRUCTIF : wipe siteDir + starter frais, volumes Docker prĂ©servĂ©s. Utile pour corriger un site créé sur le mauvais runtime (exstaticâfrontend-static). UI : dĂ©tail site â âChange runtime · adminâ.
Compte bootstrap
Iridflow supporte un compte bootstrap via IRIDFLOW_ADMIN_API_KEY dans /etc/iridflow/mcp.env. Cette clé donne role admin sans user en DB (utile pour le premier login sur une nouvelle instance).
- User apparent :
id: "bootstrap", email :bootstrap@iridflow - Les tools qui crĂ©ent au nom d'un user (create_project, rotate_api_keyâŠ) fallback vers le premier admin en DB
- à éviter pour un usage régulier : créer un vrai user admin et utiliser sa propre API key
Détails d'implémentation
Ces Ă©lĂ©ments n'ont d'intĂ©rĂȘt que pour qui exploite la plateforme. Ils sont volontairement absents des pages destinĂ©es aux utilisateurs.
- Sites de préproduction : chaque site vit dans
/opt/iridflow/<projet>/<site>/sur la VM, avec sondocker-compose.yml. C'est ce dossier quedeploy_sitereconstruit, et queregenerate_site_composerépare quand le fichier a disparu. - Identifiants de base : écrits en clair dans le
.secrets.txtdu dossier de la base (chmod 600), en plus d'ĂȘtre retournĂ©s une fois Ă la crĂ©ation. - Sauvegardes : dĂ©posĂ©es sur Nextcloud par WebDAV sous
Iridflow-Backups/<site-slug>/<horodatage>.tar.gz. La rétention est réglée parIRIDFLOW_BACKUPS_RETENTION_DAYS, trente jours par défaut, et la purge tourne avec le backup automatique de 03:00 UTC. - Exports téléchargeables : fichiers locaux purgés par le timer systemd
iridflow-exports-cleanup.timer. - Journaux de production : l'interface n'expose que les journaux des conteneurs Docker de préproduction et des previews. Ceux d'un conteneur de production se lisent sur la grappe, conteneur par conteneur.
Sécurité opérationnelle
Rotation des clés
Rotate périodiquement les API keys long-terme (mensuel recommandé). Chaque rotate audite l'action dans audit_log.
Audit régulier
Check /admin/audit?result=error pour repérer les erreurs récurrentes (auth, RBAC, tool failures).
Backups plateforme
La DB SQLite Iridflow (/var/lib/iridflow/iridflow.db) n'a pas de backup auto en V1. Snapshot manuel recommandé avant grosses opérations (delete cascade, rotation admin bootstrap...).