Initial: desk + ncantu placeholder + per-project cursor configs
**Motivations:** - Centraliser les fichiers Cursor (rules, skills, agents, commands, hooks) par user et par projet **Root causes:** - N/A **Correctifs:** - N/A **Evolutions:** - desk: rules, skills-cursor, agents, commands, hooks, argv/hooks/mcp.json - ncantu: README placeholder - 4NK_node, algo, builazoo, ia_local, lecoffre_ng, lecoffre_ng_pprod, lecoffre_ng_test: .cursor contents **Pages affectées:** - cursor/desk/, cursor/ncantu/, cursor/<project>/
This commit is contained in:
542
desk/rules/environnements.md
Normal file
542
desk/rules/environnements.md
Normal file
@@ -0,0 +1,542 @@
|
||||
# Infrastructure Cloud 4NK - Guide Complet
|
||||
|
||||
## Table des Matières
|
||||
|
||||
1. [Vue d'Ensemble](#vue-densemble)
|
||||
2. [Architecture Réseau](#architecture-réseau)
|
||||
3. [Serveurs et Rôles](#serveurs-et-rôles)
|
||||
4. [Services et Domaines](#services-et-domaines)
|
||||
5. [Configuration des Ports](#configuration-des-ports)
|
||||
6. [Accès SSH](#accès-ssh)
|
||||
7. [DNS et Certificats SSL](#dns-et-certificats-ssl)
|
||||
8. [NAT et Routage](#nat-et-routage)
|
||||
9. [Guide d'Utilisation](#guide-dutilisation)
|
||||
10. [Dépannage](#dépannage)
|
||||
|
||||
---
|
||||
|
||||
## Vue d'Ensemble
|
||||
|
||||
L'infrastructure cloud 4NK est composée de **serveurs** organisés en architecture privée avec un serveur proxy public. Tous les services sont accessibles via HTTPS et certains services Bitcoin sont exposés via NAT.
|
||||
|
||||
### Caractéristiques Principales
|
||||
|
||||
- **Réseau privé:** 192.168.1.x (DHCP)
|
||||
- **Point d'entrée public:** Proxy (4nk.myftp.biz)
|
||||
- **Environnements:** Test, Pre-Production, Production, Services, Bitcoin, IA
|
||||
- **Authentification:** SSH keys uniquement (pas de mots de passe)
|
||||
|
||||
---
|
||||
|
||||
## Architecture Réseau
|
||||
|
||||
### Topologie
|
||||
|
||||
```
|
||||
Internet
|
||||
│
|
||||
├─→ 4nk.myftp.biz (DynDNS)
|
||||
│ └─→ 192.168.1.100 (proxy) - Point d'entrée unique
|
||||
│ │
|
||||
│ ├─→ 192.168.1.101 (test) - Environnement de test
|
||||
│ ├─→ 192.168.1.102 (pprod) - Pre-production
|
||||
│ ├─→ 192.168.1.103 (prod) - Production
|
||||
│ └─→ 192.168.1.104 (services) - Services partagés
|
||||
│ └─→ 192.168.1.105 (bitcoin) - Services bitcoin
|
||||
│ └─→ 192.168.1.173 (ia) - Services ia
|
||||
```
|
||||
|
||||
### Adresses IP et MAC
|
||||
|
||||
| Hostname | IP Address | MAC Address | Rôle |
|
||||
|----------|------------|-------------|------|
|
||||
| proxy | 192.168.1.100 | 64:00:6a:28:88:b7 | Serveur proxy principal (point d'entrée) |
|
||||
| test | 192.168.1.101 | b0:83:fe:ad:2e:ca | Environnement de test |
|
||||
| pprod | 192.168.1.102 | 64:00:6a:28:8c:a0 | Pre-production |
|
||||
| prod | 192.168.1.103 | b0:41:6f:0a:10:da | Production |
|
||||
| services | 192.168.1.104 | ee:39:9d:48:68:3f | Services partagés (Git, Mempool, Rocket.Chat) |
|
||||
| services | 192.168.1.105 | bitcoin
|
||||
| services | 192.168.1.173 | ia
|
||||
|
||||
### Configuration DHCP
|
||||
|
||||
Toutes les adresses IP sont attribuées automatiquement par DHCP avec réservation basée sur les adresses MAC.
|
||||
|
||||
### DynDNS
|
||||
|
||||
- **Provider:** no-ip.com
|
||||
- **Login:** nicolascantu
|
||||
- **Domaine:** 4nk.myftp.biz
|
||||
- **Usage:** Tous les domaines pointent vers ce DynDNS via CNAME
|
||||
|
||||
---
|
||||
|
||||
## Serveurs et Rôles
|
||||
|
||||
### 1. Proxy (192.168.1.100)
|
||||
|
||||
**Rôle:** Point d'entrée unique pour tous les services
|
||||
|
||||
**Fonctions:**
|
||||
- Reverse proxy Nginx pour le routage HTTP/HTTPS
|
||||
- Routage des domaines vers les serveurs backend appropriés
|
||||
- Gestion des certificats SSL/TLS (Let's Encrypt)
|
||||
- Bastion SSH pour l'accès aux serveurs backend
|
||||
- Exposition des ports Bitcoin via NAT (stream Nginx)
|
||||
|
||||
**Accès externe:**
|
||||
- SSH: Port 22
|
||||
- HTTP: Port 80
|
||||
- HTTPS: Port 443
|
||||
|
||||
**Domaine public:** 4nk.myftp.biz
|
||||
|
||||
### 2. Test (192.168.1.101)
|
||||
|
||||
**Rôle:** Environnement de développement et de test
|
||||
|
||||
- LeCoffreIO, 4nk.network, docv.fr, zapwall.fr, 4nk.organic
|
||||
|
||||
**Ports utilisés:** 3001, 3005-3009, 3011-3014
|
||||
|
||||
### 3. Pre-Production (192.168.1.102)
|
||||
|
||||
**Rôle:** Environnement de validation avant production
|
||||
|
||||
- LeCoffreIO, 4nk.network, docv.fr, zapwall.fr, 4nk.organic
|
||||
|
||||
**Ports utilisés:** 3001, 3005-3009, 3011-3014
|
||||
|
||||
### 4. Production (192.168.1.103)
|
||||
|
||||
**Rôle:** Environnement de production
|
||||
|
||||
**Ports utilisés:** 3001-3014
|
||||
|
||||
### 5. Services (192.168.1.104)
|
||||
|
||||
**Rôle:** Services d'infrastructure partagés
|
||||
|
||||
**Services hébergés:** 3 domaines
|
||||
- **mempool1.4nkweb.com:** Explorateur de transactions Bitcoin (port 3015)
|
||||
- **git1.4nkweb.com:** Serveur Git (ports 3016 HTTP/HTTPS + 9418 Git Protocol)
|
||||
- **rocket1.4nkweb.com:** Rocket.Chat (port 3017)
|
||||
|
||||
**Ports utilisés:** 3015-3017, 9418
|
||||
|
||||
### 5. Bitcoin (192.168.1.105)
|
||||
|
||||
---
|
||||
|
||||
## Services et Domaines
|
||||
|
||||
### Liste Complète des Domaines par Environnement
|
||||
|
||||
#### Test (192.168.1.101)
|
||||
|
||||
| Domaine | Port | Service |
|
||||
|---------|------|---------|
|
||||
| test.lecoffreio.4nkweb.com | 3009 | LeCoffreIO |
|
||||
| test.4nk.network | 3011 | 4nk.network |
|
||||
| test.docv.fr | 3012 | DocV |
|
||||
| test.zapwall.fr | 3013 | Zapwall |
|
||||
| test.4nk.organic | 3014 | 4nk.organic |
|
||||
|
||||
#### Pre-Production (192.168.1.102) - 11 domaines
|
||||
|
||||
Même configuration que test, avec préfixe `pprod.` au lieu de `test.`
|
||||
|
||||
#### Production (192.168.1.103) - 15 domaines
|
||||
|
||||
**Avec préfixe prod.:**
|
||||
- prod.lecoffreio.4nkweb.com (3009)
|
||||
- prod.4nk.network (3011)
|
||||
- prod.docv.fr (3012)
|
||||
- prod.zapwall.fr (3013)
|
||||
- prod.4nk.organic (3014)
|
||||
|
||||
**Sans préfixe (4 domaines, uniquement en prod):**
|
||||
|
||||
#### Services (192.168.1.104) - 3 domaines
|
||||
|
||||
| Domaine | Ports | Service |
|
||||
|---------|-------|---------|
|
||||
| mempool1.4nkweb.com | 3015 | Mempool (Bitcoin explorer) |
|
||||
| git1.4nkweb.com | 3016 (HTTP/HTTPS) + 9418 (Git Protocol) | Serveur Git |
|
||||
| rocket1.4nkweb.com | 3017 | Rocket.Chat |
|
||||
|
||||
### Structure de Déploiement
|
||||
|
||||
Tous les services sont déployés dans `/srv/4NK/<domaine>/` sur chaque serveur backend.
|
||||
|
||||
**Exemple:**
|
||||
|
||||
---
|
||||
|
||||
## Configuration des Ports
|
||||
|
||||
### Ports Web (HTTP/HTTPS)
|
||||
|
||||
Tous les services web sont accessibles via le proxy principal (192.168.1.100:443) qui route directement vers les ports applicatifs.
|
||||
|
||||
| Port | Type de Service | Domaines |
|
||||
|------|-----------------|----------|
|
||||
test/pprod/prod.storagetemp.4nkweb.com |
|
||||
| 3007 | userwallet | test/pprod/prod.userwallet.4nkweb.com | 3009 | lecoffreio | test/pprod/prod.lecoffreio.4nkweb.com |
|
||||
| 3011 | 4nk.network | test/pprod/prod.4nk.network |
|
||||
| 3012 | docv.fr | test/pprod/prod.docv.fr |
|
||||
| 3013 | zapwall.fr | test/pprod/prod.zapwall.fr |
|
||||
| 3014 | 4nk.organic | test/pprod/prod.4nk.organic |
|
||||
| 3015 | mempool| mempool.4nkweb.com |
|
||||
| 3016 | git1 (HTTP/HTTPS) | git1.4nkweb.com |
|
||||
| 3017 | rocket1 | rocket1.4nkweb.com |
|
||||
|
||||
### Ports Bitcoin (Production uniquement)
|
||||
|
||||
Les domaines signet (bitcoin uniquement) exposent également les ports Bitcoin via NAT:
|
||||
|
||||
| Port | Protocole | Service | Domaine |
|
||||
|------|-----------|---------|---------|
|
||||
| 8333 | TCP |
|
||||
| 38333 | TCP/UDP
|
||||
| 28332 | TCP | ZMQ
|
||||
|
||||
### Ports Git
|
||||
|
||||
| Port | Protocole | Service | Domaine |
|
||||
|------|-----------|---------|---------|
|
||||
| 9418 | TCP | Git Protocol | git1.4nkweb.com |
|
||||
|
||||
---
|
||||
|
||||
## Accès SSH
|
||||
|
||||
### Architecture SSH
|
||||
|
||||
Tous les serveurs backend sont sur un réseau privé et ne sont pas directement accessibles depuis Internet. L'accès se fait via le **proxy** qui agit comme un bastion host.
|
||||
|
||||
```
|
||||
Client Externe → 4nk.myftp.biz (proxy) → Serveur Backend (192.168.1.10x)
|
||||
```
|
||||
|
||||
### Configuration SSH Recommandée
|
||||
|
||||
Ajoutez cette configuration dans votre `~/.ssh/config` local:
|
||||
|
||||
```ssh-config
|
||||
# Proxy server (accès direct)
|
||||
Host proxy
|
||||
HostName 4nk.myftp.biz
|
||||
User ncantu
|
||||
Port 22
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
IdentitiesOnly yes
|
||||
PreferredAuthentications publickey
|
||||
PasswordAuthentication no
|
||||
|
||||
# Test server (via proxy)
|
||||
Host test
|
||||
HostName 192.168.1.101
|
||||
User ncantu
|
||||
Port 22
|
||||
ProxyJump ncantu@4nk.myftp.biz
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
IdentitiesOnly yes
|
||||
PreferredAuthentications publickey
|
||||
PasswordAuthentication no
|
||||
StrictHostKeyChecking accept-new
|
||||
|
||||
# Pre-production server (via proxy)
|
||||
Host pprod
|
||||
HostName 192.168.1.102
|
||||
User ncantu
|
||||
Port 22
|
||||
ProxyJump ncantu@4nk.myftp.biz
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
IdentitiesOnly yes
|
||||
PreferredAuthentications publickey
|
||||
PasswordAuthentication no
|
||||
StrictHostKeyChecking accept-new
|
||||
|
||||
# Production server (via proxy)
|
||||
Host prod
|
||||
HostName 192.168.1.103
|
||||
User ncantu
|
||||
Port 22
|
||||
ProxyJump ncantu@4nk.myftp.biz
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
IdentitiesOnly yes
|
||||
PreferredAuthentications publickey
|
||||
PasswordAuthentication no
|
||||
StrictHostKeyChecking accept-new
|
||||
|
||||
# Services server (via proxy)
|
||||
Host services
|
||||
HostName 192.168.1.104
|
||||
User ncantu
|
||||
Port 22
|
||||
ProxyJump ncantu@4nk.myftp.biz
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
IdentitiesOnly yes
|
||||
PreferredAuthentications publickey
|
||||
PasswordAuthentication no
|
||||
StrictHostKeyChecking accept-new
|
||||
```
|
||||
|
||||
|
||||
# Bitcoin server (via proxy)
|
||||
Host bitcoin
|
||||
HostName 192.168.1.105
|
||||
User ncantu
|
||||
Port 22
|
||||
ProxyJump ncantu@4nk.myftp.biz
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
IdentitiesOnly yes
|
||||
PreferredAuthentications publickey
|
||||
PasswordAuthentication no
|
||||
StrictHostKeyChecking accept-new
|
||||
```
|
||||
|
||||
|
||||
# IA server (via proxy)
|
||||
Host bitcoin
|
||||
HostName 192.168.1.173
|
||||
User ncantu
|
||||
Port 22
|
||||
ProxyJump ncantu@4nk.myftp.biz
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
IdentitiesOnly yes
|
||||
PreferredAuthentications publickey
|
||||
PasswordAuthentication no
|
||||
StrictHostKeyChecking accept-new
|
||||
```
|
||||
|
||||
|
||||
### Commandes SSH
|
||||
|
||||
**Avec la configuration SSH (recommandé):**
|
||||
```bash
|
||||
ssh proxy # Connexion au proxy
|
||||
ssh test # Connexion au serveur test
|
||||
ssh pprod # Connexion au serveur pre-production
|
||||
ssh prod # Connexion au serveur production
|
||||
ssh services # Connexion au serveur services
|
||||
ssh bitcoin # Connexion au serveur bitcoin
|
||||
ssh ia # Connexion au serveur ia
|
||||
```
|
||||
|
||||
**Sans configuration (ProxyJump manuel):**
|
||||
```bash
|
||||
ssh -J ncantu@4nk.myftp.biz ncantu@192.168.1.101 # test
|
||||
ssh -J ncantu@4nk.myftp.biz ncantu@192.168.1.102 # pprod
|
||||
ssh -J ncantu@4nk.myftp.biz ncantu@192.168.1.103 # prod
|
||||
ssh -J ncantu@4nk.myftp.biz ncantu@192.168.1.104 # services
|
||||
ssh -J ncantu@4nk.myftp.biz ncantu@192.168.1.105 # bitcoin
|
||||
```
|
||||
|
||||
### Authentification
|
||||
|
||||
- **Méthode:** SSH keys uniquement (pas de mots de passe)
|
||||
- **Clé publique autorisée:** `ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIITcSsup4VjkH6FXa0Prwy44mQ1JOgG/ZzocdrJ91Svu aamroughriss@gmail.com`
|
||||
- **Utilisateur:** `ncantu` sur tous les serveurs
|
||||
|
||||
---
|
||||
|
||||
## DNS et Certificats SSL
|
||||
|
||||
### Configuration DNS
|
||||
|
||||
Tous les domaines utilisent des enregistrements **CNAME** pointant vers `4nk.myftp.biz` (DynDNS).
|
||||
|
||||
**Exemple de configuration DNS (Gandi):**
|
||||
```
|
||||
signet.4nkweb.com. 3600 IN CNAME 4nk.myftp.biz.
|
||||
```
|
||||
|
||||
### Certificats SSL/TLS
|
||||
|
||||
- **Provider:** Let's Encrypt
|
||||
- **Renouvellement:** Automatique via Certbot
|
||||
- **Couverture:** Tous les domaines ont des certificats SSL valides
|
||||
- **Protocole:** HTTPS uniquement (redirection HTTP → HTTPS)
|
||||
|
||||
### Vérification des Certificats
|
||||
|
||||
```bash
|
||||
# Vérifier un certificat
|
||||
openssl s_client -connect domain:443 -servername domain
|
||||
|
||||
# Lister tous les certificats
|
||||
sudo certbot certificates
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## NAT et Routage
|
||||
|
||||
### Configuration NAT
|
||||
|
||||
Le routeur/firewall expose les ports suivants vers Internet:
|
||||
|
||||
| Port Externe | Protocole | IP Destination | Port Destination | Service |
|
||||
|--------------|-----------|----------------|-----------------|---------|
|
||||
| 22 | TCP | 192.168.1.100 | 22 | SSH (proxy) |
|
||||
| 80 | TCP | 192.168.1.100 | 80 | HTTP (proxy) |
|
||||
| 443 | TCP | 192.168.1.100 | 443 | HTTPS (proxy) |
|
||||
| 38333 | TCP/UDP | 192.168.1.105 | 38333 | Bitcoin Signet (bitcoin) |
|
||||
| 9418 | TCP | 192.168.1.104 | 9418 | Git Protocol |
|
||||
|
||||
### Routage Web
|
||||
|
||||
Le proxy Nginx route tous les domaines HTTP/HTTPS vers les serveurs backend appropriés:
|
||||
|
||||
```
|
||||
Client → 4nk.myftp.biz:443 → Nginx (proxy) → Backend:Port
|
||||
```
|
||||
|
||||
**Exemple:**
|
||||
- `mempoo1.4nkweb.com` → 192.168.1.104:3015
|
||||
|
||||
### Routage Bitcoin
|
||||
|
||||
Les ports Bitcoin sont exposés via NAT et routés par Nginx stream:
|
||||
|
||||
```
|
||||
Client → 4nk.myftp.biz:38333 → Nginx Stream → bitcoin:38333
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Guide d'Utilisation
|
||||
|
||||
### Accéder aux Services Web
|
||||
|
||||
Tous les services sont accessibles via HTTPS:
|
||||
|
||||
```bash
|
||||
# Exemples
|
||||
curl https://signet.4nkweb.com
|
||||
```
|
||||
|
||||
### Accéder aux Services Bitcoin
|
||||
|
||||
**Bitcoin Signet (prod uniquement):**
|
||||
```bash
|
||||
# Connexion Bitcoin Signet
|
||||
bitcoin-cli -rpcconnect=signet.4nkweb.com -rpcport=38333 getblockchaininfo
|
||||
|
||||
# Test de connexion
|
||||
nc -zv signet.4nkweb.com 38333
|
||||
```
|
||||
|
||||
### Utiliser Git
|
||||
|
||||
**Cloner un dépôt:**
|
||||
```bash
|
||||
# Via HTTPS
|
||||
git clone https://git1.4nkweb.com/username/repo.git
|
||||
|
||||
# Via Git Protocol
|
||||
git clone git://git1.4nkweb.com/username/repo.git
|
||||
```
|
||||
|
||||
### Accéder à Mempool
|
||||
|
||||
Ouvrir dans un navigateur: `https://mempool1.4nkweb.com`
|
||||
|
||||
### Accéder à Rocket.Chat
|
||||
|
||||
Ouvrir dans un navigateur: `https://rocket1.4nkweb.com`
|
||||
|
||||
### Déployer un Service
|
||||
|
||||
1. **Se connecter au serveur approprié:**
|
||||
```bash
|
||||
ssh test # ou pprod, prod, services
|
||||
```
|
||||
|
||||
4. **Vérifier que l'application écoute sur le bon port:**
|
||||
```bash
|
||||
ss -tlnp | grep <port>
|
||||
```
|
||||
|
||||
5. **Tester l'accès:**
|
||||
```bash
|
||||
curl https://<domaine>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Dépannage
|
||||
|
||||
### Problèmes de Connexion SSH
|
||||
|
||||
**Erreur: "Connection refused"**
|
||||
- Vérifier que le proxy (4nk.myftp.biz) est accessible
|
||||
- Vérifier que le port 22 est ouvert sur le firewall
|
||||
- Vérifier la configuration NAT (port 22 → 192.168.1.100:22)
|
||||
|
||||
**Erreur: "Permission denied"**
|
||||
- Vérifier que votre clé SSH publique est dans `~/.ssh/authorized_keys` sur le serveur
|
||||
- Vérifier les permissions: `chmod 600 ~/.ssh/authorized_keys`
|
||||
- Vérifier la clé: `ssh-keygen -l -f ~/.ssh/id_ed25519.pub`
|
||||
|
||||
**Erreur: "Host key verification failed"**
|
||||
- Supprimer l'ancienne clé: `ssh-keygen -R 192.168.1.10x`
|
||||
- Ou utiliser `StrictHostKeyChecking accept-new` dans la config
|
||||
|
||||
### Problèmes d'Accès Web
|
||||
|
||||
**Erreur: "Connection refused" ou timeout**
|
||||
- Vérifier que le service écoute sur le bon port: `ss -tlnp | grep <port>`
|
||||
- Vérifier la configuration Nginx sur le proxy
|
||||
- Vérifier les logs Nginx: `sudo tail -f /var/log/nginx/error.log`
|
||||
|
||||
**Erreur: "SSL certificate error"**
|
||||
- Vérifier que le certificat est valide: `sudo certbot certificates`
|
||||
- Renouveler le certificat si nécessaire: `sudo certbot renew`
|
||||
|
||||
**Erreur: "502 Bad Gateway"**
|
||||
- Vérifier que l'application backend est démarrée
|
||||
- Vérifier la connectivité réseau entre proxy et backend
|
||||
- Vérifier les logs de l'application
|
||||
|
||||
### Problèmes DNS
|
||||
|
||||
**Le domaine ne résout pas**
|
||||
- Vérifier la configuration DNS (CNAME vers 4nk.myftp.biz)
|
||||
- Vérifier la propagation DNS: `dig <domaine>`
|
||||
- Attendre la propagation (peut prendre jusqu'à 24h)
|
||||
|
||||
### Problèmes de Ports Bitcoin
|
||||
|
||||
**Impossible de se connecter aux ports Bitcoin**
|
||||
- Vérifier la configuration NAT (port 38333 → 192.168.1.103:38333)
|
||||
- Vérifier la configuration Nginx stream
|
||||
- Vérifier que le service Bitcoin écoute: `ss -tlnp | grep 38333`
|
||||
|
||||
### Commandes de Diagnostic
|
||||
|
||||
```bash
|
||||
# Vérifier la connectivité réseau
|
||||
ping 192.168.1.100
|
||||
ping 192.168.1.101
|
||||
|
||||
# Vérifier les ports ouverts
|
||||
ss -tlnp
|
||||
|
||||
# Vérifier les logs Nginx
|
||||
sudo tail -f /var/log/nginx/access.log
|
||||
sudo tail -f /var/log/nginx/error.log
|
||||
|
||||
# Vérifier les certificats SSL
|
||||
sudo certbot certificates
|
||||
|
||||
# Vérifier la configuration Nginx
|
||||
sudo nginx -t
|
||||
|
||||
# Tester un domaine
|
||||
curl -I https://<domaine>
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user