Aller au contenu principal

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é
ComposantAdresseDémarré par make start
PostgreSQLEAI_DATABASE_URLseulement s'il ne répond pas déjà (sinon utilisé tel quel)
RedisEAI_REDIS_URLidem, avec le mot de passe de l'URL
Keycloakhttp://localhost:8081idem, realm enterprise-ai importé, console http://localhost:8081/admin
APIhttp://127.0.0.1:8080oui, après les migrations
Worker-oui
Portailhttp://localhost:3300construit 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​

  1. make start démarre Keycloak et le relie à l'API et au portail (EAI_OIDC_ISSUER, EAI_OIDC_JWKS_URL, EAI_OIDC_AUDIENCE de local.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 puis make restart.

  2. Annuaire : renseignez dans deploy/compose/.env EAI_LDAP_URL, EAI_LDAP_BIND_DN, EAI_LDAP_BIND_CREDENTIAL, EAI_LDAP_USERS_DN et EAI_LDAP_GROUPS_DN avant le premier démarrage de Keycloak (pour changer ensuite : make stop COMPONENTS=keycloak, supprimez .run/keycloak/h2, puis make start). Keycloak lit l'annuaire en lecture seule et importe ses groupes.

  3. Droits d'administration, donnés par les groupes (Keycloak ou annuaire) :

    GroupeRôle donné
    navin-platform-adminsplatform_admin (administrateur de la plateforme)
    navin-admins-<slug de l'organisation>, par exemple navin-admins-defaulttenant_admin de cette organisation

    Les 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, changez EAI_OIDC_PLATFORM_ADMIN_GROUPS (liste séparée par des virgules) et EAI_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 Keycloak tenant pour 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).

  1. Bac à sable du Manager, sans root et sans Docker :
    export 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 suite
    navin-manager/packaging/sandbox/sandbox.sh bundle opa,openfga,prometheus,alertmanager
    La console du Manager reste disponible sur http://127.0.0.1:8460 (compte navin / navin, à changer dès la première connexion, cluster sandbox).
  2. Relier le portail au Manager :
    • dans la console du Manager, Utilisateurs : créez l'utilisateur au nom de votre identifiant du portail (navin pour le compte d'installation), rôle cluster_admin ou admin ;
    • 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:read et connections:manage (connexions aux services existants) ; GET /v1/platform-manager/setup renvoie 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ôle tenant_admin) : POST /v1/secrets avec {"path": "platform-manager/token", "value": "<jeton>"} ; GET /v1/me donne le tenant_id ;
    • dans services/control-plane/local.env :
      EAI_PLATFORM_MANAGER_URL=http://127.0.0.1:8460
      EAI_PLATFORM_MANAGER_TOKEN_REF=secret://<tenant_id>/platform-manager/token
      puis make 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 (navin pour le compte d'installation, le preferred_username pour une connexion Keycloak ou LDAP). Le Manager doit connaître un utilisateur de ce nom, et ses droits (services:install pour installer), ses approbations et ses règles d'arrêt s'appliquent.
  3. Arrêt du bac à sable : navin-manager/packaging/sandbox/sandbox.sh down (sandbox.sh status affiche son état).