4.1 KiB
Enuxia Frappe AIO
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 d’intégrité en lecture seule. La restauration, la rétention, la planification, le packaging et le durcissement de production restent à développer.
Pourquoi ce projet
L’exploitation d’une 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 d’exploitation plus sûre :
- le contrôleur web n’accède pas au socket Docker ;
- le contrôleur n’exé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 d’intégrité est réalisée en lecture seule ;
- l’état et les journaux des services passent par l’agent local.
Fonctionnalités actuelles
- Agent local Rust avec accès à l’API Docker
- Contrôleur Axum/Askama non privilégié
- Protocole JSON typé sur socket Unix en mode
0600 - File d’opérations persistée dans SQLite
- Sauvegarde complète d’un site Frappe
- Historique des sauvegardes
- Vérification d’inté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 l’agent
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 d’opération
Consultez l’architecture 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 d’inté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 l’agent sur TCP ;
- ne jamais exposer le socket Docker au contrôleur ;
- ne jamais ajouter d’exécution shell arbitraire au protocole ;
- considérer l’agent 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 n’est ni affilié ni approuvé par Frappe Technologies.