🚀 Migrazione completa da Oracle Cloud a VPS (IONOS nel mio caso)
⚠️ Disclaimer
Questa guida nasce dalla mia esperienza diretta nella migrazione di Argo Agorà da Oracle Cloud a un VPS (nel mio caso IONOS), ed è stata costruita passo passo durante il processo reale.
Non è una guida “ufficiale” né universale:
👉 ogni server può avere configurazioni diverse
👉 ogni provider può comportarsi in modo leggermente differente
Per questo motivo:
• è sempre consigliato effettuare backup completi prima di qualsiasi operazione
• è opportuno testare ogni passaggio su un ambiente controllato
• eventuali modifiche vanno fatte con consapevolezza
La guida è volutamente generica e adattabile, ma richiede comunque un minimo di familiarità con il terminale e con la gestione di un server Linux.
⸻
Oggi ho eseguito la migrazione di Argo Agorà da Oracle Cloud a un VPS.
Ho scelto IONOS per semplicità e costi prevedibili, ma questa guida è assolutamente flessibile: puoi usarla con qualsiasi VPS (Hetzner, OVH, DigitalOcean, ecc.).
Obiettivo:
👉 spostare tutto (forum, database, file) senza downtime e senza perdere nulla
⸻
🧭 Strategia (fondamentale)
Il punto chiave non è “spostare file”, ma cambiare approccio:
• ❌ NON modificare il server esistente
• ✅ Creare un server nuovo pulito
• ✅ Testarlo completamente
• ✅ Cambiare DNS solo alla fine
⸻
🧱 1. Preparazione del nuovo VPS
Accedi al server:
ssh root@IP_SERVER
apt update && apt full-upgrade -y
reboot
Crea utente:
adduser ubuntu
usermod -aG sudo ubuntu
Configura SSH:
mkdir -p /home/ubuntu/.ssh
nano /home/ubuntu/.ssh/authorized_keys
⚠️ Incolla tutta la chiave pubblica (senza tagli)
⸻
🔐 2. Sicurezza base
sudo apt install ufw fail2ban -y
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
⸻
⚙️ 3. Installazione stack web
sudo apt install nginx mariadb-server -y
sudo apt install php8.3-fpm php8.3-cli php8.3-mysql \
php8.3-xml php8.3-mbstring php8.3-curl php8.3-zip \
php8.3-gd php8.3-intl php8.3-bcmath -y
Email (facoltativa):
sudo apt install mailutils msmtp msmtp-mta -y
👉 Nota: su alcuni provider la porta 25 è bloccata
⸻
🗄️ 4. Backup dal vecchio server
Database:
mysqldump -u DB_USER -p DB_NAME | gzip > forum-db.sql.gz
File:
tar -czf forum-files.tar.gz /var/www/NOME_FORUM
⸻
📦 5. Trasferimento
Dal Mac:
scp -i ~/.ssh/CHIAVE user@IP_VECCHIO:~/forum-db.sql.gz .
scp -i ~/.ssh/CHIAVE user@IP_VECCHIO:~/forum-files.tar.gz .
scp -i ~/.ssh/CHIAVE forum-*.gz user@IP_NUOVO:/home/ubuntu/
⸻
🔄 6. Ripristino
File:
sudo mkdir -p /var/www
cd /
sudo tar -xzf /home/ubuntu/forum-files.tar.gz
Permessi:
sudo chown -R www-data:www-data /var/www/NOME_FORUM
sudo chmod -R 755 /var/www/NOME_FORUM
sudo chmod -R ug+rwX /var/www/NOME_FORUM/storage
Database:
gunzip < forum-db.sql.gz | mysql -u DB_USER -p DB_NAME
⸻
🌐 7. Configurazione Nginx
sudo nano /etc/nginx/sites-available/forum
Config:
server {
listen 80;
server_name dominio.com www.dominio.com;
root /var/www/NOME_FORUM;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
}
Attiva:
sudo ln -s /etc/nginx/sites-available/forum /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
⸻
🧪 8. Test senza downtime
Sul Mac:
sudo nano /etc/hosts
Aggiungi:
IP_NUOVO dominio.com www.dominio.com
👉 Solo tu vedrai il nuovo server
Testa:
• login
• immagini
• estensioni
⸻
🧠 Problemi comuni
Cache Flarum non si pulisce:
sudo chown -R www-data:www-data /var/www/NOME_FORUM
sudo chmod -R ug+rwX /var/www/NOME_FORUM/storage
⸻
Scritta “core.forum…”:
php flarum cache:clear
php flarum assets:publish
⸻
Email non funzionano:
👉 controlla SMTP (porta 25 spesso bloccata)
⸻
🌍 Cambio DNS
Quando tutto è perfetto:
• modifica record A
• punta al nuovo IP
Poi rimuovi modifica da /etc/hosts
⸻
🔒 SSL finale
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d dominio.com -d www.dominio.com
⸻
**💾 Backup (consigliato)
• backup database
• backup file
• copia locale
👉 è l’unica vera sicurezza**
⸻
✅ Conclusione
La migrazione è andata liscia perché:
• ho lavorato su un server nuovo
• ho testato tutto prima
• ho cambiato DNS solo alla fine
👉 risultato:
tutto funzionante al primo colpo, senza downtime
⸻
Se qualcuno vuole replicarla o adattarla, scrivetemi pure.