VPNSmith
cloud-privacyINFO

Migrazione da AWS a Contabo: guida all'ottimizzazione dei costi 2026

Migrazione passo-passo di uno stack EC2 + RDS + S3 a Contabo VPS + Postgres autogestito + MinIO. Risparmi reali, GDPR, finestre di downtime 2026.

Di Eric Gerard · Fondateur · VPNSmith — Spécialiste self-host VPN & VPS GDPR11 min letturaPhoto: Luke Chesser — Unsplash

La tua bolletta AWS di fine mese ti fa digrignare i denti. €187/mese per uno stack Node.js + Postgres 50 GB + 200 GB di oggetti statici, di cui il 60% va a RDS e NAT Gateway. Sai che c'è qualcosa di più economico, ma esiti ad abbandonare il comfort di EC2 e la magia di S3. Questa guida è il resoconto onesto di una migrazione che abbiamo eseguito internamente nell'aprile 2026: da AWS a un singolo VPS Contabo a €9,99/mese, risparmio del 78% su 12 mesi, senza perdita significativa di funzionalità per il nostro caso d'uso.

Perché lasciare AWS nel 2026

Tre motivi cumulativi convergono nel 2026 e rendono la conversazione sulla migrazione più matura che mai.

Il primo motivo è ancora il costo grezzo. AWS scala brutalmente con il traffico in uscita fatturato a $0,09/GB oltre i 100 GB al mese, i NAT Gateway fatturati a $45/mese solo per esistere prima di contare il traffico, gli snapshot RDS che si accumulano silenziosamente a $0,095/GB-mese senza allarme predefinito, e i servizi gestiti come Lambda la cui fatturazione per invocazione si traduce in bollette mensili imprevedibili. Un progetto che inizia a $30/mese finisce regolarmente a $200-400/mese in 18 mesi senza alcun cambiamento visibile delle funzionalità. Sul nostro progetto interno descritto in questa guida, la bolletta AWS aveva raggiunto €187/mese per uno stack che avrebbe potuto funzionare su un singolo VPS da €9,99/mese — 19 volte più costoso per un servizio identico erogato.

Il secondo motivo è la sovranità legale. Anche in eu-central-1 (Francoforte), AWS rimane un'entità statunitense vincolata dal CLOUD Act, il che significa che un giudice federale statunitense può richiedere l'accesso ai dati memorizzati in Europa senza che l'utente finale o l'azienda cliente ne siano informati. Per i dati dei clienti GDPR, questo è un rischio legale formalizzato dalle raccomandazioni EDPB del 2020 post-Schrems II. Le prime controversie civili basate su questo rischio hanno iniziato a emergere nel 2024-2025 con il caso Mediawan / Microsoft Azure che è costato diversi milioni in spese legali e reindirizzamento d'emergenza dell'infrastruttura.

Il terzo motivo è il lock-in tecnico. IAM, KMS, VPC, Application Load Balancer, Lambda — ogni servizio AWS ti lega un po' di più alla piattaforma. Dopo due anni, "solo spostarsi" richiede almeno 3 settimane di sforzo cumulativo. Più aspetti a lasciare, più costosa diventa la migrazione da progettare e quindi da fare, il che crea un ciclo di procrastinazione in cui continui a pagare l'affitto ad AWS senza mai prendere la decisione. La soglia psicologica di migrazione è generalmente intorno al mese 6 o 12 di utilizzo attivo, dopo di che il costo dell'inerzia organizzativa diventa proibitivo.

Oltre a questi tre fattori strutturanti, tre trigger operativi spingono un'organizzazione a una migrazione concreta: un cambio di CIO o CTO che porta una nuova prospettiva sulla bolletta del cloud; un audit GDPR o di conformità che indica l'uso di AWS US come non conforme alla politica di sovranità interna; o un grave incidente tecnico AWS (interruzione us-east-1 propagata a livello mondiale come nel dicembre 2024) che ti ricorda che la dipendenza da un singolo fornitore ha un costo opportunità reale.

Contabo non è magico: è un provider VPS tedesco di fascia bassa che ti consegna una macchina Ubuntu e ti lascia fare il resto. Ma per l'80% dei carichi di lavoro SMB e SaaS individuali, è più che sufficiente — e 5 a 10 volte più economico.

Quando la migrazione conviene (e quando no)

Sii onesto con te stesso. AWS → Contabo ha senso se:

  • Hai uno o due servizi da ospitare (API + DB + oggetti), non un'architettura a microservizi con 30 container.
  • Il tuo traffico è prevedibile (nessun picco 100× rispetto alla base). Contabo non ha auto-scaling.
  • Accetti di diventare l'amministratore: apt, systemctl, ufw, backup manuali.
  • I tuoi dati non tollerano il CLOUD Act, o la tua bolletta AWS supera i €100/mese.

Al contrario, rimani su AWS se:

  • Usi intensamente Lambda, Cognito, SageMaker, SQS gestito. Costo di migrazione > costo AWS.
  • Hai un SLA cliente che richiede il 99,99% (Contabo è 99,9%, cioè ~8h di downtime/anno).
  • Gestisci decine di TB e il tuo traffico in uscita supera la quota di Contabo (32 TB/mese).

Il nostro caso a VPNSmith: un singolo backend Node.js + Postgres + oggetti statici. Ogni casella spuntata. Decisione presa in un'ora.

Audit del costo AWS attuale (metodo Cost Explorer)

Prima di migrare, misura. Senza una base di riferimento, non c'è ROI.

  1. Vai su AWS Cost Explorer → ReportsCost & Usage Reports.
  2. Filtra gli ultimi 3 mesi, granularità mensile, raggruppato per Service.
  3. Esporta come CSV. Apri in un foglio di calcolo. Tipicamente ottieni:
Servizio AWSCosto mensile medio
EC2 (1× t3.medium)€32
RDS (db.t3.small Postgres)€38
S3 (200 GB + richieste)€12
Trasferimento dati in uscita€24
NAT Gateway€41
CloudFront€18
Route 53 + vari€6
Totale€171 / mese

Annualizzato: €2,052. Nota il dettaglio: su questo profilo, NAT Gateway + Trasferimento dati = €65/mese, ovvero il 38% della bolletta solo per spingere byte dentro e fuori. Questo è il classico punto cieco.

Configurare il VPS Contabo di destinazione

Per questo stack, scegliamo un Cloud VPS 10 da Contabo: 6 vCPU, 16 GB RAM, 400 GB NVMe, 1 Gbps, 32 TB di traffico/mese. €9,99/mese con un impegno di 24 mesi.

Provisioning:

# Una volta consegnato il VPS (email Contabo con IP + password root)
ssh root@YOUR_IP

# Indurimento minimo
adduser ericg
usermod -aG sudo ericg
mkdir -p /home/ericg/.ssh
nano /home/ericg/.ssh/authorized_keys   # incolla la tua chiave SSH
chmod 700 /home/ericg/.ssh && chmod 600 /home/ericg/.ssh/authorized_keys
chown -R ericg:ericg /home/ericg/.ssh

sed -i 's/^PermitRootLogin .*/PermitRootLogin no/' /etc/ssh/sshd_config
sed -i 's/^#PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
systemctl restart ssh

apt update && apt upgrade -y
apt install -y ufw fail2ban
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw --force enable
systemctl enable --now fail2ban

Dettagli completi di indurimento (Lynis, snapshot Contabo, journald) sono nella guida all'autogestione di WireGuard. Le stesse basi si applicano qui.

Migrazione Postgres RDS → Postgres autogestito (pg_dump passo dopo passo)

File di server in un data center
File di server in un data center

Questo è il pezzo più critico. Procedura collaudata:

Passo 1 — Installa Postgres 15 su Contabo

sudo apt install -y postgresql-15 postgresql-contrib-15
sudo systemctl enable --now postgresql

# Crea utente app e DB
sudo -u postgres psql <<EOF
CREATE USER appuser WITH PASSWORD 'PASTE_A_STRONG_PASSWORD';
CREATE DATABASE appdb OWNER appuser;
GRANT ALL PRIVILEGES ON DATABASE appdb TO appuser;
EOF

Abilita SSL e consenti connessioni remote solo dalla tua app (o solo locale se Postgres gira sulla stessa macchina dell'API — consigliato):

sudo nano /etc/postgresql/15/main/postgresql.conf
# ssl = on
# listen_addresses = 'localhost'  (o '*' se l'app vive su un altro VPS)

sudo nano /etc/postgresql/15/main/pg_hba.conf
# Aggiungi: hostssl appdb appuser YOUR_APP_IP/32 scram-sha-256

sudo systemctl restart postgresql

Passo 2 — Dump da RDS

Dal tuo workstation, con accesso RDS:

pg_dump \
  -h your-rds.eu-central-1.rds.amazonaws.com \
  -U masteruser \
  -d appdb \
  -Fc \
  -f appdb.dump

# Formato personalizzato (-Fc) = compresso + parallelizzabile al ripristino

Per un database di 50 GB, aspettati 10-25 min a seconda della classe RDS e della larghezza di banda.

Passo 3 — Trasferimento e ripristino

scp appdb.dump ericg@YOUR_CONTABO_IP:/tmp/
ssh ericg@YOUR_CONTABO_IP

sudo -u postgres pg_restore \
  -d appdb \
  -j 4 \
  --no-owner \
  --role=appuser \
  /tmp/appdb.dump

# Verifica
sudo -u postgres psql -d appdb -c "SELECT count(*) FROM users;"

Verifica l'integrità confrontando count(*) delle tabelle grandi tra RDS e Contabo. Differenza = 0.

Passo 4 — Backup automatici post-migrazione

Sostituisci i backup automatici RDS con un semplice cron:

sudo nano /usr/local/bin/pg-backup.sh
#!/bin/bash
DATE=$(date +%Y%m%d-%H%M)
sudo -u postgres pg_dump -Fc appdb > /var/backups/postgres/appdb-$DATE.dump
find /var/backups/postgres -name "appdb-*.dump" -mtime +14 -delete
# Spingi su MinIO o S3 esterno per off-site
rclone copy /var/backups/postgres/appdb-$DATE.dump remote:backups/postgres/

Cron giornaliero alle 3 AM: 0 3 * * * /usr/local/bin/pg-backup.sh.

Migrazione S3 → MinIO (rclone, compatibilità aws-cli)

MinIO è un archivio di oggetti open-source basato su Go, compatibile al 100% con l'API S3. Installazione diretta:

wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
sudo mv minio /usr/local/bin/

sudo mkdir -p /data/minio
sudo useradd -r minio-user -s /sbin/nologin
sudo chown minio-user:minio-user /data/minio

sudo nano /etc/default/minio
MINIO_VOLUMES="/data/minio"
MINIO_OPTS="--console-address :9001 --address :9000"
MINIO_ROOT_USER=admin
MINIO_ROOT_PASSWORD=PASTE_A_STRONG_32_CHAR_PASSWORD

unità systemd: prendi il .service ufficiale (documentazione MinIO) e systemctl enable --now minio.

Migra gli oggetti da S3 usando rclone:

sudo apt install -y rclone

rclone config
# n) Nuovo remote → nome: aws / s3 / AWS / incolla access_key + secret_key
# n) Nuovo remote → nome: minio / s3 / Altro / endpoint http://localhost:9000 / incolla admin + password

# Bucket-to-bucket
rclone copy aws:my-prod-bucket minio:my-prod-bucket --transfers=8 --progress

Per 200 GB: prevedi 2-5 ore a seconda della larghezza di banda in uscita AWS (che ti costerà ~€18 nel trasferimento finale — è il pedaggio di uscita).

Dal lato applicativo, nessun cambiamento di codice: il tuo aws-sdk-js continua a funzionare, basta puntare all'endpoint MinIO:

const s3 = new S3Client({
  endpoint: 'https://storage.yourdomain.com',
  region: 'us-east-1',           // valore arbitrario richiesto
  credentials: { accessKeyId, secretAccessKey },
  forcePathStyle: true,          // importante per MinIO
});

Cambio DNS senza downtime

Il metodo pulito, pianificato su 10 giorni:

  • D-10: distribuisci l'intero stack su Contabo, esegui test interni tramite override /etc/hosts.
  • D-7: abbassa il TTL dei record A in Route 53 da 3600 → 60 secondi. Lascia propagare 48h.
  • D-3: congelamento delle funzionalità, ultimo pg_dump incrementale, ultimo rclone sync degli oggetti.
  • D-1: cambio durante un periodo di bassa attività (tipicamente 3 AM UTC per un pubblico UE). Cambia il record A: vecchio IP AWS → nuovo IP Contabo. Propagazione max 60s.
  • D+0 → D+2: monitoraggio aggressivo (latenza, errori 5xx, metriche DB). Mantieni AWS in esecuzione "per sicurezza".
  • D+7: pulizia AWS (termina EC2, elimina RDS dopo l'ultimo snapshot esportato, elimina il bucket S3 dopo il backup off-site).

Nessun downtime percepibile dall'utente se Postgres è sincronizzato (un congelamento in sola lettura di 5 minuti è sufficiente per spedire il delta finale).

Vuoi un VPS Contabo per avviare la tua migrazione? Contabo Cloud VPS 10, contratto di 24 mesi — €9,99/mese

Stima del ROI (tabella dei costi prima/dopo su 12 mesi)

Un confronto rappresentativo prima/dopo basato sui prezzi pubblicati da ciascun provider:

Voce di costoAWS (prima)Contabo (dopo)
Calcolo (EC2 t3.medium / VPS Cloud 10)€32€9,99
Database (RDS / Postgres autogestito)€38€0 (incluso)
Archiviazione oggetti (S3 200 GB / MinIO)€12€0 (incluso)
Trasferimento dati in uscita€24€0 (32 TB/mese inclusi)
NAT Gateway€41€0 (non necessario)
CDN CloudFront€18€12 (BunnyCDN esterno)
DNS Route 53€6€0,40 (Cloudflare gratuito + 1 dominio)
Backup off-site (Wasabi 50 GB)€0€3
Monitoraggio (UptimeRobot pro)€0€4
Totale mensile€171€29,39
Costo annuale€2,052€352,68

Risparmio: €1,699,32/anno, ovvero 83% su questo profilo rappresentativo. La cifra esatta dipende dal tuo stack, ma per un carico di lavoro piccolo-medio comparabile, i risparmi nell'intervallo 75-85% sono tipici. Il ritorno è rapido: nessun costo di migrazione significativo (circa un giorno di lavoro).

Cosa perdi rispetto ad AWS (servizi gestiti)

Nessun marketing, chiariamo le perdite:

  • RDS Multi-AZ auto-failover: su AWS, se il primario muore, il secondario subentra in 60-120s. Autogestito su Contabo, avresti bisogno di un secondo VPS + replica in streaming + Patroni. Fattibile ma aggiunge tempo operativo.
  • 11 nove di durabilità di S3: Amazon garantisce il 99,999999999% di durabilità per oggetto (replica interna a 3-AZ). MinIO su un singolo disco = la durabilità del tuo disco NVMe. Soluzione: backup regolari su Wasabi o Backblaze B2 (€2-6/mese per 200 GB off-site).
  • IAM granulare: sostituito da utenti Linux + sudoers + politiche MinIO. Meno granulare, più semplice da gestire.
  • CloudWatch unificato: sostituisci con Prometheus + Grafana, o Netdata (installazione di 15 min), o un SaaS esterno (Better Stack, Sentry).
  • Supporto enterprise 24/7: Contabo offre supporto via email, non il livello enterprise 24/7 venduto da AWS. Per operazioni critiche, pianifica un runbook + un secondo amministratore di turno.

Prevedi 3 a 5 ore di operazioni al mese in stato stabile: aggiornamenti Ubuntu, controlli di backup, avvisi di monitoraggio. Questo è il vero costo nascosto — non insormontabile, ma reale.

Leggi successivamente

Articolo pubblicato il 2026-06-02. Stima del ROI basata sui prezzi pubblicati da AWS e Contabo. Divulgazione affiliata: se scegli un VPS Contabo tramite i link in questo articolo, guadagniamo una commissione senza costi aggiuntivi per te. Le nostre raccomandazioni si basano su specifiche e prezzi pubblicati.