Deploy e CI/CD

La sezione Deployments ti permette di deployare siti web e applicazioni su diversi target con supporto per repository Git, upload file e deploy manuali.

Sorgenti Supportate

Repository Git

Deploy da repository Git:

  • GitHub - Repository pubblici e privati
  • GitLab - Self-hosted o GitLab.com
  • Bitbucket - Atlassian Bitbucket
  • Qualsiasi Git - URL clone generico

Upload File

Carica direttamente i file:

  • ZIP - Archivio compresso
  • File singoli - Drag & drop

Cartella Locale

Per sviluppo locale:

  • Deploy da VS Code
  • Deploy da Cursor
  • CLI integrata

Deploy Manuale

Configura ora, carica dopo:

  • SSH/SFTP manuale
  • Webhook da CI esterno

Target di Deploy

VPS / Server SSH

Deploy su server Linux via SSH:

ProviderSupporto
IONOSβœ…
Hetznerβœ…
OVHβœ…
DigitalOceanβœ…
Qualsiasi VPSβœ…

Requisiti:

  • Accesso SSH
  • IP pubblico

Docker Locale

Container sul tuo server:

  • Dockerfile auto-generato
  • Build automatico
  • Gestione container

Docker Remoto

Container su server remoti:

  • Docker API via TLS
  • Registri privati
  • Multi-host

RunPod (GPU)

Per workload AI/ML:

  • GPU cloud on-demand
  • Template predefiniti
  • Scaling automatico

Kubernetes

Deploy su cluster K8s:

  • EKS (Amazon)
  • GKE (Google)
  • AKS (Azure)
  • Self-hosted

Vercel

Per progetti Next.js:

  • Deploy serverless
  • Preview automatiche
  • Edge functions

Netlify

Per siti statici e JAMstack:

  • Build automatiche
  • Forms integrati
  • Deploy atomici

Cloudflare Pages

Alternativa a Vercel/Netlify:

  • Edge computing
  • Workers integrati
  • Gratis generoso

Creare un Nuovo Deploy

Passo 1: Scegli il Sito

  1. Vai su Deployments
  2. Clicca + Nuovo Deploy
  3. Seleziona il sito o creane uno nuovo

Passo 2: Configura la Sorgente

Da Git:

  1. Inserisci URL repository
  2. Seleziona branch (main, master, ecc.)
  3. Per repo privati, aggiungi token/SSH key

Da Upload:

  1. Trascina il file ZIP
  2. O clicca per selezionare

Passo 3: Scegli il Target

Seleziona dove deployare:

  1. Scegli il tipo (VPS, Docker, Vercel, ecc.)
  2. Configura le credenziali

Per VPS:

CampoDescrizione
HostIP o hostname
UsernameUtente SSH
Chiave SSHO password
Percorso/var/www/miosito

Passo 4: Configura la Build

Se necessario, imposta comandi di build:

CampoEsempio
Installnpm install
Buildnpm run build
Outputdist/ o build/

Passo 5: Environment Variables

Aggiungi variabili d’ambiente:

NODE_ENV=production
API_URL=https://api.example.com
DATABASE_URL=postgres://...

Passo 6: Deploy

  1. Rivedi la configurazione
  2. Clicca Deploy
  3. Monitora i log in tempo reale

Strategie di Deploy

Direct Deploy

Deploy diretto senza downtime zero:

  • PiΓΉ semplice
  • Adatto per siti piccoli
  • Possibile breve downtime

Blue-Green

Due ambienti identici:

  1. Deploy su ambiente β€œBlue”
  2. Test
  3. Switch del traffico su β€œBlue”
  4. β€œGreen” diventa backup

Vantaggi:

  • Zero downtime
  • Rollback istantaneo

Canary

Deploy graduale:

  1. Deploy su 10% del traffico
  2. Monitora errori
  3. Se OK, incrementa a 50%, poi 100%

Vantaggi:

  • Rischio ridotto
  • Problemi isolati

Monitorare i Deploy

Log in Tempo Reale

Durante il deploy vedi:

  • Comandi eseguiti
  • Output della build
  • Errori eventuali
  • Progresso complessivo

Storico Deploy

Per ogni sito, lo storico mostra:

  • Data/ora deploy
  • Stato (successo, fallito, rollback)
  • Commit/versione
  • Durata
  • Utente che ha deployato

Rollback

Rollback Rapido

Se qualcosa va storto:

  1. Vai allo storico deploy
  2. Trova il deploy funzionante
  3. Clicca Rollback a questa versione
  4. Conferma

Rollback Automatico

Configurabile per:

  • Errore durante la build
  • Health check fallito dopo deploy
  • Errore HTTP 5xx

Auto-Deploy

Webhook Git

Configura deploy automatico su push:

  1. Vai nelle impostazioni del deploy
  2. Copia il Webhook URL
  3. Aggiungi come webhook nel repo Git
  4. Ogni push su branch configurato β†’ deploy automatico

Trigger Branches

Configura branch specifici:

  • main β†’ Produzione
  • staging β†’ Ambiente di test
  • develop β†’ Development

Docker Deploy

Dockerfile Auto-generato

Polipo rileva il tipo di progetto e genera Dockerfile:

React/Vue/Next.js:

FROM node:18-alpine
WORKDIR /app
COPY . .
RUN npm install && npm run build
EXPOSE 3000
CMD ["npm", "start"]

PHP:

FROM php:8.2-apache
COPY . /var/www/html/

Dockerfile Personalizzato

Se preferisci, crea il tuo Dockerfile nel repo.

Docker Compose

Per app multi-container, Polipo supporta docker-compose.yml.

Hardened Images

Polipo offre immagini Docker pre-configurate e sicure:

ImmagineDescrizione
Node.jsAlpine hardened
PHPApache/FPM secure
PythonFlask/Django ready
NginxReverse proxy

Troubleshooting

Build Fallita

Cause comuni:

  • Dipendenze mancanti
  • Versione Node/PHP errata
  • Script di build non configurato
  • Out of memory

Soluzioni:

  • Verifica package.json / composer.json
  • Imposta la versione corretta
  • Configura il comando build
  • Aumenta la memoria

Deploy SSH Fallito

Cause comuni:

  • Credenziali errate
  • Porta SSH bloccata
  • Permessi directory

Soluzioni:

  • Verifica username e password/chiave
  • Controlla firewall
  • chmod 755 /var/www/miosito

Container Non Parte

Cause comuni:

  • Porta giΓ  in uso
  • Variabili mancanti
  • Dockerfile errato

Soluzioni:

  • Cambia porta
  • Aggiungi tutte le env vars
  • Testa Dockerfile in locale

Best Practices

  1. Usa Git - Sempre versiona il codice
  2. Environment Variables - Mai credenziali nel codice
  3. Build separata - Builda prima, deploya l’artefatto
  4. Test prima del deploy - CI/CD completo
  5. Rollback pronto - Sempre un piano B
  6. Monitor dopo deploy - Controlla errori e performance
  7. Deploy frequenti - Piccoli cambiamenti, meno rischi