2026-01-16 18:40:39 +01:00
2026-01-16 18:40:39 +01:00
2026-01-16 18:40:39 +01:00
2026-01-16 18:40:39 +01:00
2026-01-16 18:40:39 +01:00
2026-01-16 18:40:39 +01:00
2026-01-16 18:40:39 +01:00
2026-01-16 18:40:39 +01:00
2026-01-16 18:40:39 +01:00
2026-01-16 18:40:39 +01:00
2026-01-16 18:40:39 +01:00
2026-01-16 18:40:39 +01:00
2026-01-16 18:40:39 +01:00
2026-01-16 18:40:39 +01:00
2026-01-16 18:40:39 +01:00
2026-01-16 18:40:39 +01:00
2026-01-16 18:40:39 +01:00
2026-01-16 18:40:39 +01:00
2026-01-16 18:40:39 +01:00
2026-01-16 18:40:39 +01:00
2026-01-16 18:40:39 +01:00
2026-01-16 18:40:39 +01:00
2026-01-16 18:40:39 +01:00
2026-01-16 18:40:39 +01:00
2026-01-16 18:40:39 +01:00
2026-01-16 18:40:39 +01:00
2026-01-16 18:40:39 +01:00
2026-01-16 18:40:39 +01:00

InnotexBoard - Interface d'Administration Debian Légère

Alternative légère à Cockpit pour administrer des serveurs Debian via le web.

🎯 Caractéristiques

  • Authentification PAM - Connexion via les utilisateurs système Debian
  • 📊 Dashboard système - Surveillance CPU, RAM et processus en temps réel
  • 🐳 Gestion Docker - Contrôler les conteneurs (start/stop/restart)
  • 🔐 JWT Authentication - API sécurisée avec tokens
  • 🎨 Interface moderne - Dashboard sombre avec Vue.js 3 + Tailwind CSS
  • Léger - Peu de dépendances, performance optimale

📋 Stack technique

Backend

  • FastAPI - Framework web async haute performance
  • python-pam - Authentification système
  • psutil - Monitoring système
  • Docker SDK - Gestion Docker
  • PyJWT - Tokens JWT

Frontend

  • Vue.js 3 - Framework réactif moderne
  • Tailwind CSS - Styling utilitaire
  • Vite - Build tool rapide
  • Axios - Client HTTP

🚀 Installation rapide

Prérequis

  • Python 3.8+
  • Node.js 16+
  • Docker (optionnel, pour Docker API)
  • Accès root/sudo

Backend

cd backend

# Installer les dépendances
pip install -r requirements.txt

# Copier la configuration
cp .env.example .env

# Lancer le serveur
python main.py

L'API sera accessible à http://localhost:8000 Documentation Swagger : http://localhost:8000/docs

Frontend

cd frontend

# Installer les dépendances
npm install

# Lancer le serveur de développement
npm run dev

L'interface sera accessible à http://localhost:3000

🔐 Configuration des permissions

Voir PERMISSIONS.md pour :

  • Configuration Docker
  • Permissions système
  • Configuration PAM
  • Déploiement en production

📡 Endpoints API

Authentification

  • POST /api/v1/auth/login - Connexion PAM
  • GET /api/v1/auth/me - Info utilisateur
  • POST /api/v1/auth/logout - Déconnexion

Système

  • GET /api/v1/system/stats - Stats CPU/RAM/Processus
  • GET /api/v1/system/cpu - Stats CPU uniquement
  • GET /api/v1/system/memory - Stats mémoire uniquement
  • GET /api/v1/system/processes - Liste processus

Docker

  • GET /api/v1/docker/status - Statut de connexion
  • GET /api/v1/docker/containers - Liste conteneurs
  • POST /api/v1/docker/containers/{id}/start - Démarrer
  • POST /api/v1/docker/containers/{id}/stop - Arrêter
  • POST /api/v1/docker/containers/{id}/restart - Redémarrer
  • DELETE /api/v1/docker/containers/{id} - Supprimer

🗂️ Structure du projet

innotexboard/
├── backend/
│   ├── app/
│   │   ├── core/           # Configuration, sécurité
│   │   ├── api/            # Routes et endpoints
│   │   │   └── endpoints/  # Auth, system, docker
│   │   └── services/       # Logique métier
│   ├── main.py             # Point d'entrée
│   ├── requirements.txt     # Dépendances Python
│   └── README.md
├── frontend/
│   ├── src/
│   │   ├── components/     # Composants réutilisables
│   │   ├── views/          # Pages (Login, Dashboard, Containers)
│   │   ├── stores/         # State management Pinia
│   │   ├── api/            # Client HTTP
│   │   ├── router/         # Routage Vue Router
│   │   └── assets/         # Styles et images
│   ├── package.json
│   ├── vite.config.js      # Configuration Vite
│   ├── tailwind.config.js  # Configuration Tailwind
│   └── index.html
├── PERMISSIONS.md          # Guide de configuration
└── README.md

🛡️ Sécurité

Authentification

  • Authentification via PAM (système Debian)
  • Tokens JWT pour sécuriser l'API
  • Expiration des tokens configurable

API

  • CORS limité aux origines autorisées
  • Headers de confiance (TrustedHost)
  • Validation des données Pydantic

Production

  • Utiliser HTTPS
  • Changer la SECRET_KEY
  • Ajouter un reverse proxy (Nginx)
  • Voir PERMISSIONS.md pour plus de détails

📝 Exemples d'utilisation

Login et obtenir un token

curl -X POST "http://localhost:8000/api/v1/auth/login" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "username=your_user&password=your_pass"

Récupérer les stats système

curl -X GET "http://localhost:8000/api/v1/system/stats" \
  -H "Authorization: Bearer YOUR_TOKEN"

Lister les conteneurs Docker

curl -X GET "http://localhost:8000/api/v1/docker/containers" \
  -H "Authorization: Bearer YOUR_TOKEN"

🚀 Déploiement

Avec Systemd

Voir PERMISSIONS.md pour la configuration du service.

Avec Docker

docker run -d \
  -p 8000:8000 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e SECRET_KEY="your-key" \
  innotexboard-backend

Avec Nginx

Configuration exemple :

server {
    listen 80;
    server_name admin.example.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
    }

    location /api {
        proxy_pass http://localhost:8000;
        proxy_set_header Authorization $http_authorization;
    }
}

🐛 Troubleshooting

Erreur Docker: "Permission denied"

→ Voir PERMISSIONS.md section "Permissions Docker"

Erreur PAM: "Permission denied"

→ L'utilisateur doit être dans le groupe shadow

sudo usermod -aG shadow $USER

Erreur psutil: "Permission denied"

→ Lancer avec sudo ou changer les permissions de /proc

📚 Documentation complète

📄 Licence

MIT

🤝 Contribution

Les contributions sont bienvenues ! N'hésitez pas à :

  1. Fork le projet
  2. Créer une branche (git checkout -b feature/AmazingFeature)
  3. Commit les changements (git commit -m 'Add AmazingFeature')
  4. Push la branche (git push origin feature/AmazingFeature)
  5. Ouvrir une Pull Request

📧 Support

Pour toute question ou problème, ouvrez une issue sur le repository.


Fait avec ❤️ pour les administrateurs Debian

Description
No description provided
Readme 256 KiB
Languages
Python 43.8%
Vue 29.2%
Shell 19.2%
JavaScript 3.9%
CSS 3.5%
Other 0.4%