Infrastruttura Server¶
Architettura Completa¶
Il traffico pubblico transita attraverso tre livelli:
Internet (93.46.50.121)
│
▼
192.168.40.131 SRV-REVPRO (Ubuntu 24.04)
├── Nginx — SSL termination su 80/443
├── Cert Let's Encrypt: multitools.itnetlab.net + SAN
└── Proxy verso i server interni:
│
├── multitools.itnetlab.net ──────────→ 192.168.40.51:80 (PROD)
├── dev.multitools.itnetlab.net ──────→ 192.168.40.249:5173 (frontend)
│ 192.168.40.249:3001 (API)
└── docs.multitools.itnetlab.net ─────→ 192.168.40.249:80 (Wiki MkDocs)
192.168.40.249 multitools-dev-2 (DEV — ambiente di lavoro)
├── PM2: dev-backend → porta 3001
├── PM2: dev-frontend → porta 5173
├── Nginx locale → porta 80 (serve docs MkDocs)
└── PostgreSQL 16 (Docker) → porta 5432
192.168.40.51 (PROD — INTOCCABILE)
└── Backend NestJS → porta 3000
Regola assoluta
Si lavora solo su .249. Il server .51 è intoccabile salvo keyword HOTFIX.
Reverse Proxy — SRV-REVPRO (192.168.40.131)¶
Ruolo: unico punto di ingresso pubblico. Gestisce SSL e instrada verso i server interni.
Regole importanti:
- I certificati SSL si gestiscono qui, non sui server app (.249 o .51)
- Per aggiungere un nuovo sottodominio: aggiungere server block su .131 + espandere il cert
- La directory /var/www/html su .131 serve gli acme-challenge di certbot
Certificato SSL¶
Un unico certificato con SAN multipli:
| Dominio | SAN |
|---|---|
multitools.itnetlab.net |
✅ |
dev.multitools.itnetlab.net |
✅ |
docs.multitools.itnetlab.net |
⏳ da aggiungere con certbot --expand |
Path cert: /etc/letsencrypt/live/multitools.itnetlab.net/
Aggiungere un Nuovo Sottodominio¶
- Aggiungere il record DNS
A→93.46.50.121 - Aggiungere server block in
/etc/nginx/sites-available/multitoolssu.131 nginx -t && nginx -s reload- Espandere il cert:
- Aggiornare il server block HTTPS con il nuovo cert (certbot lo fa automaticamente con
--nginx)
Dev Server — multitools-dev-2 (192.168.40.249)¶
Ambiente di sviluppo. Qui gira il codice.
Processi PM2 Attivi¶
| Nome PM2 | Porta | Cosa serve |
|---|---|---|
dev-backend |
3001 | Backend NestJS in modalità dev |
dev-frontend |
5173 | Frontend Vite con HMR |
Nginx Locale¶
Nginx su .249 serve:
- docs.multitools.itnetlab.net → wiki/site/ (MkDocs, build statica)
- Redirect HTTP → HTTPS per gli altri domini (compatibilità)
Prod Server (192.168.40.51)¶
INTOCCABILE. Solo interventi con keyword HOTFIX esplicita.
Backend NestJS sulla porta 3000, servito da Nginx locale. Il reverse proxy .131 fa da frontend SSL.
Accesso SSH¶
| Server | Comando |
|---|---|
| Dev (.249) | ssh -i ~/.ssh/id_ed25519 alderaan@192.168.40.249 |
| Reverse proxy (.131) | ssh -i ~/.ssh/id_ed25519 root@192.168.40.131 |
Comandi Operativi¶
# --- Su .249 (dev) ---
pm2 status
pm2 logs dev-backend --lines 50
bash /var/www/html/multitools/scripts/kill_zombie.sh
# --- Su .131 (reverse proxy) ---
nginx -t # test configurazione
nginx -s reload # ricarica senza downtime
certbot certificates # stato certificati
certbot renew --dry-run # test rinnovo automatico
# Espandere cert per nuovo dominio
certbot --expand -d multitools.itnetlab.net \
-d dev.multitools.itnetlab.net \
-d docs.multitools.itnetlab.net \
--nginx
Wiki MkDocs¶
- Sorgenti:
/var/www/html/multitools/wiki/docs/ - Build:
/var/www/html/multitools/wiki/site/ - Rebuild dopo modifiche:
- URL finale:
https://docs.multitools.itnetlab.net