# 🛡️ GISE Nexus - Portail d'Infrastructure > **Portail d'administration Headless et d'orchestration unifiée pour l'infrastructure GISE (Bunker).** Ce dépôt contient le code source Frontend (React/Vite) du portail central **Nexus** (`console.gise.be`). Il agit en tant qu'interface cliente et communique avec un orchestrateur backend (PHP) pour automatiser le déploiement des services clients sur une architecture "Bare-Metal" locale (HestiaCP). --- ## 🏗️ Architecture du Bunker L'application repose sur un modèle "Headless" et un provisionnement en cascade : - **Frontend :** React + Vite (Interface utilisateur, formulaires d'inscription/connexion). - **Orchestrateur (Backend) :** Script PHP personnalisé hébergé sur HestiaCP. - **Services Connectés :** - 💳 **FOSSBilling :** Gestion client, facturation et authentification principale. - ⚙️ **HestiaCP :** Panneau de contrôle d'hébergement web (API Legacy via Access Keys). - ☁️ **Nextcloud :** Stockage cloud et espace de travail collaboratif. --- ## ✨ Fonctionnalités Principales * **Provisionnement Triple Unifié :** Création simultanée et transparente d'un compte utilisateur sur FOSSBilling, HestiaCP et Nextcloud depuis un seul formulaire. * **Sécurité Anti-Spam :** Interfaçage avec le pare-feu applicatif de FOSSBilling (Rate Limiting). * **Déploiement Continu (CI/CD) :** Automatisation complète via Gitea Actions et transfert FTP chrooté. * **Design "Terminal" :** Interface utilisateur sombre, minimaliste et orientée SysAdmin. --- ## 🚀 Installation & Développement Local ### Prérequis * Node.js (v20 ou supérieur) * Accès au réseau local "Bunker" (`10.10.40.X`) pour la communication API. ### Démarrage 1. Cloner le dépôt : ```bash git clone https://git.bunker.lan/gise/nexus-portal.git cd nexus-portal ``` 2. Installer les dépendances : ```bash npm install ``` 3. Lancer le serveur de développement : ```bash npm run dev ``` --- ## ⚙️ Déploiement Automatisé (CI/CD) Le projet intègre un pipeline de déploiement continu via Gitea Actions. À chaque `git push` sur la branche `master`, le runner Gitea compile le code source et le déploie directement sur le serveur HestiaCP de production. ### Variables secrètes requises (Gitea Secrets) Pour que le workflow `.gitea/workflows/deploy.yml` fonctionne, les secrets suivants doivent être configurés dans les paramètres du dépôt : |Secret|Description|Exemple| |-|-|-| |`FTP_USER`|Utilisateur FTP (chrooté dans `public_html`)|`admin_nexus`| |`FTP_PASSWORD`|Mot de passe de l'utilisateur FTP|`********`| |`FTP_SERVER`|IP locale du serveur HestiaCP cible|`10.10.40.12`| ⚠️ Note SysAdmin : L'utilisateur FTP sur HestiaCP doit être configuré avec un chemin (Path) personnalisé pointant explicitement sur `public_html` pour éviter que le script `lftp` ne tente d'écraser les dossiers système du serveur. --- ## 🔒 Notes de Sécurité (SysAdmin) 1. Bypass CSRF FOSSBilling : En raison de l'architecture Headless (React sur le port 5173, API sur port 80/443), la protection stricte `CSRFPrevention` de FOSSBilling est désactivée. La sécurité repose intégralement sur les cookies de session (`credentials: 'include'`). 2. Clés API HestiaCP : L'orchestrateur PHP utilise le format Hash (`ACCESS_KEY_ID:SECRET_KEY`) pour s'authentifier auprès de l'API Hestia. La clé est verrouillée par liste blanche IP (`10.10.40.12`, `127.0.0.1`). *Maintenu par l'équipe d'Ingénierie GISE - 2026*