Come creare un’istanza MongoDB su un VPS
Come creare un’istanza MongoDB su un VPS
L’installazione di MongoDB su un server privato virtuale (VPS) offre un controllo completo sull’infrastruttura del database, ideale per sviluppatori, startup e organizzazioni che danno priorità a prestazioni, flessibilità e sovranità dei dati. Questa guida vi guiderà attraverso i passi avanzati per installare, configurare, proteggere e ottimizzare MongoDB su un VPS.
🛠️ Passo 1: aggiornare il sistema
sudo apt update && sudo apt upgrade -yImpostate il vostro hostname e il fuso orario:
hostnamectl set-hostname mongodb-server
timedatectl set-timezone UTC📦 Passo 2: installare MongoDB
1. Importare la chiave GPG di MongoDB
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo gpg --dearmor -o /usr/share/keyrings/mongodb-server-6.0.gpg2. Aggiungere il repository MongoDB
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.listNota: se si utilizza Ubuntu 22.04, sostituire focal con jammy o con la propria versione.
3. Installare MongoDB
sudo apt updatesudo apt install -y mongodb-org🧪 Passo 3: Avviare e abilitare MongoDB
sudo systemctl start mongodsudo systemctl enable mongodControllare lo stato:
sudo systemctl status mongodpasso 4: proteggere il server MongoDB
Per impostazione predefinita, MongoDB si lega a 127.0.0.1. Se si desidera un accesso remoto:
1. Modificare la configurazione
sudo nano /etc/mongod.confTrovare la riga bindIp sotto net: e modificarla:
bindIp: 127. 0.0.1,0.0.0.02. Abilitare l’autenticazione
Nella sezione sicurezza: aggiungere:
security:
authorization: enabledRiavviare MongoDB:
sudo systemctl restart mongod👤 Passo 5: Creare l’utente amministratore
Accedere alla shell di MongoDB:
mongoshCreare un utente amministratore:
use admin
db.createUser({
user: "admin",
pwd: "StrongPassword123!",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})Uscire con exit, quindi testare il login:
mongosh -u admin -p --authenticationDatabase admin🛡️ Passo 6: proteggere il VPS e MongoDB
1. Firewall UFW
sudo ufw allow OpenSSH
sudo ufw allow 27017/tcp
sudo ufw enablePer l’accesso remoto da un singolo IP:
sudo ufw allow from YOUR.IP.ADDRESS to any port 270172. Fail2Ban (protezione SSH)
sudo apt install fail2ban -ysudo systemctl enable fail2ban⚙️ Passo 7: Ottimizzazione avanzata (opzionale)
1. Set di repliche per l’alta disponibilità
Modificare /etc/mongod.conf:
replication:
replSetName: "rs0"Inizializza:
mongosh
rs.initiate()2. Strategia di backup
Usare mongodump per i backup:
mongodump --out /var/backups/mongodb/$(date %F)Automatizzare con cron:
crontab -e
# Ogni giorno alle 2 del mattino
0 2 * * * /usr/bin/mongodump --out /var/backups/mongodb/$(date \%F)3. Usare TLS/SSL per le connessioni criptate
Generare i certificati e configurare la sezione net.ssl in mongod.conf. Questo richiede una maggiore configurazione e un’autorità di certificazione (CA) affidabile.
🧪 Passo 8: Testare la distribuzione
È possibile testare la connettività remota:
mongosh "mongodb://admin:StrongPassword123!@ilvostro-server-ip:27017/admin"Sostituite il vostro IP-server con l’IP del vostro VPS o il nome del dominio.
📊 Passo 9: Monitorare MongoDB
Considerate strumenti come:
Agente di monitoraggio MongoDB Atlas (opzionale)
Prometheus Grafana con esportatori
Avvisi personalizzati con cron e logwatch
È anche possibile osservare direttamente i log:
sudo tail -f /var/log/mongodb/mongod.loglista di controllo finale
MongoDB installato e funzionante
Accesso remoto protetto
Autenticazione dell’amministratore applicata
Firewall configurato
Backup in atto
Monitoraggio opzionale abilitato
conclusione
L’esecuzione di MongoDB su un VPS offre una flessibilità senza pari, ma richiede un’attenzione particolare alla sicurezza, ai backup e alle prestazioni. Seguendo questa guida, avrete creato un’istanza MongoDB sicura e pronta per la produzione, pronta a scalare con la crescita della vostra applicazione.


