Démarrage local : lancer le backend et le portail, se connecter, installer un service
Toutes les commandes sont à lancer dans un terminal bash WSL, depuis la racine du dépôt
(~/projects/deploy7/navin-entreprise-ai), sauf mention contraire.
1. Services essentiels : make install, make start
Prérequis sur la machine : Python 3.11+, Node.js 20+, redis-server (sudo apt install redis-server) et Java 21
(déjà dans ~/.local/toolchains). Pas de Docker nécessaire.
make docker-env # une seule fois : deploy/compose/.env et services/control-plane/local.env
make install # Control Plane (.venv), dépendances du portail (npm install), Keycloak 26.8.1
make start # PostgreSQL, Redis, Keycloak, migrations, API :8080, worker, portail :3300
make status # état de chaque composant
make logs # journaux (Ctrl-C pour quitter)
make stop # arrête ce que make a démarré
| Composant | Adresse | Démarré par make start |
|---|---|---|
| PostgreSQL | EAI_DATABASE_URL | seulement s'il ne répond pas déjà (sinon utilisé tel quel) |
| Redis | EAI_REDIS_URL | idem, avec le mot de passe de l'URL |
| Keycloak | http://localhost:8081 | idem, realm enterprise-ai importé, console http://localhost:8081/admin |
| API | http://127.0.0.1:8080 | oui, après les migrations |
| Worker | - | oui |
| Portail | http://localhost:3300 | construit si besoin (npm run build), puis servi |
Mot de passe de la console Keycloak : KEYCLOAK_ADMIN_PASSWORD de deploy/compose/.env (utilisateur admin).
Premiers mots de passe des utilisateurs d'exemple du realm : .run/keycloak/users (à changer à la première
connexion). make start COMPONENTS=portal PORTAL_BUILD=1 reconstruit le portail ; PORTAL_PORT change son port.
2. Portail en mode développement (facultatif)
cd portal
npm run dev # http://localhost:3300 (dossier .next-dev), arrêtez d'abord le portail de make start
npm run dev et npm run build utilisent des dossiers différents (.next-dev et .next) : lancer un build pendant
que le serveur de développement tourne ne casse plus les scripts de la page. Après un nouveau build, rechargez la
page (Ctrl-F5) : un ancien nom de fichier reçoit une 404 propre au lieu d'une page HTML.
3. Se connecter
Identifiant et mot de passe (compte d'installation)
Ouvrez http://localhost:3300/login, onglet Identifiant : navin / navin (variables
EAI_BOOTSTRAP_ADMIN_USERNAME, EAI_BOOTSTRAP_ADMIN_PASSWORD de local.env et deploy/compose/.env). Le compte a
les rôles platform_admin et tenant_admin sur l'organisation default. Le portail demande un nouveau mot de passe
à la première connexion ; le mot de passe d'installation ne sert plus ensuite.
Keycloak, et LDAP / Active Directory par Keycloak
-
make startdémarre Keycloak et le relie à l'API et au portail (EAI_OIDC_ISSUER,EAI_OIDC_JWKS_URL,EAI_OIDC_AUDIENCEdelocal.env, déjà renseignés) : le bouton Se connecter avec le SSO apparaît sur la page de connexion. Pour s'en passer, commentez ces trois lignes puismake restart. -
Annuaire : renseignez dans
deploy/compose/.envEAI_LDAP_URL,EAI_LDAP_BIND_DN,EAI_LDAP_BIND_CREDENTIAL,EAI_LDAP_USERS_DNetEAI_LDAP_GROUPS_DNavant le premier démarrage de Keycloak (pour changer ensuite :make stop COMPONENTS=keycloak, supprimez.run/keycloak/h2, puismake start). Keycloak lit l'annuaire en lecture seule et importe ses groupes. -
Droits d'administration, donnés par les groupes (Keycloak ou annuaire) :
Groupe Rôle donné navin-platform-adminsplatform_admin(administrateur de la plateforme)navin-admins-<slug de l'organisation>, par exemplenavin-admins-defaulttenant_adminde cette organisationLes deux groupes d'exemple sont créés par le realm. Ajoutez un utilisateur dans la console Keycloak (http://localhost:8081/admin, realm
enterprise-ai, Utilisateurs, Groupes, Rejoindre), ou créez des groupes de ce nom dans l'annuaire. Pour garder les noms de groupes de votre annuaire, changezEAI_OIDC_PLATFORM_ADMIN_GROUPS(liste séparée par des virgules) etEAI_OIDC_TENANT_ADMIN_GROUP_PREFIX. Les noms sont comparés sans tenir compte de la casse. Un administrateur de plusieurs organisations doit avoir l'attribut Keycloaktenantpour choisir la sienne. Une organisation inconnue est refusée.
4. Installer un service depuis la plateforme
Les services d'infrastructure sont installés par le Platform Manager (navin-manager) sur les serveurs qu'il gère.
Commencez par la page Platform Manager, Mise en route du portail (rôle platform_admin) : elle montre l'état
de la plateforme, de la connexion au Manager, des clusters et des machines, et guide chaque étape (ajout de machines
par SSH ou par commande d'enrôlement de l'agent, vérifications). Ensuite, Gestion des services, Installer un
service installe n'importe quel service du catalogue (onglets Services IA, Jobs à la demande, Packages développeur,
Infrastructure) ou connecte un service qui existe déjà : choix du cluster, du service, du mode (autonome, cluster,
réplication, sentinelle... selon le service), de la méthode, des serveurs de chaque composant (nombre minimum et
maximum affiché) et de la configuration, puis Valider (erreurs du Manager par champ, par exemple un paramètre
obligatoire à ajouter avec Ajouter un paramètre) et Installer (identifiant de l'opération, suivie dans
Opérations). Le même écran démarre, arrête, redémarre, réinstalle et change le mode d'un service installé
(ADR-0128).
- Bac à sable du Manager, sans root et sans Docker :
La console du Manager reste disponible sur http://127.0.0.1:8460 (compteexport NM_SANDBOX_ADMIN_PASSWORD='choisissez-un-mot-de-passe'navin-manager/packaging/sandbox/sandbox.sh up# archives des services à installer (un service absent du miroir est refusé : artifact_missing) ; avec# NM_SANDBOX_ADMIN_PASSWORD, le Manager recharge son miroir tout de suitenavin-manager/packaging/sandbox/sandbox.sh bundle opa,openfga,prometheus,alertmanager
navin/navin, à changer dès la première connexion, clustersandbox). - Relier le portail au Manager :
- dans la console du Manager, Utilisateurs : créez l'utilisateur au nom de votre identifiant du portail
(
navinpour le compte d'installation), rôlecluster_adminouadmin; - connecté avec cet utilisateur, Profil, jetons d'API : créez un jeton avec
auth:delegate,cluster:read,operations:read,configs:read,services:install,services:operate,alerts:read,hosts:manage(machines, enrôlement, contrôles),clusters:create(premier cluster),cluster:manage(archives de support),backup:read,restore:execute,dr:manage(sauvegarde, restauration et PRA),connections:readetconnections:manage(connexions aux services existants) ;GET /v1/platform-manager/setuprenvoie cette liste. Les droits effectifs sont ceux du jeton croisés avec ceux de l'utilisateur délégué ; - rangez-le comme secret de l'organisation (session
navin, rôletenant_admin) :POST /v1/secretsavec{"path": "platform-manager/token", "value": "<jeton>"};GET /v1/medonne letenant_id; - dans
services/control-plane/local.env:puisEAI_PLATFORM_MANAGER_URL=http://127.0.0.1:8460EAI_PLATFORM_MANAGER_TOKEN_REF=secret://<tenant_id>/platform-manager/tokenmake restart. La page Mise en route affiche alors la connexion au Manager et le bouton Tester la connexion. Chaque appel porte l'identité de l'utilisateur du portail (X-NM-On-Behalf-Of) : son identifiant (navinpour le compte d'installation, lepreferred_usernamepour une connexion Keycloak ou LDAP). Le Manager doit connaître un utilisateur de ce nom, et ses droits (services:installpour installer), ses approbations et ses règles d'arrêt s'appliquent.
- dans la console du Manager, Utilisateurs : créez l'utilisateur au nom de votre identifiant du portail
(
- Arrêt du bac à sable :
navin-manager/packaging/sandbox/sandbox.sh down(sandbox.sh statusaffiche son état).