Vai al contenuto

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

  1. Aggiungere il record DNS A93.46.50.121
  2. Aggiungere server block in /etc/nginx/sites-available/multitools su .131
  3. nginx -t && nginx -s reload
  4. Espandere il cert:
    certbot --expand -d multitools.itnetlab.net \
      -d dev.multitools.itnetlab.net \
      -d docs.multitools.itnetlab.net \
      --nginx
    
  5. 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.netwiki/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:
    cd /var/www/html/multitools/wiki
    source ../.mkdocs-venv/bin/activate
    mkdocs build
    
  • URL finale: https://docs.multitools.itnetlab.net