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)
Attention
Les params_json peuvent contenir des secrets si le tool en a reçu en input (ex mot de passe DB, contenu de fichiers via push_files). L'audit log est admin only pour cette raison.

Tools MCP admin-only

  • list_users · delete_user · update_user_role
  • invite_user : magic link valable 24h (vs 15 min pour un login normal via request_magic_link)
  • update_project_owner : transfert de project entre users
  • list_audit_log · audit_stats · admin_stats
  • exec_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 (ex static → 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 son docker-compose.yml. C'est ce dossier que deploy_site reconstruit, et que regenerate_site_compose rĂ©pare quand le fichier a disparu.
  • Identifiants de base : Ă©crits en clair dans le .secrets.txt du 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 par IRIDFLOW_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...).

Administration de la plateforme · Docs Iridflow · Iridflow