Téléverser les fichiers vers "/"
This commit is contained in:
249
projet_web_ui_passerelle_reseau_synthese_complete.md
Normal file
249
projet_web_ui_passerelle_reseau_synthese_complete.md
Normal file
@@ -0,0 +1,249 @@
|
||||
# PROJET WEBUI PASSERELLE RÉSEAU – SYNTHÈSE COMPLÈTE
|
||||
|
||||
Ce document reprend **l’intégralité de la discussion**, structurée et consolidée, sur la conception et le développement d’une **WebUI d’administration réseau** destinée à une **VM Debian 13 (Trixie)** jouant le rôle de **passerelle LAN → Internet**.
|
||||
|
||||
---
|
||||
|
||||
## 1. OBJECTIF GÉNÉRAL
|
||||
|
||||
Créer une **application Web d’administration réseau**, installée dans une **machine virtuelle Debian 13**, permettant de configurer et superviser :
|
||||
|
||||
- le réseau local (LAN)
|
||||
- l’accès Internet (WAN)
|
||||
- l’attribution d’adresses IP (DHCP)
|
||||
- la résolution de noms (DNS)
|
||||
- le pare-feu et le partage de connexion (NAT)
|
||||
- les services réseau associés
|
||||
|
||||
Contraintes clés :
|
||||
- uniquement **outils réseau standards Debian 13** (aucun dépôt tiers)
|
||||
- **WebUI simple et pédagogique**, adaptée à des utilisateurs novices
|
||||
- libellés clairs, textes explicatifs, info-bulles, **pas d’acronymes non expliqués**
|
||||
- accès WebUI limité au **réseau local**
|
||||
- architecture modulaire (services activables/installables)
|
||||
|
||||
---
|
||||
|
||||
## 2. ARCHITECTURE GÉNÉRALE
|
||||
|
||||
### 2.1 Schéma fonctionnel
|
||||
|
||||
Navigateur → HTTPS → Nginx → API backend (non root) → scripts contrôlés → services système Debian
|
||||
|
||||
### 2.2 Composants
|
||||
|
||||
- **Frontend** : HTML/CSS/JavaScript léger (onglets + formulaires)
|
||||
- **Serveur Web** : Nginx
|
||||
- **Backend** : Python (API REST)
|
||||
- **Services système** : configurés via fichiers standards Debian
|
||||
- **Contrôle système** : systemctl, journalctl, nftables, kea, unbound
|
||||
|
||||
### 2.3 Sécurité
|
||||
|
||||
- WebUI accessible uniquement depuis le LAN
|
||||
- utilisateur système dédié pour l’application
|
||||
- droits permissifs en phase V1 (sudo large), durcissement ultérieur
|
||||
- aucune modification appliquée sans validation explicite
|
||||
|
||||
---
|
||||
|
||||
## 3. MACHINE VIRTUELLE (PROXMOX)
|
||||
|
||||
### 3.1 Paramétrage recommandé
|
||||
|
||||
- Type : VM Linux
|
||||
- Machine : q35
|
||||
- BIOS : OVMF (UEFI)
|
||||
- CPU : 1 socket / 2 à 4 cœurs / type host
|
||||
- RAM : 4 Go (ballooning désactivé)
|
||||
- Disque : 32 Go, VirtIO SCSI, iothread activé
|
||||
- Réseau :
|
||||
- 2 cartes VirtIO
|
||||
- 1 WAN (Internet)
|
||||
- 1 LAN (réseau local)
|
||||
- Pare-feu Proxmox : désactivé
|
||||
- Watchdog : activé
|
||||
|
||||
### 3.2 Rôle de la VM
|
||||
|
||||
- passerelle LAN → Internet
|
||||
- serveur DHCP principal
|
||||
- serveur DNS local
|
||||
- point central d’observation du trafic
|
||||
|
||||
---
|
||||
|
||||
## 4. SERVICES UTILISÉS (STANDARD DEBIAN 13)
|
||||
|
||||
### 4.1 Services cœur (V1)
|
||||
|
||||
- Gestion réseau : systemd-networkd
|
||||
- Pare-feu / NAT : nftables
|
||||
- DHCPv4 : kea-dhcp4-server
|
||||
- DNS local : unbound
|
||||
- Logs : systemd-journald
|
||||
- Connexions réseau : conntrack
|
||||
|
||||
### 4.2 Services optionnels (V2/V3)
|
||||
|
||||
- Découverte réseau : avahi-daemon (LAN uniquement)
|
||||
- VPN : wireguard
|
||||
- QoS : tc
|
||||
- IDS/IPS : suricata (non V1)
|
||||
|
||||
---
|
||||
|
||||
## 5. WEBUI – ORGANISATION DES PAGES (V1)
|
||||
|
||||
### 5.1 Tableau de bord
|
||||
|
||||
- état WAN / LAN
|
||||
- état des services
|
||||
- alertes simples
|
||||
|
||||
### 5.2 Réseau
|
||||
|
||||
- côté Internet : adresse automatique ou fixe
|
||||
- côté réseau local : adresse de la passerelle, domaine
|
||||
|
||||
### 5.3 Pare-feu et partage de connexion
|
||||
|
||||
- interrupteurs simples
|
||||
- règles prédéfinies compréhensibles
|
||||
|
||||
### 5.4 Attribution d’adresses (DHCP)
|
||||
|
||||
- plages dynamiques
|
||||
- réservations fixes
|
||||
- liste des appareils connectés
|
||||
|
||||
### 5.5 Noms (DNS)
|
||||
|
||||
- serveurs amont
|
||||
- domaine local
|
||||
- entrées fixes nom → adresse
|
||||
|
||||
### 5.6 Services
|
||||
|
||||
- installation via apt (liste blanche)
|
||||
- démarrage / arrêt / activation au boot
|
||||
- état en temps réel
|
||||
|
||||
### 5.7 Journaux
|
||||
|
||||
- lecture des logs par service
|
||||
- filtres (date, texte, niveau)
|
||||
|
||||
### 5.8 Activité réseau
|
||||
|
||||
- connexions LAN → Internet
|
||||
- requêtes DNS
|
||||
- événements du pare-feu
|
||||
|
||||
---
|
||||
|
||||
## 6. MÉTHODOLOGIE DE TEST ET DÉPLOIEMENT
|
||||
|
||||
### 6.1 Phase 0 – Développement hors réseau
|
||||
|
||||
- DHCP désactivé
|
||||
- pare-feu non bloquant
|
||||
- génération et validation de configuration uniquement
|
||||
|
||||
### 6.2 Phase 1 – Intégration passive
|
||||
|
||||
- VM connectée au LAN
|
||||
- observation uniquement (logs, trafic)
|
||||
|
||||
### 6.3 Phase 2 – Test DHCP contrôlé
|
||||
|
||||
- arrêt temporaire de l’ancien DHCP
|
||||
- activation du nouveau
|
||||
- tests sur un ou deux clients
|
||||
- rollback immédiat possible
|
||||
|
||||
### 6.4 Phase 3 – Remplacement définitif
|
||||
|
||||
- bascule complète
|
||||
- surveillance
|
||||
|
||||
---
|
||||
|
||||
## 7. MIGRATION DES ADRESSES IP EXISTANTES
|
||||
|
||||
### 7.1 Principe
|
||||
|
||||
- conserver les adresses IP actuelles
|
||||
- éviter toute reconfiguration côté clients
|
||||
|
||||
### 7.2 Méthode retenue (recommandée)
|
||||
|
||||
**Import des baux DHCP existants** depuis l’ancien serveur
|
||||
|
||||
### 7.3 Sources supportées
|
||||
|
||||
- OPNsense :
|
||||
- CSV (baux DHCP)
|
||||
- XML (config complète)
|
||||
- Fichier JSON générique
|
||||
|
||||
### 7.4 Format JSON canonique interne
|
||||
|
||||
{
|
||||
"source": "opnsense",
|
||||
"interface": "lan",
|
||||
"reservations": [
|
||||
{
|
||||
"nom": "nas",
|
||||
"adresse_ip": "10.0.0.10",
|
||||
"adresse_materielle": "AA:BB:CC:DD:EE:01"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Tous les imports sont normalisés vers ce format.
|
||||
|
||||
### 7.5 Processus WebUI
|
||||
|
||||
- import fichier
|
||||
- analyse et validation
|
||||
- prévisualisation
|
||||
- génération réservations DHCP
|
||||
- aucune application automatique
|
||||
|
||||
---
|
||||
|
||||
## 8. PHILOSOPHIE DU PROJET
|
||||
|
||||
- sécurité avant automatisation
|
||||
- aucune action irréversible sans confirmation
|
||||
- priorité à la lisibilité et à la pédagogie
|
||||
- architecture modulaire
|
||||
- pas de dépendance externe
|
||||
|
||||
---
|
||||
|
||||
## 9. PÉRIMÈTRE V1 VALIDÉ
|
||||
|
||||
Modules inclus :
|
||||
1. Réseau WAN/LAN
|
||||
2. Pare-feu + NAT
|
||||
3. DHCPv4 (Kea)
|
||||
4. DNS (Unbound)
|
||||
5. Services
|
||||
6. Journaux
|
||||
7. Activité réseau
|
||||
|
||||
---
|
||||
|
||||
## 10. ÉTAPES SUIVANTES POSSIBLES
|
||||
|
||||
- création du canevas de projet (arborescence + fichiers)
|
||||
- écrans WebUI détaillés
|
||||
- moteur d’import OPNsense (CSV/XML → JSON)
|
||||
- génération automatique des configurations Kea / Unbound / nftables
|
||||
|
||||
---
|
||||
|
||||
FIN DU DOCUMENT
|
||||
|
||||
248
prompt.md
Normal file
248
prompt.md
Normal file
@@ -0,0 +1,248 @@
|
||||
# prompt.md — Développement NetUI (Debian 13 / Passerelle LAN→Internet)
|
||||
|
||||
## Contexte
|
||||
|
||||
Tu es un assistant de développement (compatible Codex et Claude Code). Tu m’aides à construire une application **NetUI** : une **WebUI** d’administration réseau pour une **VM Debian 13 (Trixie)** jouant le rôle de **passerelle LAN → Internet** (NAT + pare-feu + DHCP + DNS).
|
||||
|
||||
Le serveur est une VM Proxmox nommée côté hyperviseur `mon-reseau`, mais **le nom système Debian** est :
|
||||
- **hostname** : `server-home`
|
||||
- **domaine** : `home`
|
||||
- **FQDN** : `server-home.home`
|
||||
|
||||
Je me connecte en **SSH via VS Code** sur la VM.
|
||||
|
||||
### Contraintes impératives
|
||||
|
||||
1) **Aucun dépôt tiers** : uniquement les paquets des dépôts officiels Debian 13.
|
||||
2) L’application doit utiliser **uniquement les outils réseau standard Debian**.
|
||||
3) La WebUI est en **français**, pensée pour des **utilisateurs novices** :
|
||||
- libellés explicites
|
||||
- explications claires en info-bulles (tooltips)
|
||||
- **éviter les acronymes** ; si un terme technique est nécessaire, l’expliquer en toutes lettres.
|
||||
4) L’application est servie via **Nginx**.
|
||||
5) L’accès WebUI est **limité au réseau local (LAN)**.
|
||||
6) Au début (V1), on accepte une approche **permissive** sur les droits (sudo large), puis on durcira.
|
||||
7) L’utilisateur système est **`gilles`** (ne pas créer de nouvel utilisateur).
|
||||
8) Le dépôt Git est sur mon Gitea : `https://gitea.maison43.duckdns.org/gilles/netui.git`
|
||||
|
||||
---
|
||||
|
||||
## Périmètre fonctionnel V1 (à livrer)
|
||||
|
||||
NetUI V1 est composée de modules/pages :
|
||||
|
||||
1) **Réseau** (WAN/LAN)
|
||||
- afficher l’état : adresses, routes, passerelle, serveurs de noms
|
||||
- configurer WAN (adresse automatique ou fixe)
|
||||
- configurer LAN (adresse fixe, domaine local)
|
||||
|
||||
2) **Pare-feu et partage de connexion**
|
||||
- configuration **nftables** : règles de base + NAT
|
||||
- mode novice : interrupteurs simples et règles prédéfinies compréhensibles
|
||||
|
||||
3) **Attribution d’adresses (DHCP)**
|
||||
- serveur DHCP : **Kea DHCPv4**
|
||||
- plages dynamiques, exclusions, réservations (adresse fixe par appareil)
|
||||
- liste des appareils connectés (baux)
|
||||
|
||||
4) **Noms (DNS)**
|
||||
- serveur DNS local : **Unbound**
|
||||
- serveurs amont, entrées locales (nom → adresse)
|
||||
|
||||
5) **Services**
|
||||
- page dédiée pour : installer (via `apt`), activer au démarrage, démarrer/arrêter
|
||||
- services concernés V1 : nftables, kea-dhcp4-server, unbound, chrony
|
||||
|
||||
6) **Journaux (Logs)**
|
||||
- afficher les logs des services avec filtres (date, texte, niveau)
|
||||
- source : `journalctl`
|
||||
|
||||
7) **Activité réseau**
|
||||
- afficher connexions actives (LAN → Internet) en langage clair
|
||||
- afficher activité DNS (qui demande quel nom)
|
||||
- afficher événements pare-feu (autorisé / bloqué)
|
||||
- sources : `conntrack`, logs Unbound, logs nftables
|
||||
|
||||
8) **Migration DHCP sans casser le réseau**
|
||||
- fonction d’import **depuis OPNsense** (CSV et XML) et **JSON**
|
||||
- tout est normalisé vers un **format JSON canonique interne**
|
||||
- génération de réservations DHCP à partir de l’import
|
||||
- aucune application automatique sans validation
|
||||
|
||||
---
|
||||
|
||||
## Paquets Debian (référence)
|
||||
|
||||
Paquets attendus (installation manuelle possible) :
|
||||
- WebUI/Backend : `nginx`, `python3`, `python3-venv`, `python3-pip`
|
||||
- Réseau : `iproute2`, `systemd-networkd`, `systemd-resolved`
|
||||
- Pare-feu/NAT : `nftables`
|
||||
- Connexions : `conntrack`
|
||||
- DHCP : `kea-dhcp4-server`
|
||||
- DNS : `unbound`
|
||||
- Temps : `chrony`
|
||||
- Logs/diag : `rsyslog`, `tcpdump`, `ethtool`
|
||||
- Dev : `git`
|
||||
|
||||
---
|
||||
|
||||
## Architecture technique souhaitée
|
||||
|
||||
### Serveur web
|
||||
- Nginx sert le **frontend statique** et reverse-proxy `/api/` vers le backend.
|
||||
- Le backend écoute sur `127.0.0.1:8000`.
|
||||
- Nginx est configuré pour autoriser uniquement le réseau LAN (allow/deny).
|
||||
|
||||
### Backend
|
||||
- Langage : **Python**
|
||||
- Framework : **FastAPI**
|
||||
- Validation : Pydantic
|
||||
- Génération de configuration : templates + rendu
|
||||
- Stockage config : fichier unique **source de vérité** : `/etc/netui/config.yaml`
|
||||
|
||||
### Frontend
|
||||
- Simple : HTML/CSS/JS (pas de SPA lourde)
|
||||
- Interface par **onglets**
|
||||
- Style : **Gruvbox dark seventies** (contraste élevé, lisible)
|
||||
|
||||
### Exécution et droits (V1)
|
||||
- Le backend est lancé sous l’utilisateur `gilles`.
|
||||
- Les opérations système se font via `sudo` (V1 permissif).
|
||||
- Ne pas activer automatiquement les services réseau tant que l’utilisateur n’a pas cliqué « Appliquer ».
|
||||
|
||||
---
|
||||
|
||||
## Exigences UX (très important)
|
||||
|
||||
- Tout champ de formulaire doit avoir :
|
||||
- un libellé clair
|
||||
- un exemple
|
||||
- une info-bulle expliquant « à quoi ça sert »
|
||||
- Bannière « Mode test » si la configuration n’est pas appliquée.
|
||||
- Boutons distincts :
|
||||
- **Générer** (préparer fichiers sans appliquer)
|
||||
- **Tester** (vérifier syntaxe/cohérence)
|
||||
- **Appliquer** (écrire + recharger services)
|
||||
- Messages d’erreur en français, orientés solution.
|
||||
|
||||
---
|
||||
|
||||
## Règles de sécurité et de robustesse
|
||||
|
||||
1) **Jamais deux serveurs DHCP actifs** sur le LAN.
|
||||
2) Appliquer une configuration en deux phases :
|
||||
- écrire dans un répertoire de staging
|
||||
- tester :
|
||||
- Kea : validation de config
|
||||
- nftables : validation (`nft -c`)
|
||||
- unbound : validation (`unbound-checkconf`)
|
||||
- basculer et recharger
|
||||
3) Toujours prévoir un rollback (V2), mais en V1 au minimum : sauvegarde du dernier état avant « Appliquer ».
|
||||
4) Journaliser toute action (qui / quoi / quand).
|
||||
|
||||
---
|
||||
|
||||
## Imports DHCP depuis OPNsense
|
||||
|
||||
### Objectif
|
||||
Conserver les adresses IP existantes en important des réservations/baux puis en générant des réservations DHCP Kea.
|
||||
|
||||
### Sources d’import
|
||||
- **OPNsense CSV** (baux ou réservations)
|
||||
- **OPNsense XML** (export config)
|
||||
- **JSON** (format pivot)
|
||||
|
||||
### Format JSON canonique interne (à utiliser partout)
|
||||
|
||||
```json
|
||||
{
|
||||
"source": "opnsense",
|
||||
"interface": "lan",
|
||||
"reservations": [
|
||||
{
|
||||
"nom": "nas",
|
||||
"adresse_ip": "10.0.0.10",
|
||||
"adresse_materielle": "AA:BB:CC:DD:EE:01"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Exigences import :
|
||||
- mapping automatique des colonnes quand possible
|
||||
- affichage d’une prévisualisation
|
||||
- validation : doublons IP, doublons MAC, IP hors réseau
|
||||
|
||||
---
|
||||
|
||||
## Plan de développement (ordre recommandé)
|
||||
|
||||
1) **Squelette repo** + README installation
|
||||
2) Backend FastAPI minimal :
|
||||
- `/health`
|
||||
- `/system/info` (hostname, FQDN, interfaces)
|
||||
3) Page **Services** :
|
||||
- détecter installé / actif / en cours
|
||||
- start/stop/enable/disable
|
||||
4) Page **Journaux** :
|
||||
- lecture via `journalctl` + filtres
|
||||
5) Page **Réseau (lecture seule)** : IP, routes, DNS
|
||||
6) Module **Pare-feu/NAT** : générer ruleset minimal + test + apply
|
||||
7) Module **DHCP Kea** : génération config minimale + apply + liste baux
|
||||
8) Module **DNS Unbound** : config minimale + apply + overrides
|
||||
9) Module **Activité réseau** : connexions + DNS + pare-feu
|
||||
10) Module **Import OPNsense** : CSV/XML/JSON → canonique → réservations
|
||||
|
||||
---
|
||||
|
||||
## Ce que tu dois produire (attendu de l’assistant)
|
||||
|
||||
Quand je te demande de développer, tu dois :
|
||||
|
||||
1) Proposer une arborescence claire (si nécessaire).
|
||||
2) Écrire du code complet et exécutable.
|
||||
3) Ajouter des validations et messages d’erreurs clairs.
|
||||
4) Indiquer exactement quelles commandes exécuter.
|
||||
5) Fournir des fichiers prêts à coller :
|
||||
- Nginx site
|
||||
- systemd service (optionnel en dev)
|
||||
- scripts d’application (même permissifs en V1)
|
||||
|
||||
---
|
||||
|
||||
## Règles de style (documentation et UI)
|
||||
|
||||
- Tout est en français.
|
||||
- Aucun acronyme sans explication (ex : « passerelle (routeur) »).
|
||||
- Ton ton doit être direct, structuré, et orienté actions.
|
||||
|
||||
---
|
||||
|
||||
## Commandes utiles (référence)
|
||||
|
||||
- État réseau : `ip -4 a`, `ip route`
|
||||
- Services : `systemctl status <service>`
|
||||
- Logs : `journalctl -u <service> --since ...`
|
||||
- nftables (test) : `nft -c -f <fichier>`
|
||||
- unbound (test) : `unbound-checkconf <fichier>`
|
||||
- Connexions : `conntrack -L`
|
||||
|
||||
---
|
||||
|
||||
## Questions à ne PAS poser (déjà tranché)
|
||||
|
||||
- Pas de dépôt tiers.
|
||||
- Debian 13.
|
||||
- Nginx obligatoire.
|
||||
- Modules V1 validés.
|
||||
- Utilisateur unique : `gilles`.
|
||||
|
||||
---
|
||||
|
||||
## Démarrage immédiat
|
||||
|
||||
Commence par vérifier l’état du dépôt (arborescence actuelle) et propose :
|
||||
- un premier commit « squelette backend + frontend + nginx »
|
||||
- une commande unique de lancement en mode développement
|
||||
- une première page WebUI (onglets) et une API `/health`.
|
||||
|
||||
204
specification_technique.md
Normal file
204
specification_technique.md
Normal file
@@ -0,0 +1,204 @@
|
||||
# Spécification technique – WebUI Passerelle Réseau (V1)
|
||||
|
||||
## 1. Objet du document
|
||||
|
||||
Ce document décrit **la spécification technique détaillée** de la WebUI de passerelle réseau basée sur **Debian 13 (Trixie)**.
|
||||
Il sert de référence pour le développement, l’architecture logicielle et les choix techniques.
|
||||
|
||||
---
|
||||
|
||||
## 2. Contexte et périmètre
|
||||
|
||||
### 2.1 Rôle de la VM
|
||||
|
||||
- Passerelle réseau LAN → Internet
|
||||
- Serveur DHCP principal du réseau local
|
||||
- Serveur DNS local
|
||||
- Pare-feu et traduction d’adresses (NAT)
|
||||
- Point central de supervision réseau
|
||||
|
||||
### 2.2 Contraintes
|
||||
|
||||
- Debian 13 Trixie uniquement
|
||||
- Dépôts officiels Debian uniquement
|
||||
- Aucun conteneur
|
||||
- WebUI accessible uniquement depuis le réseau local
|
||||
- Architecture modulaire
|
||||
- Pas d’automatisation dangereuse
|
||||
|
||||
---
|
||||
|
||||
## 3. Architecture générale
|
||||
|
||||
### 3.1 Vue d’ensemble
|
||||
|
||||
Navigateur → HTTPS → Nginx → API Backend → Scripts système → Services Debian
|
||||
|
||||
### 3.2 Composants
|
||||
|
||||
- Frontend : HTML / CSS / JavaScript (léger)
|
||||
- Serveur Web : Nginx
|
||||
- Backend : Python (API REST)
|
||||
- Services système : systemd
|
||||
- Journalisation : journald
|
||||
|
||||
---
|
||||
|
||||
## 4. Machine virtuelle (Proxmox)
|
||||
|
||||
### 4.1 Ressources
|
||||
|
||||
- CPU : 2 à 4 cœurs (type host)
|
||||
- RAM : 4 Go (ballooning désactivé)
|
||||
- Disque : 32 Go (VirtIO SCSI)
|
||||
- Réseau :
|
||||
- 1 interface WAN
|
||||
- 1 interface LAN
|
||||
|
||||
### 4.2 Règles importantes
|
||||
|
||||
- Pare-feu Proxmox désactivé
|
||||
- Pare-feu unique géré dans la VM
|
||||
|
||||
---
|
||||
|
||||
## 5. Gestion réseau Debian
|
||||
|
||||
### 5.1 Outils retenus
|
||||
|
||||
- systemd-networkd : configuration des interfaces
|
||||
- nftables : pare-feu et NAT
|
||||
- conntrack : suivi des connexions
|
||||
|
||||
### 5.2 Fonctions réseau
|
||||
|
||||
- Routage IPv4
|
||||
- Traduction d’adresses (NAT)
|
||||
- Séparation WAN / LAN
|
||||
|
||||
---
|
||||
|
||||
## 6. Services réseau (V1)
|
||||
|
||||
### 6.1 DHCP
|
||||
|
||||
- Service : kea-dhcp4-server
|
||||
- Fonctions :
|
||||
- plages dynamiques
|
||||
- réservations fixes
|
||||
- options DHCP (routeur, DNS, serveur de temps)
|
||||
|
||||
### 6.2 DNS
|
||||
|
||||
- Service : unbound
|
||||
- Fonctions :
|
||||
- cache DNS
|
||||
- serveurs amont configurables
|
||||
- entrées statiques nom → adresse
|
||||
|
||||
### 6.3 Pare-feu
|
||||
|
||||
- Service : nftables
|
||||
- Fonctions :
|
||||
- protection de la VM
|
||||
- autorisation LAN → Internet
|
||||
- blocage administration depuis Internet
|
||||
|
||||
### 6.4 Services annexes
|
||||
|
||||
- chrony : synchronisation de l’heure
|
||||
|
||||
---
|
||||
|
||||
## 7. Backend API
|
||||
|
||||
### 7.1 Principes
|
||||
|
||||
- Backend non exécuté en root
|
||||
- Utilisateur système dédié
|
||||
- Appels système via sudo (phase V1 permissive)
|
||||
|
||||
### 7.2 Responsabilités
|
||||
|
||||
- Lecture / écriture de la configuration centrale
|
||||
- Génération des fichiers de configuration système
|
||||
- Validation avant application
|
||||
- Application contrôlée des changements
|
||||
|
||||
---
|
||||
|
||||
## 8. Configuration centrale
|
||||
|
||||
### 8.1 Source de vérité
|
||||
|
||||
- Fichier unique : /etc/netui/config.yaml
|
||||
|
||||
### 8.2 Contenu
|
||||
|
||||
- paramètres réseau WAN / LAN
|
||||
- configuration DHCP
|
||||
- configuration DNS
|
||||
- état des services
|
||||
|
||||
---
|
||||
|
||||
## 9. WebUI
|
||||
|
||||
### 9.1 Organisation
|
||||
|
||||
- Onglets
|
||||
- Formulaires simples
|
||||
- Textes explicatifs sous chaque champ
|
||||
- Info-bulles détaillées
|
||||
|
||||
### 9.2 Pages V1
|
||||
|
||||
- Tableau de bord
|
||||
- Réseau
|
||||
- Pare-feu / Partage de connexion
|
||||
- Attribution d’adresses (DHCP)
|
||||
- Noms (DNS)
|
||||
- Services
|
||||
- Journaux
|
||||
- Activité réseau
|
||||
|
||||
---
|
||||
|
||||
## 10. Import des adresses existantes
|
||||
|
||||
### 10.1 Objectif
|
||||
|
||||
- Conserver les adresses IP existantes lors du remplacement DHCP
|
||||
|
||||
### 10.2 Sources supportées
|
||||
|
||||
- OPNsense CSV
|
||||
- OPNsense XML
|
||||
- Fichier JSON
|
||||
|
||||
### 10.3 Format interne
|
||||
|
||||
- Normalisation vers un format JSON canonique
|
||||
|
||||
---
|
||||
|
||||
## 11. Sécurité
|
||||
|
||||
- Accès WebUI limité au LAN
|
||||
- Authentification locale
|
||||
- Validation stricte des données
|
||||
- Aucune application automatique
|
||||
|
||||
---
|
||||
|
||||
## 12. Évolutions prévues (hors V1)
|
||||
|
||||
- VPN WireGuard
|
||||
- QoS / limitation de débit
|
||||
- Découverte réseau (mDNS)
|
||||
- Historique et rollback avancé
|
||||
|
||||
---
|
||||
|
||||
Fin de la spécification technique
|
||||
|
||||
142
todo.md
Normal file
142
todo.md
Normal file
@@ -0,0 +1,142 @@
|
||||
# TODO – WebUI Passerelle Réseau (V1)
|
||||
|
||||
Ce fichier liste les **tâches à réaliser**, dans l’ordre recommandé, pour développer la version V1 du projet.
|
||||
|
||||
---
|
||||
|
||||
## 1. Préparation
|
||||
|
||||
- [ ] Créer le dépôt Git du projet
|
||||
- [ ] Définir l’arborescence (frontend / backend / deploy)
|
||||
- [ ] Créer l’utilisateur système dédié à l’application
|
||||
|
||||
---
|
||||
|
||||
## 2. Infrastructure de base
|
||||
|
||||
- [ ] Installer Debian 13 dans la VM
|
||||
- [ ] Installer Nginx
|
||||
- [ ] Installer Python et environnement virtuel
|
||||
- [ ] Configurer Nginx (accès LAN uniquement)
|
||||
- [ ] Créer le service systemd du backend
|
||||
|
||||
---
|
||||
|
||||
## 3. Backend – Squelette API
|
||||
|
||||
- [ ] Créer l’API (endpoint /health)
|
||||
- [ ] Mettre en place l’authentification simple
|
||||
- [ ] Restreindre l’accès par adresse IP LAN
|
||||
- [ ] Mettre en place la lecture des états systemd
|
||||
|
||||
---
|
||||
|
||||
## 4. Page Services
|
||||
|
||||
- [ ] Détection des paquets installés
|
||||
- [ ] Installation contrôlée via apt (liste blanche)
|
||||
- [ ] Démarrage / arrêt / activation des services
|
||||
- [ ] Affichage clair de l’état
|
||||
|
||||
---
|
||||
|
||||
## 5. Journaux
|
||||
|
||||
- [ ] Lecture des journaux via journalctl
|
||||
- [ ] Filtrage par service
|
||||
- [ ] Filtrage par période
|
||||
- [ ] Recherche texte
|
||||
|
||||
---
|
||||
|
||||
## 6. Réseau (lecture seule – phase initiale)
|
||||
|
||||
- [ ] Afficher interfaces WAN / LAN
|
||||
- [ ] Afficher adresses IP et routes
|
||||
- [ ] Vérifier connectivité Internet
|
||||
|
||||
---
|
||||
|
||||
## 7. Pare-feu et partage de connexion
|
||||
|
||||
- [ ] Générer un ruleset nftables minimal
|
||||
- [ ] Tester la configuration (mode test)
|
||||
- [ ] Appliquer le pare-feu
|
||||
- [ ] Activer le NAT LAN → Internet
|
||||
|
||||
---
|
||||
|
||||
## 8. DHCP (Kea)
|
||||
|
||||
- [ ] Générer configuration DHCP minimale
|
||||
- [ ] Tester la configuration DHCP
|
||||
- [ ] Activer le service Kea
|
||||
- [ ] Afficher les baux DHCP actifs
|
||||
|
||||
---
|
||||
|
||||
## 9. DNS (Unbound)
|
||||
|
||||
- [ ] Générer configuration DNS minimale
|
||||
- [ ] Tester la configuration Unbound
|
||||
- [ ] Activer le service
|
||||
- [ ] Lire les journaux DNS
|
||||
|
||||
---
|
||||
|
||||
## 10. Import des adresses existantes
|
||||
|
||||
- [ ] Import CSV OPNsense
|
||||
- [ ] Import XML OPNsense
|
||||
- [ ] Import JSON générique
|
||||
- [ ] Normalisation interne
|
||||
- [ ] Validation et prévisualisation
|
||||
- [ ] Génération réservations DHCP
|
||||
|
||||
---
|
||||
|
||||
## 11. WebUI
|
||||
|
||||
- [ ] Créer la structure des onglets
|
||||
- [ ] Implémenter les formulaires réseau
|
||||
- [ ] Ajouter textes explicatifs et info-bulles
|
||||
- [ ] Afficher les messages d’erreur clairs
|
||||
|
||||
---
|
||||
|
||||
## 12. Activité réseau
|
||||
|
||||
- [ ] Afficher connexions actives (conntrack)
|
||||
- [ ] Associer connexions aux appareils DHCP
|
||||
- [ ] Afficher requêtes DNS
|
||||
- [ ] Afficher événements du pare-feu
|
||||
|
||||
---
|
||||
|
||||
## 13. Sécurité et validation
|
||||
|
||||
- [ ] Vérifier aucune action automatique dangereuse
|
||||
- [ ] Ajouter confirmations avant application
|
||||
- [ ] Sauvegarde automatique avant modification
|
||||
|
||||
---
|
||||
|
||||
## 14. Tests
|
||||
|
||||
- [ ] Test en mode passif
|
||||
- [ ] Test DHCP en fenêtre contrôlée
|
||||
- [ ] Test remplacement DHCP
|
||||
- [ ] Test rollback
|
||||
|
||||
---
|
||||
|
||||
## 15. Documentation
|
||||
|
||||
- [ ] Compléter la documentation utilisateur
|
||||
- [ ] Ajouter captures d’écran
|
||||
- [ ] Rédiger guide de migration DHCP
|
||||
|
||||
---
|
||||
|
||||
Fin du TODO V1
|
||||
|
||||
Reference in New Issue
Block a user