Dashboard de gestion Docker et monitoring système pour homeserver
Interface web moderne avec gestion complète des conteneurs, surveillance système en temps réel, logs et contrôle d'alimentation.
Développé en Rust 🦀, containerisé, léger et performant.
- Liste des conteneurs : Vue d'ensemble de tous vos conteneurs (actifs et arrêtés)
- Actions en un clic : Start, Stop, Restart
- Logs en temps réel : Consultation et suivi des logs de conteneurs
- Création de conteneurs : Interface pour déployer de nouveaux services
- Surveillance des états : Monitoring visuel avec codes couleur
- CPU & RAM : Graphiques circulaires avec pourcentages en temps réel
- Disques : Liste de tous vos disques avec usage et capacité
- Uptime & Load Average : Informations de disponibilité système
- Services systemd : Statut des services essentiels (Docker, SSH, CUPS, etc.)
- Rafraîchissement automatique : Mise à jour toutes les 5-10 secondes
- Logs système : Accès direct à
journalctldepuis l'interface - Mises à jour : Vérification des paquets disponibles (Debian/Ubuntu)
- Redémarrage/Extinction : Contrôle de l'alimentation avec confirmation
- Interface responsive : Optimisée pour mobile, tablette et desktop
- Binaire statique : Compilé avec musl pour une portabilité maximale
- Image Docker légère : ~50-60 MB seulement (Alpine Linux)
- Build multi-arch : Support natif AMD64 et ARM64
- API REST rapide : Axum + Tokio pour des performances optimales
Créez un fichier docker-compose.yml :
version: '3.8'
services:
crabdeck:
image: ghcr.io/mx10-ac2n/crabdeck:latest
container_name: crabdeck
restart: unless-stopped
ports:
- "3125:3000"
volumes:
# Docker
- /var/run/docker.sock:/var/run/docker.sock:rw
# Système
- /:/host:ro
- /run/systemd:/run/systemd:ro
- /var/log/journal:/var/log/journal:ro
- /run/log/journal:/run/log/journal:ro
- /proc:/host/proc:ro
- /sys:/host/sys:ro
environment:
- RUST_LOG=info,crabdeck=debug
- HOST_ROOT=/host
user: "0:0"
pid: "host"
cap_add:
- SYS_BOOT
- SYS_ADMIN
- SYS_PTRACE
- AUDIT_READ
- SYSLOG
security_opt:
- apparmor:unconfinedPuis lancez :
docker-compose up -dAccédez à http://localhost:3125
docker run -d \
--name crabdeck \
-p 3125:3000 \
-v /var/run/docker.sock:/var/run/docker.sock:rw \
-v /:/host:ro \
-v /run/systemd:/run/systemd:ro \
-v /var/log/journal:/var/log/journal:ro \
-v /proc:/host/proc:ro \
-v /sys:/host/sys:ro \
-e RUST_LOG=info,crabdeck=debug \
-e HOST_ROOT=/host \
--user 0:0 \
--pid host \
--cap-add SYS_BOOT \
--cap-add SYS_ADMIN \
--cap-add SYS_PTRACE \
--cap-add AUDIT_READ \
--cap-add SYSLOG \
--security-opt apparmor:unconfined \
--restart unless-stopped \
ghcr.io/mx10-ac2n/crabdeck:latest# Cloner le repository
git clone https://github.com/MX10-AC2N/CrabDeck.git
cd CrabDeck
# Builder l'image
docker build \
--build-arg TARGET_TRIPLE=x86_64-unknown-linux-musl \
-t crabdeck:latest \
.
# Lancer (utilisez le docker-compose.yml ci-dessus en changeant l'image)CrabDeck nécessite des permissions étendues pour accéder au système hôte :
| Permission | Usage | Nécessaire pour |
|---|---|---|
user: "0:0" |
Exécution en root | Accès socket Docker et systemd |
pid: "host" |
Partage PID namespace | Commandes systemctl/journalctl |
SYS_ADMIN |
Capabilities admin | nsenter et accès système |
SYS_BOOT |
Reboot/shutdown | Contrôle de l'alimentation |
SYS_PTRACE |
Accès namespaces | Communication inter-processus |
| Volumes système | Lecture fichiers hôte | Stats disques, logs, services |
Ces permissions donnent un accès privilégié complet au système hôte.
Utilisez CrabDeck uniquement :
- ✅ Sur des réseaux locaux privés (homelab, LAN)
- ✅ Derrière un firewall
- ✅ Sur des machines que vous contrôlez entièrement
N'exposez PAS CrabDeck :
- ❌ Sur Internet sans authentification
- ❌ Sur des réseaux non sécurisés
- ❌ Sur des serveurs de production critiques
💡 Prochainement : Authentification JWT et mode lecture seule
# Stats système
curl http://localhost:3125/api/system
# Liste des disques
curl http://localhost:3125/api/disks
# Services systemd
curl http://localhost:3125/api/services
# Logs système (journalctl)
curl http://localhost:3125/api/system/logs?lines=100
# Vérifier mises à jour
curl http://localhost:3125/api/updates
# Redémarrer (POST)
curl -X POST http://localhost:3125/api/reboot
# Éteindre (POST)
curl -X POST http://localhost:3125/api/shutdown# Liste des conteneurs
curl http://localhost:3125/api/containers
# Démarrer un conteneur
curl -X POST http://localhost:3125/api/containers/{id}/start
# Arrêter un conteneur
curl -X POST http://localhost:3125/api/containers/{id}/stop
# Redémarrer un conteneur
curl -X POST http://localhost:3125/api/containers/{id}/restart
# Logs d'un conteneur
curl http://localhost:3125/api/containers/{id}/logs?lines=500- Rust 1.83+ (stable et nightly)
- Docker & Docker Compose
- Git
# Cloner le projet
git clone https://github.com/MX10-AC2N/CrabDeck.git
cd CrabDeck
# Installer les dépendances
cargo build
# Lancer en mode développement
cargo run
# Tests
cargo test
# Linting strict
cargo clippy -- -D warnings
# Formatage (nightly)
cargo +nightly fmtCrabDeck/
├── .github/
│ └── workflows/ # CI/CD pipelines
│ ├── ci.yml # Orchestrateur principal
│ ├── ci-test.yml # Tests et formatage
│ ├── ci-amd64.yml # Build AMD64
│ └── ci-arm64.yml # Build ARM64
├── src/
│ ├── main.rs # Point d'entrée Axum
│ ├── handlers/
│ │ ├── mod.rs
│ │ ├── containers.rs # Gestion Docker
│ │ ├── system.rs # Monitoring système
│ │ └── auth.rs # Auth (placeholder)
│ ├── models.rs # Structures de données
│ └── utils.rs # Utilitaires
├── web/
│ └── index.html # Interface utilisateur
├── Cargo.toml # Dépendances Rust
├── Dockerfile # Build multi-stage optimisé
└── README.md
- API REST complète
- Gestion des conteneurs Docker
- Monitoring système temps réel
- Interface web moderne
- Logs conteneurs et système
- CI/CD GitHub Actions
- Images Docker multi-arch
- Authentification (JWT/Basic Auth)
- Mode lecture seule
- Graphiques historiques (CPU/RAM)
- Notifications (Discord, Email)
- Docker Compose UI
- Gestion des images Docker
- Support multi-langue (i18n)
- File explorer intégré
- Éditeur de fichiers
- Terminal web (xterm.js)
- Backup/Restore conteneurs
- Multi-host (gestion de plusieurs serveurs)
- Métriques Prometheus
- Mode dark/light personnalisable
Les contributions sont les bienvenues !
- Fork le projet
- Créez votre branche (
git checkout -b feature/SuperFeature) - Committez vos changements (
git commit -m 'feat: ajout SuperFeature') - Pushez vers la branche (
git push origin feature/SuperFeature) - Ouvrez une Pull Request
- ✅ Code formaté avec
cargo +nightly fmt - ✅ Passe
cargo clippy -- -D warnings - ✅ Tests inclus si applicable
- ✅ Documentation à jour
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
- Axum - Framework web Rust ultra-rapide
- Bollard - Client API Docker
- Sysinfo - Monitoring système
- Tokio - Runtime asynchrone
- HTMX - Interactivité web moderne
- Alpine.js - Framework JS léger
- Tailwind CSS - Design system
🚧 Screenshots à venir
- 🐛 Bug reports : GitHub Issues
- 💡 Feature requests : GitHub Discussions
- 📧 Contact : GitHub Profile
Fait avec ❤️ et 🦀 par MX10-AC2N
⭐ Si vous aimez ce projet, n'hésitez pas à lui donner une étoile !