# Cartographie des ports — enso (docv / enso) Ce document fixe les **ports utilisés** par le projet enso sur les machines **test**, **pprod**, **prod** et sur le **poste de développement**. Les ports listés comme déjà utilisés ci‑dessous ont été vérifiés par connexion aux machines (`ss -tlnp`). **Proxy nginx (192.168.1.100)** : pour les **seuls** vhosts `*.enso.4nkweb.com` et `*.docv.4nkweb.com`, les upstreams vers **101 / 102 / 103** sont **3032** (enso-front), **3038** (docv-back), **3040** (enso-back). Les fichiers `deploy/nginx/*.enso.*.locations.snippet` et `deploy/nginx/*.docv.*.locations.snippet` reprennent ce câblage. **Ne pas modifier** les autres vhosts du proxy (autres produits / domaines). **Domaines DNS (enso) :** `test.enso.4nkweb.com`, `pprod.enso.4nkweb.com`, `prod.enso.4nkweb.com`. **Domaines DNS (docv) :** `test.docv.4nkweb.com`, `pprod.docv.4nkweb.com`, `prod.docv.4nkweb.com` (TLS et DNS configurés). Même plan d’adressage machine que les domaines **enso** correspondants (101 / 102 / 103). **Règles de ports pour le produit docv (vhosts `*.docv.*`) :** - Ne pas binder de service docv sur les ports déjà utilisés sur les machines cibles (**§1** : 22, 25, 631, 3009, 3100, 3101, 80, 443, 3000, 3004, 3310, 9050, 9051, 18443, 29000, 38333, 38334, 5432, etc. — revérifier après chaque audit `ss`). - Ne pas réutiliser les ports **réservés** du déploiement **docv / enso** pour d’autres rôles : **3032** (enso-front), **3038** (docv-back), **3040** (enso-back), **3005** (docv-front prévu), **3022** (API IA dédiée). - **docv-back** (API socle) : **3038** (distinct de **3032** / **3040**). - **docv-front** (prévu) : **3005** — ne pas utiliser **3032** (réservé enso-front). **Référence :** [INSTALLATION_ENVIRONNEMENT.md](INSTALLATION_ENVIRONNEMENT.md). --- ## 1. Ports déjà utilisés sur les machines test / pprod / prod (vérifiés) Connexion SSH aux trois machines et exécution de `ss -tlnp`. Ports en écoute (hors localhost sauf si exposé) : ### test (192.168.1.101) | Port | Processus / usage | |------|-------------------| | 22 | sshd | | 25 | (mail) | | 631 | cups | | 3009 | node (LeCoffreIO ou équivalent) | | 3100 | next-server | | 3101 | node | | 5432 | PostgreSQL (localhost) | ### pprod (192.168.1.102) | Port | Processus / usage | |------|-------------------| | 22 | sshd | | 25 | (mail) | | 631 | cups | | 3009 | node | | 3100 | next-server | | 3101 | node | | 5432 | PostgreSQL (localhost) | ### prod (192.168.1.103) | Port | Processus / usage | |------|-------------------| | 22 | sshd | | 25 | (mail) | | 631 | cups | | 80 | HTTP | | 443 | HTTPS | | 3000 | node | | **3004** | **MainThread (déjà utilisé)** | | 3009 | node | | 3100 | next-server | | 3101 | node | | 3310 | (autre service) | | 5432 | PostgreSQL (localhost) | | 9050, 9051 | (Tor) | | 18443, 29000, 38333, 38334 | bitcoind | **Conclusion :** les ports **3032**, **3038**, **3040** (stack **enso** + **docv-back** derrière le proxy), **3005** (docv-front), **3022** sont **retenus pour le périmètre actuel du monorepo** et doivent rester **libres** sur les machines applicatives **par rapport à la liste §1 au moment du dernier audit** — revérifier avec `ss` avant toute mise en service. Le port **3004** est occupé sur prod (service existant). Le port **3000** est occupé sur prod ; l’API IA (`ai`) utilise **3022** lorsqu’elle tourne sur une machine dédiée (ex. poste de dev, 192.168.1.173). --- ## 2. Briques logicielles ouvrant des ports Toutes les briques du projet enso qui ouvrent un port TCP : | Brique | Type | Consommée par | |--------|------|----------------| | docv-back | Backend Rust | Proxy, fronts (via API) | | enso-back | Backend Rust | Proxy, enso-front | | enso-front | Front Next.js | Proxy, navigateur | | docv-front | Front Next.js (vhost ***.docv.***) | Proxy, navigateur ; port **3005**, distinct d’enso-front (**3032**) | | **API IA** (sous-module `ai`) | API TypeScript (Ollama, AnythingLLM) | docv-back, enso-back (variable `IA_API_URL`) | L’API IA est une brique à part. **Pour l’instant les services IA ne tournent que sur le poste de développement et sur la machine 192.168.1.173** (ce poste / machine ia). Sur test, pprod et prod, l’API IA n’est pas déployée : les backends de ces environnements pointent `IA_API_URL` vers 192.168.1.173:3022. Lorsqu’elle tourne (dev ou 173), elle écoute sur le port 3022. ### 2bis. Logiciels IA du socle (en plus de l’API IA) L’**API IA** (sous-module `ai`, port 3022) s’appuie sur le **socle IA** : Ollama et AnythingLLM. Ces logiciels ouvrent eux‑mêmes des ports. Ils sont installés sur le **poste de développement** et sur **192.168.1.173** (pas sur test/pprod/prod pour l’instant). Les backends n’appellent pas directement ces logiciels, uniquement l’API IA. | Logiciel | Port par défaut | Variable / config | Consommée par | |----------|-----------------|-------------------|---------------| | **Ollama** | 11434 | `OLLAMA_HOST` (ex. `0.0.0.0:11434`) | API IA (sous-module `ai`) | | **AnythingLLM** | 3001 | `SERVER_PORT` (dans `.env` AnythingLLM) | API IA (sous-module `ai`) | | **API IA** (`ai/`) | 3022 | `PORT` ou config du serveur API IA | docv-back, enso-back (`IA_API_URL`) | **Note :** Si le port 3001 est déjà utilisé sur la machine (poste de dev ou 173), configurer AnythingLLM sur un autre port (ex. 3019 ou 3021) via `SERVER_PORT`. L’API IA (`ai`) doit être configurée pour pointer vers les URLs réelles d’Ollama et d’AnythingLLM (ex. `http://localhost:11434` pour Ollama, `http://localhost:3001` ou le port choisi pour AnythingLLM). ## 3. APIs, BDD et services par environnement Sur **chaque** environnement (développement, test, pprod, prod) on a des **APIs** (backends), une **BDD** (PostgreSQL) et des **services** (fronts). Chaque type utilise des ports distincts ; il y a donc **plusieurs ports par environnement**, pas un seul. | Type | Port(s) | Rôle | |------|---------|------| | **APIs** (backends) | **3038**, **3040** | docv-back, enso-back | | **BDD** | 5432 (localhost) | PostgreSQL (docv, enso par BDD ou schémas) | | **Services** (fronts) | **3032**, **3005** | enso-front ; **docv-front** (vhost docv uniquement) | | **API IA** (sous-module `ai`) | 3022 | Uniquement sur **poste de dev** et **192.168.1.173** pour l’instant ; test/pprod/prod appellent 192.168.1.173:3022 | | **Ollama** (socle IA) | 11434 | Sur poste de dev et 173 ; consommée par l’API IA | | **AnythingLLM** (socle IA) | 3001 (ou autre si `SERVER_PORT` défini) | Sur poste de dev et 173 ; consommée par l’API IA | Sur test, pprod et prod : mêmes ports pour APIs et fronts (**3038**, **3040**, **3032**, **3005** lorsque docv-front est déployé) ; BDD locale (5432). L’API IA et le socle IA (Ollama, AnythingLLM) n’écoutent pas sur ces machines. ## 4. Ports nécessaires pour enso Le monorepo enso expose **quatre** briques applicatives principales côté produit (deux backends, deux fronts) plus l'**API IA** à part : | Service | Rôle | |-----------------|-------------------------------| | docv-back | Backend API socle commun | | enso-back | Backend API enso (avocats) | | enso-front | Front Next.js enso | | docv-front | Front docv (vhost ***.docv.***) — port **3005** | | **API IA** (`ai/`) | API IA TypeScript (Ollama, AnythingLLM) ; consommée par les backends | Chaque processus écoute sur un port dédié. Les mêmes numéros pour APIs et fronts en **développement**, **test**, **pprod** et **prod** (sauf **API IA** : uniquement dev + 173). L’API IA (3022) n’écoute que sur le **poste de développement** et sur **192.168.1.173** pour l’instant. --- ## 5. Attribution des ports (libres, identiques partout) Ports **retenus** sur test, pprod, prod et en développement local (alignés **proxy nginx** + applications) : | Port | Service | Fichier / variable concerné | |------|------------------|-----------------------------| | **3032** | enso-front | `enso/enso-front/package.json` (dev, start) | | **3005** | docv-front (vhost ***.docv.***) | `docv/docv-front/package.json` lorsque le front existe | | **3038** | docv-back | `docv/docv-back/.env` → `PORT=3038` | | **3040** | enso-back | `enso/enso-back/.env` → `PORT=3040` | | **3022** | API IA (`ai/`) | Config du serveur API IA ; `IA_API_URL` dans les backends. **Pour l’instant : API IA uniquement sur le poste de dev et sur 192.168.1.173.** Sur test/pprod/prod, `IA_API_URL` = `http://192.168.1.173:3022`. | Règle : **les mêmes numéros** en local, test, pprod et prod. L’API IA (3022) ne tourne que sur le poste de dev et la machine 173 ; les autres environnements l’appellent à distance. --- ## 6. Résumé par environnement Sur chaque environnement : **APIs** (backends), **BDD** (PostgreSQL), **services** (fronts). Plusieurs ports par machine. | Environnement | Machine / poste | APIs (**3038**, **3040**) | BDD (5432) | Fronts (**3032**, docv **3005**) | API IA (3022) | |---------------|----------------------|--------------------------|------------|---------------------|---------------| | Développement | Poste local | oui | oui | oui | **oui** (locale) | | test | 192.168.1.101 | oui | oui | oui | non → appelle 192.168.1.173:3022 | | pprod | 192.168.1.102 | oui | oui | oui | non → appelle 192.168.1.173:3022 | | prod | 192.168.1.103 | oui | oui | oui | non → appelle 192.168.1.173:3022 | | Services IA | 192.168.1.173 (ce poste) | — | — | — | **oui** (3022) ; consommée par test/pprod/prod et par le poste de dev | Détail des ports par machine : | Machine / poste | docv-back | docv-front | enso-back | enso-front | API IA | |-----------------|-----------|------------|-----------|------------|--------| | Poste de dev | 3038 | 3005 | 3040 | 3032 | 3022 | | test 192.168.1.101 | 3038 | 3005 | 3040 | 3032 | — | | pprod 192.168.1.102 | 3038 | 3005 | 3040 | 3032 | — | | prod 192.168.1.103 | 3038 | 3005 | 3040 | 3032 | — | | 192.168.1.173 | — | — | — | — | 3022 | Sur le **poste de dev** et **192.168.1.173**, en plus des ports ci‑dessus (pour le poste de dev : **3038**, **3005**, **3040**, **3032**, **3022** ; pour 173 : 3022 uniquement), les **logiciels du socle IA** écoutent : **Ollama** sur **11434**, **AnythingLLM** sur **3001** (ou le port défini par `SERVER_PORT`). L’API IA (3022) appelle Ollama et AnythingLLM en local sur ces machines. Routage côté **proxy 192.168.1.100** : **enso :** `test.enso.4nkweb.com` → 192.168.1.101 ; `pprod.enso.4nkweb.com` → 192.168.1.102 ; `prod.enso.4nkweb.com` → 192.168.1.103 — préfixes **location** : `/` → **3032**, `/api/` → **3040**, `/docv-api/` → **3038**. **docv :** `test|pprod|prod.docv.4nkweb.com` → même IP ; **3038** (API) ; **3005** lorsque **docv-front** sera déployé. Fichiers : `deploy/nginx/*.docv.*.locations.snippet`, `deploy/nginx/*.enso.*.locations.snippet`. Les backends test/pprod/prod utilisent `IA_API_URL=http://192.168.1.173:3022` pour l’API IA. --- ## 7. Vérification des ports sur une machine Avant déploiement ou au diagnostic, lister les ports en écoute : ```bash ss -tlnp | grep -E '3032|3038|3040|3005|3022' # ou sudo lsof -i -P -n | grep LISTEN | grep -E '3032|3038|3040|3005|3022' ``` S’assurer qu’aucun autre service n’utilise déjà ces ports sur la machine cible. Sur le **poste de dev** et **192.168.1.173**, inclure aussi les ports du socle IA : ```bash ss -tlnp | grep -E '3032|3038|3040|3003|3005|3010|3022|11434|3001' ``` --- ## 8. Références - [INSTALLATION_ENVIRONNEMENT.md](INSTALLATION_ENVIRONNEMENT.md) — installation et déploiement. - [ARCHITECTURE_DOCV_ENSO.md](ARCHITECTURE_DOCV_ENSO.md) — section 2ter (API IA, sous-module ai). - Infrastructure Cloud 4NK — liste des services et ports par machine (règles projet / documentation infra).