Deploy e Monitoraggio
Questa guida descrive i processi di deploy e monitoraggio per tutti gli ambienti della piattaforma.
Ambienti Disponibili
1. Sviluppo (Development)
- Branch:
developo branch di feature - URL:
http://localhost:3000(app) +http://localhost:3300(worker) - Database: PostgreSQL locale
- Queue: Hatchet Lite
2. Stage
- Branch:
stage - URL:
https://langgraphjs-stage.tidiko.ai - Dashboard Hatchet:
https://hatchet.stage.tidiko.ai - Database: PostgreSQL su VPS
3. Produzione (Production)
- Branch:
main - URL:
https://langgraphjs.tidiko.ai - Dashboard Hatchet:
https://hatchet.prod.tidiko.ai - Database: PostgreSQL su VPS
Flusso di Deploy
Workflow Completo
1. Deploy Ambiente di Sviluppo
Setup Iniziale
# Clona il repository
git clone https://github.com/netingweb/tidiko-node-agent.git
cd tidiko-node-agent
# Copia le variabili d'ambiente
cp .env.example .env
# Configura le variabili per lo sviluppo
# Modifica .env con i valori appropriati
Avvio con Docker Compose
A partire dalla versione corrente, usiamo un singolo file docker-compose.yml con Profiles per gestire tutti gli ambienti.
- Windows PowerShell
- Linux/Mac
- Docker Compose Diretto
# Copia configurazione ambiente
Copy-Item env.dev.example .env
# Modifica .env con i tuoi valori
notepad .env
# Avvia ambiente di sviluppo
.\deploy.ps1 up dev
# Verifica stato
.\deploy.ps1 ps dev
# Visualizza logs
.\deploy.ps1 logs dev -Follow
# Copia configurazione ambiente
cp env.dev.example .env
# Modifica .env con i tuoi valori
nano .env
# Avvia ambiente di sviluppo
./deploy.sh up dev
# Verifica stato
./deploy.sh ps dev
# Visualizza logs
./deploy.sh logs dev -f
# Copia configurazione
cp env.dev.example .env
# Avvia con profile dev
docker compose --profile dev up -d
# Verifica stato
docker compose --profile dev ps
# Logs
docker compose --profile dev logs -f
Servizi Disponibili
- App LangGraph:
http://localhost:3000 - Worker:
http://localhost:3300 - PostgreSQL:
localhost:5432 - Hatchet Dashboard:
http://localhost:8888 - MinIO Console:
http://localhost:9001
2. Deploy Stage
Prerequisiti
- Pull Request su branch stage:
- GitHub Desktop
- Terminale
- Fare il commit dei cambiamenti da VS Code, Cursor o GitHub Desktop con un messaggio chiaro e descrittivo
- Fare il push dei cambiamenti da VS Code, Cursor o GitHub Desktop
- Apri GitHub Desktop
- Clicca sul bottone "Preview Pull Request". Se non si vede la scritta "Preview Pull Request", clicca sulla freccia accanto alla scritta "Create Pull Request" e poi su "Preview Pull Request".

- Selziona la branch
stageoorigin/stagee clicca su "Create Pull Request", si aprirà la pagina del Pull Request su GitHub
- Clicca sul bottone "Create Pull Request"
- Clicca sul bottone "Merge pull Request"
- Clicca sul bottone "Confirm merge"
- Clicca sul bottone "Delete branch" (se non è più necessaria il branch di feature)
Passa alla branch stage
git checkout stage
Aggiorna il branch stage
git pull origin stage
Unisci il branch di feature (es. feature/add-new-feature) al branch stage
git merge [feature-branch]
Push del branch stage
git push origin stage
Ritorna al branch di feature
git checkout [feature-branch]
-
Accesso SSH al server VPS:
informazioniScarica la chiave da 1Password: neting-contabo-private-key-2
ssh -i [percorso-chiave] root@161.97.184.132
Deploy su Stage
Connettiti al server
ssh -i [percorso-chiave] root@161.97.184.132
Naviga alla directory stage
cd /home/tidiko-node-agent-stage
Aggiorna il codice
git pull origin stage
Deploy con rebuild
docker compose down
docker compose up -d --build --force-recreate
Verifica lo stato. Tutti i container devono avere lo stato "up" e healthy. Da controllare che il tempo nello status "up" incrementi, e con si siano riavvi, se ci sono dei riavvi è perché il container non si è avviato correttamente. Tutti i container dovrebbero avere lo stato healthy entro 40 secondi. Se non è così, controlla i logs per vedere il motivo.
docker compose ps
docker compose logs -f
Test Post-Deploy
- Verifica URL:
https://langgraphjs-stage.tidiko.ai/health - Test funzionalità principali:
- Upload documenti
- Chat AI
- Generazione embedding
- Monitoraggio logs: dashboard Yacht (Dashboard Yacht, credenziali in 1Password)
3. Deploy Produzione
Prerequisiti
- Test completi su stage
- Pull Request da stage a main:
- GitHub Desktop
- Terminale
- Apri GitHub Desktop
- Passa alla branch stage
- Clicca su "Pull Origin" o "Fetch Origin"
- Clicca sul bottone "Preview Pull Request". Se non si vede la scritta "Preview Pull Request", clicca sulla freccia accanto alla scritta "Create Pull Request" e poi su "Preview Pull Request".

- Selziona la branch
mainoorigin/main(se non è già selezionata) e clicca su "Create Pull Request", si aprirà la pagina del Pull Request su GitHub
- Clicca sul bottone "Create Pull Request"
- Clicca sul bottone "Merge pull Request"
- Clicca sul bottone "Confirm merge"
Il branch branch stage NON deve essere eliminato.
Passa alla branch main
git checkout main
Aggiorna il branch stage
git pull origin main
Unisci il branch di feature (es. feature/add-new-feature) al branch main
git merge [feature-branch]
Push del branch main
git push origin stage
Ritorna al branch di feature (es. feature/add-new-feature)
git checkout [feature-branch]
Deploy su Produzione
Connettiti al server
ssh -i [percorso-chiave] root@161.97.184.132
Naviga alla directory produzione
cd /home/tidiko-node-agent-prod
Aggiorna il codice
git pull origin main
Deploy con rebuild
# Ferma ambiente produzione
docker compose --profile prod down
# Avvia con rebuild (forza ricreazione)
docker compose --profile prod up -d --build --force-recreate
# OPPURE usa script helper
# ./deploy.sh down prod
# ./deploy.sh build prod
# ./deploy.sh up prod
Verifica lo stato. Tutti i container devono avere lo stato "up" e healthy. Da controllare che il tempo nello status "up" incrementi, e con si siano riavvi, se ci sono dei riavvi è perché il container non si è avviato correttamente. Tutti i container dovrebbero avere lo stato healthy entro 40 secondi. Se non è così, controlla i logs per vedere il motivo.
# Con profile prod
docker compose --profile prod ps
docker compose --profile prod logs -f
# OPPURE con script helper
# ./deploy.sh ps prod
# ./deploy.sh logs prod -f
Test Post-Deploy
- Verifica URL:
https://langgraphjs-prod.tidiko.ai/health - Test funzionalità critiche:
- Upload documenti
- Chat AI
- Generazione embedding
- Salvataggio chat
- Monitoraggio completo: Tutti i sistemi
Configurazione Docker
Sistema Unificato con Profiles
Il sistema ora utilizza un singolo file docker-compose.yml con Docker Compose Profiles per gestire tutti gli ambienti (dev, staging, prod). Questo elimina la duplicazione e semplifica la gestione.
File di Configurazione
File Unificato
- Docker Compose:
docker-compose.yml(con profiles:dev,staging,prod) - Script Helper:
deploy.sh(Linux/Mac),deploy.ps1(Windows) - Env Templates:
env.dev.example,env.staging.example,env.prod.example
Dockerfile per Ambiente
Sviluppo:
- Dockerfile App:
Dockerfile.dev - Dockerfile Worker:
Dockerfile.worker.dev
Staging/Produzione:
- Dockerfile App:
Dockerfile - Dockerfile Worker:
Dockerfile.worker
Variabili d'Ambiente
Ogni ambiente ha il suo file template: env.dev.example, env.staging.example, env.prod.example.
Copia il template appropriato in .env e modifica i valori secondo le tue necessità.
Sviluppo
# Variabili principali
NODE_ENV=development
APP_PORT=3000
WORKER_PORT=3300
DB_PORT=5432
HATCHET_DB_PORT=5434
# Database
DB_URI=postgresql://postgres:postgres@postgres-dev:5432/langgraphjs_dev
# MinIO (Object Storage)
MINIO_ENDPOINT=http://minio:9000
MINIO_ACCESS_KEY=minioadmin
MINIO_SECRET_KEY=minioadmin
MINIO_BUCKET_NAME=crawler-results
# Hatchet Lite (per dev)
HATCHET_HOST=host.docker.internal:7077
Staging
# Variabili principali
NODE_ENV=production
SENTRY_ENVIRONMENT=staging
SUBDOMAIN=staging-langgraphjs
# Porte diverse da prod
APP_PORT=3001
DB_PORT=5436
HATCHET_DB_PORT=5437
# Database
DB_URI=postgresql://${DB_USER}:${DB_PASSWORD}@postgres-staging:5432/${DB_NAME}
# MinIO (Object Storage)
MINIO_ENDPOINT=http://minio:9000
MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY}
MINIO_SECRET_KEY=${MINIO_SECRET_KEY}
MINIO_BUCKET_NAME=${MINIO_BUCKET_NAME}
Produzione
# Variabili principali
NODE_ENV=production
SENTRY_ENVIRONMENT=production
SUBDOMAIN=langgraphjs
# Porte
APP_PORT=3000
WORKER_PORT=3300
DB_PORT=5433
# Database
DB_URI=postgresql://${DB_USER}:${DB_PASSWORD}@postgres-prod:5432/${DB_NAME}
# MinIO (Object Storage)
MINIO_ENDPOINT=http://minio:9000
MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY}
MINIO_SECRET_KEY=${MINIO_SECRET_KEY}
MINIO_BUCKET_NAME=${MINIO_BUCKET_NAME}
Monitoraggio
1. Monitoraggio Logs
Dashboard Yacht
- URL:
http://161.97.184.132:8000/#/apps - Funzionalità:
- Lista container in esecuzione
- Visualizzazione logs in tempo reale
- Stato dei servizi
Troubleshooting Logs
Se i logs non si caricano:
- Copia il link della pagina
- Chiudi la scheda
- Apri nuova scheda con il link copiato
Logs via SSH
- Connettiti al server
ssh -i [percorso-chiave] root@161.97.184.132
- Visualizza logs specifici
- Staging
- Production
# Con profile staging
docker compose --profile staging logs -f app-staging
docker compose --profile staging logs -f queue-worker-staging
# Con script helper
./deploy.sh logs staging -f
# Con profile prod
docker compose --profile prod logs -f app-prod
docker compose --profile prod logs -f queue-worker-prod
# Con script helper
./deploy.sh logs prod -f
2. Monitoraggio Task (Hatchet)
Dashboard Hatchet
Stage:
- URL:
https://hatchet.stage.tidiko.ai - Funzionalità:
- Stato esecuzione task
- Logs dettagliati
- Tempi di esecuzione
- Annullamento task (sconsigliato)
Produzione:
- URL:
https://hatchet.prod.tidiko.ai - Funzionalità: Stesse di stage
Metriche Disponibili
- Task completate/fallite
- Tempo medio di esecuzione
- Queue size
- Worker status
- Error rate
3. Monitoraggio Agente (LangSmith)
Dashboard LangSmith
Progetti per Ambiente
Sviluppo:
- Progetto:
tidiko-agent - Monitoraggio: Interazioni agente, costi, tool usage
Stage:
- Progetto:
tidiko-agent-stage - Monitoraggio: Test stage
Produzione:
- Progetto:
tidiko-agent-prod - Monitoraggio: Performance produzione
Metriche Disponibili
- Costo per messaggio
- Utilizzo tool
- Tempo di risposta
- Qualità risposte
- Error rate
Troubleshooting
Problemi Comuni
1. Container non si avvia
# Verifica logs (es. staging)
docker compose --profile staging logs app-staging
# Riavvia servizio
docker compose --profile staging restart app-staging
# Rebuild completo
docker compose --profile staging down
docker compose --profile staging build
docker compose --profile staging up -d
# OPPURE con script helper
./deploy.sh logs staging
./deploy.sh restart staging
./deploy.sh down staging
./deploy.sh build staging
./deploy.sh up staging
2. Database connection error
# Verifica stato PostgreSQL (es. prod)
docker compose --profile prod ps postgres-prod
# Riavvia database
docker compose --profile prod restart postgres-prod
# Verifica connessione
docker compose --profile prod exec postgres-prod psql -U [user] -d [database]
# Con script helper
./deploy.sh ps prod
./deploy.sh restart prod
3. Worker non processa task
# Verifica Hatchet (es. prod)
docker compose --profile prod ps hatchet-engine-prod
# Riavvia worker
docker compose --profile prod restart queue-worker-prod
# Verifica queue
# Accedi a dashboard Hatchet
# Con script helper
./deploy.sh ps prod
./deploy.sh restart prod
4. Memory issues
# Verifica utilizzo memoria
docker stats
# Pulisci container non utilizzati
docker system prune -f
# Riavvia servizi (es. prod)
docker compose --profile prod restart
# Con script helper
./deploy.sh restart prod
Comandi Utili
Con Script Helper (Consigliato)
- Windows PowerShell
- Linux/Mac
# Stato generale
.\deploy.ps1 ps prod
# Logs in tempo reale
.\deploy.ps1 logs prod -Follow
# Riavvia
.\deploy.ps1 restart prod
# Ferma
.\deploy.ps1 down prod
# Rebuilda
.\deploy.ps1 build prod
# Avvia
.\deploy.ps1 up prod
# Pulizia completa
.\deploy.ps1 clean prod
# 🚀 DEPLOY COMPLETO (Build → Down → Up → Health Check)
.\deploy.ps1 deploy prod
# ⚠️ PRIMO UTILIZZO: Rendi eseguibile lo script
chmod +x deploy.sh
# Stato generale
./deploy.sh ps prod
# Logs in tempo reale
./deploy.sh logs prod -f
# Riavvia
./deploy.sh restart prod
# Ferma
./deploy.sh down prod
# Rebuilda
./deploy.sh build prod
# Avvia
./deploy.sh up prod
# Pulizia completa
./deploy.sh clean prod
# 🚀 DEPLOY COMPLETO (Build → Down → Up → Health Check)
./deploy.sh deploy prod
Docker Compose Diretto
# Stato generale
docker compose --profile prod ps
# Logs in tempo reale
docker compose --profile prod logs -f
# Riavvia servizio specifico
docker compose --profile prod restart app-prod
# Rebuild completo
docker compose --profile prod down
docker compose --profile prod build
docker compose --profile prod up -d
# Lista servizi disponibili per profile
docker compose --profile prod config --services
# Lista tutti i profiles
docker compose config --profiles
# Pulisci sistema
docker system prune -f
# Verifica spazio disco
df -h
# Verifica memoria
free -h
Sicurezza
Accesso SSH
- Chiave privata: Scaricare da 1Password (
neting-contabo-private-key-2) - Server:
161.97.184.132 - User:
root
Variabili Sensibili
- Tutte le chiavi API sono gestite tramite variabili d'ambiente
- Non committare mai file
.envcon dati sensibili - Utilizzare
.env.examplecome template
Backup
- Backup automatico su VPS
- Configurazioni: Versionate su Git
Checklist Deploy
Pre-Deploy
- Test completi su ambiente di sviluppo
- Pull Request creata su branch corretto
- Code review completata
- Variabili d'ambiente verificate
Deploy
- Accesso SSH al server
- Backup automatico su VPS
- Deploy eseguito
- Verifica stato container
- Test funzionalità principali
Post-Deploy
- Monitoraggio logs
- Test completi
- Verifica metriche
- Documentazione aggiornata
- Team notificato
Contatti e Supporto
- Server VPS:
161.97.184.132 - SSH Key: 1Password (
neting-contabo-private-key-2) - LangSmith: Dashboard
- Hatchet Stage:
https://hatchet.stage.tidiko.ai - Hatchet Prod:
https://hatchet.prod.tidiko.ai