- 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
198 lines
12 KiB
Markdown
198 lines
12 KiB
Markdown
# 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).
|