Migrazione di un forum Flarum da hosting condiviso (Altervista) a Oracle Cloud Free con dominio personalizzato
Dopo varie prove su hosting condiviso, ho deciso di spostare il mio forum Flarum su un vero server cloud, usando Oracle Cloud Free.
L’obiettivo era semplice: avere più controllo, poter usare SSH, gestire Composer direttamente dal server, installare estensioni senza limitazioni e collegare un dominio personale.
Questa guida racconta passo passo come effettuare la migrazione di un forum Flarum da un hosting condiviso a Oracle Cloud, compresa la configurazione del server, il trasferimento del database, l’attivazione del dominio e del certificato HTTPS.
1. Perché lasciare l’hosting condiviso
Un hosting condiviso può andare bene per iniziare, ma nel mio caso aveva alcuni limiti evidenti:
- niente vera libertà lato server
- difficoltà nell’uso di Composer
- gestione più rigida delle estensioni
- impossibilità di lavorare comodamente via SSH come su un VPS
Passando a Oracle Cloud, invece, ho ottenuto:
- un server Linux vero e proprio
- accesso SSH completo
- possibilità di installare Nginx, PHP, MariaDB e Composer
- controllo diretto di Flarum
- collegamento a un dominio personale
- HTTPS completo con Let’s Encrypt
2. Scelta di Oracle Cloud Free
Ho usato il piano free di Oracle Cloud.
L’idea era avere un piccolo server sempre acceso, sufficiente per ospitare forum e sito senza costi iniziali.
In Oracle ho creato:
- una VCN
- una subnet pubblica
- una macchina virtuale Ubuntu
- un IP pubblico
- regole di rete per consentire traffico web e SSH
3. Creazione della rete Oracle
Per prima cosa ho creato la rete virtuale.
Parametri usati
- nome VCN:
nome-vcn
- compartimento: root
- blocco CIDR IPv4:
10.0.0.0/16
- IPv6: disattivato
Ho usato il wizard standard con connettività Internet, lasciando creare automaticamente:
- subnet pubblica
- subnet privata
- route table
- internet gateway
- security list di default
Questo passaggio è fondamentale perché il server deve essere raggiungibile da Internet.
4. Creazione della macchina virtuale
Poi ho creato l’istanza.
All’inizio avevo provato con una shape Arm più generosa, ma Oracle mi dava errore di capacità esaurita. Alla fine ho scelto una shape che si è creata senza problemi.
Configurazione finale
- sistema operativo:
Canonical Ubuntu 24.04
- shape:
VM.Standard.E2.1.Micro
- VNIC primaria con IP privato automatico
- IP pubblico attivo
- chiave SSH generata automaticamente da Oracle
Oracle scarica un file .key, che è la chiave privata per entrare in SSH.
5. Primo accesso SSH al server
Dal Mac ho spostato la chiave in ~/.ssh e le ho dato i permessi corretti.
mkdir -p ~/.ssh
mv ~/Downloads/*.key ~/.ssh/server.key
chmod 600 ~/.ssh/server.key
Poi mi sono collegato in SSH:
ssh -i ~/.ssh/server.key ubuntu@IP_DEL_SERVER
Una volta entrato, ho potuto gestire il server come un normale ambiente Linux.
6. Installazione dello stack server
Ho aggiornato il sistema e installato i pacchetti necessari:
sudo apt update
sudo apt upgrade -y
sudo apt install -y nginx mariadb-server php php-cli php-curl php-dom php-exif php-fileinfo php-gd php-iconv php-intl php-mbstring php-mysql php-opcache php-pdo php-tokenizer php-xml php-zip unzip curl git
Poi ho installato Composer:
cd ~
curl -sS https://getcomposer.org/installer -o composer-setup.php
php composer-setup.php
sudo mv composer.phar /usr/local/bin/composer
composer --version
Successivamente ho installato anche PHP-FPM, che inizialmente mancava:
sudo apt install -y php8.3-fpm
sudo systemctl enable php8.3-fpm
sudo systemctl start php8.3-fpm
7. Creazione del database su Oracle
Anche se il forum aveva già un database sul vecchio hosting, su Oracle serviva comunque crearne uno nuovo, vuoto, dentro il quale importare il dump.
Esempio
- database:
nome_database
- utente:
utente_database
Da MariaDB:
CREATE DATABASE nome_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'utente_database'@'localhost' IDENTIFIED BY 'PASSWORD_FORTE';
GRANT ALL PRIVILEGES ON nome_database.* TO 'utente_database'@'localhost';
FLUSH PRIVILEGES;
8. Esportazione del database dal vecchio hosting
Dal vecchio hosting ho scaricato il dump SQL del forum, per esempio:
Poi l’ho caricato sul server Oracle tramite scp:
scp -i ~/.ssh/server.key ~/Downloads/forum.sql ubuntu@IP_DEL_SERVER:/home/ubuntu/
9. Problemi durante l’import del database
L’import non è andato subito liscio.
Primo problema: collation MySQL 8 non supportata da MariaDB
Il dump conteneva la collation:
MariaDB non la accettava.
Ho quindi creato una copia corretta del dump:
cp /home/ubuntu/forum.sql /home/ubuntu/forum_fix.sql
sed -i 's/utf8mb4_0900_ai_ci/utf8mb4_unicode_ci/g' /home/ubuntu/forum_fix.sql
sed -i '/^CREATE DATABASE IF NOT EXISTS/d' /home/ubuntu/forum_fix.sql
sed -i '/^USE `/d' /home/ubuntu/forum_fix.sql
Secondo problema: foreign key
L’import si bloccava sulle chiavi esterne.
Per risolvere, ho ricreato il database da zero e ho importato con i controlli foreign key disattivati temporaneamente:
mysql -u utente_database -p --init-command="SET SESSION foreign_key_checks=0; SET SESSION unique_checks=0;" nome_database < /home/ubuntu/forum_fix.sql
Dopo questo, il database è stato importato correttamente.
10. Trasferimento dei file del forum
Oltre al database, era necessario portare su Oracle anche i file reali del forum già funzionante sul vecchio hosting:
config.php
composer.json
composer.lock
vendor
storage
assets
- file principali di Flarum
Ho compresso la cartella locale del forum e l’ho caricata sul server. Poi ho sostituito la cartella iniziale su Oracle con quella reale del forum migrato.
11. Configurazione di Flarum
Il file config.php è stato aggiornato per usare il nuovo database Oracle.
Parametri principali
- host:
localhost
- database:
nome_database
- username:
utente_database
- prefisso tabelle:
prefisso_
- URL: prima IP, poi dominio definitivo
Esempio:
'url' => 'https://miodominio.com',
Dopo ogni modifica importante ho svuotato la cache di Flarum:
cd /var/www/forum
sudo -u www-data php flarum cache:clear
12. Configurazione di Nginx
All’inizio avevo configurato Nginx puntando a /public, ma il mio forum importato dal vecchio hosting non usava quella struttura. I file veri stavano direttamente nella root del progetto.
La configurazione corretta è stata quindi questa:
server {
listen 80;
listen [::]:80;
server_name miodominio.com www.miodominio.com;
root /var/www/forum;
index index.php index.html;
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;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff2?)$ {
try_files $uri /index.php?$query_string;
expires 7d;
access_log off;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
Poi:
sudo nginx -t
sudo systemctl reload nginx
13. Il problema vero: il firewall locale del server
Anche quando Oracle sembrava configurato correttamente, il sito non si apriva ancora dall’esterno.
Il motivo non era Oracle, ma iptables sul server Ubuntu. Le regole consentivano solo SSH e bloccavano tutto il resto.
Per aprire HTTP e HTTPS:
sudo iptables -I INPUT 5 -p tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT 6 -p tcp --dport 443 -j ACCEPT
Dopo questa modifica, il forum ha iniziato a rispondere dall’esterno.
Per rendere permanenti le regole:
sudo apt install -y iptables-persistent
sudo netfilter-persistent save
14. Acquisto del dominio
Una volta che il forum era online tramite IP, ho acquistato un dominio personalizzato presso un registrar esterno.
Nella sezione DNS ho eliminato i record di parcheggio e redirect di default e ho impostato:
- record A per
@ → IP_DEL_SERVER
- record A per
www → IP_DEL_SERVER
Dopo la propagazione, il dominio ha iniziato a puntare al server Oracle.
15. Attivazione di HTTPS
Con il dominio attivo, ho installato il certificato SSL tramite Certbot.
Comando usato:
sudo certbot --nginx -d miodominio.com -d www.miodominio.com
Certbot ha installato correttamente il certificato e aggiornato Nginx.
Infine ho aggiornato config.php con l’URL definitivo:
'url' => 'https://miodominio.com',
e svuotato di nuovo la cache.
16. Installazione dell’Extension Manager
Ora che il forum gira su Oracle con SSH e Composer, è diventato finalmente possibile installare il gestore estensioni di Flarum.
Durante questo passaggio è emerso un piccolo errore nel composer.json: c’era una virgola finale di troppo, che rendeva il file JSON non valido.
Rimossa quella virgola, è stato possibile installare l’Extension Manager con una versione compatibile con Flarum 1.8.
17. Gestione del banner cookie
Il vecchio banner cookie proveniente dal vecchio hosting e da uno script esterno causava problemi, perché nel codice era rimasto il vecchio dominio come localConsentDomain.
Alla fine ho preferito abbandonare quella soluzione e passare a un sistema più pulito, integrato direttamente in Flarum.
18. Risultato finale
Alla fine della migrazione, il forum è stato portato su Oracle Cloud con:
- server Linux reale
- accesso SSH
- Nginx
- PHP-FPM
- MariaDB
- Composer
- database migrato
- dominio personalizzato
- HTTPS attivo
- possibilità di gestire estensioni direttamente dal server
In pratica, il forum è passato da un ambiente condiviso e limitato a una configurazione molto più libera e professionale.
19. Considerazioni finali
La parte più delicata della migrazione non è stata tanto Flarum in sé, quanto:
- adattare il dump SQL a MariaDB
- capire che il problema di accesso esterno era il firewall locale
- correggere la configurazione Nginx in base alla struttura reale dei file
- sistemare DNS e HTTPS
Una volta superati questi punti, il resto è diventato molto più lineare.
Il vantaggio più grande, però, è stato questo:
adesso il forum è su un server che controllo davvero, e posso lavorarci direttamente in SSH senza i limiti di un hosting condiviso.