Nicolas Cantu bc3c75e15f Add enso docs mirror under services/docv/enso-docs; docv integration docs
- Copy enso/docs tree to services/docv/enso-docs (refresh via cp -a from enso repo)
- Document mirror and refresh command in services/docv/README.md
- Ignore services/docv/target for local Rust workspace
- Track docv-service-integration, API docv.md, and related doc index updates
2026-04-03 17:26:35 +02:00

198 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 cidessous 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 dadressage 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 dautres 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 ; lAPI IA (`ai`) utilise **3022** lorsquelle 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 denso-front (**3032**) |
| **API IA** (sous-module `ai`) | API TypeScript (Ollama, AnythingLLM) | docv-back, enso-back (variable `IA_API_URL`) |
LAPI IA est une brique à part. **Pour linstant 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, lAPI IA nest pas déployée : les backends de ces environnements pointent `IA_API_URL` vers 192.168.1.173:3022. Lorsquelle tourne (dev ou 173), elle écoute sur le port 3022.
### 2bis. Logiciels IA du socle (en plus de lAPI IA)
L**API IA** (sous-module `ai`, port 3022) sappuie sur le **socle IA** : Ollama et AnythingLLM. Ces logiciels ouvrent euxmê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 linstant). Les backends nappellent pas directement ces logiciels, uniquement lAPI 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`. LAPI IA (`ai`) doit être configurée pour pointer vers les URLs réelles dOllama et dAnythingLLM (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 linstant ; test/pprod/prod appellent 192.168.1.173:3022 |
| **Ollama** (socle IA) | 11434 | Sur poste de dev et 173 ; consommée par lAPI IA |
| **AnythingLLM** (socle IA) | 3001 (ou autre si `SERVER_PORT` défini) | Sur poste de dev et 173 ; consommée par lAPI 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). LAPI 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). LAPI IA (3022) nécoute que sur le **poste de développement** et sur **192.168.1.173** pour linstant.
---
## 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 linstant : 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. LAPI IA (3022) ne tourne que sur le poste de dev et la machine 173 ; les autres environnements lappellent à 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 cidessus (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`). LAPI 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 lAPI 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'
```
Sassurer quaucun autre service nutilise 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).