Files
Julien Denizot b9800bad10
CI / rust (push) Has been cancelled
docs: prepare public technical preview
2026-06-24 16:09:22 +02:00

4.1 KiB
Raw Permalink Blame History

Enuxia Frappe AIO

English version

Contrôleur local, sécurisé et orienté exploitation pour une stack Frappe ou ERPNext.

Aperçu technique — v0.1.0

La version actuelle prend en charge l’état des services, les journaux bornés, la création de sauvegardes Frappe, leur historique et leur vérification dintégrité en lecture seule. La restauration, la rétention, la planification, le packaging et le durcissement de production restent à développer.

Pourquoi ce projet

Lexploitation dune stack Frappe auto-hébergée demande souvent un accès direct à Docker, des commandes shell et une connaissance précise du déploiement. Enuxia Frappe AIO vise une couche dexploitation plus sûre :

  • le contrôleur web naccède pas au socket Docker ;
  • le contrôleur nexécute aucune commande système ;
  • les actions privilégiées sont exposées par des opérations typées et autorisées ;
  • les opérations et leurs résultats sont persistés dans SQLite ;
  • les sauvegardes contiennent un manifeste et des empreintes SHA-256 ;
  • la vérification dintégrité est réalisée en lecture seule ;
  • l’état et les journaux des services passent par lagent local.

Fonctionnalités actuelles

  • Agent local Rust avec accès à lAPI Docker
  • Contrôleur Axum/Askama non privilégié
  • Protocole JSON typé sur socket Unix en mode 0600
  • File dopérations persistée dans SQLite
  • Sauvegarde complète dun site Frappe
  • Historique des sauvegardes
  • Vérification dintégrité en lecture seule
  • Vérification des tailles et SHA-256
  • État typé des services Frappe attendus
  • Consultation bornée des journaux
  • Découverte par labels Docker Compose
  • Récupération des opérations interrompues après redémarrage de lagent

Architecture

Navigateur
  |
  v
enuxia-aio-controller
  - non privilégié
  - aucun socket Docker
  - aucune commande shell
  |
  | JSON typé / socket Unix
  v
enuxia-aio-agent
  - opérations autorisées
  - état SQLite
  - accès API Docker
  |
  v
Conteneurs Frappe et conteneurs temporaires dopération

Consultez larchitecture et le modèle de sécurité.

État du projet

Fonction État
État des services Disponible
Journaux bornés Disponible
Création de sauvegarde Disponible
Historique Disponible
Vérification dintégrité Disponible
Restauration Planifiée
Politique de rétention Planifiée
Sauvegardes planifiées Planifiées
Packaging Planifié
Audit de sécurité de production Non réalisé

Démarrage en développement

cargo fmt --all -- --check
cargo check --workspace
cargo test --workspace

Agent

export ENUXIA_AGENT_SOCKET="${XDG_RUNTIME_DIR}/enuxia-frappe-aio/agent.sock"
export ENUXIA_AGENT_STATE_DB="${XDG_STATE_HOME:-$HOME/.local/state}/enuxia-frappe-aio/agent.sqlite3"
export ENUXIA_DOCKER_HOST="unix:///var/run/docker.sock"
export ENUXIA_COMPOSE_PROJECT="mon-projet-frappe"
export ENUXIA_SITE_NAME="site.example.test"

cargo run -p enuxia-aio-agent

Contrôleur

unset ENUXIA_DOCKER_HOST
unset DOCKER_HOST

export ENUXIA_AGENT_SOCKET="${XDG_RUNTIME_DIR}/enuxia-frappe-aio/agent.sock"
export ENUXIA_COMPOSE_PROJECT="mon-projet-frappe"
export ENUXIA_INSTANCE_NAME="mon-instance-frappe"
export ENUXIA_SITE_NAME="site.example.test"
export ENUXIA_TARGET_NAME="nœud-local"

cargo run -p enuxia-aio-controller

Ouvrir http://127.0.0.1:3000.

Sécurité

Lire SECURITY.md avant de signaler une vulnérabilité.

Contraintes principales :

  • ne jamais exposer le socket de lagent sur TCP ;
  • ne jamais exposer le socket Docker au contrôleur ;
  • ne jamais ajouter dexécution shell arbitraire au protocole ;
  • considérer lagent comme un composant local privilégié ;
  • ne pas utiliser cet aperçu technique comme unique mécanisme de sauvegarde.

Licence

Apache License 2.0. Voir LICENSE.

Avertissement

Ce projet open source indépendant est développé par Enuxia. Il nest ni affilié ni approuvé par Frappe Technologies.