1 23/04/2026 10 min

Se l’obiettivo è portare MongoDB su una VPSie con deploy a un clic, il punto non è “installare e basta”: va deciso subito se il nodo dovrà restare un database di sviluppo, un servizio singolo per un’app interna o la base per un ambiente più serio con backup, accesso controllato e aggiornamenti gestiti. In pratica, la differenza la fanno tre cose: versione del database, esposizione di rete e persistenza dei dati.

Su una VPS il rischio tipico è partire con una configurazione comoda ma fragile: MongoDB ascolta su tutte le interfacce, l’autenticazione resta disattivata, il disco è piccolo e i backup vengono rimandati. È il classico scenario che funziona finché il server non riceve traffico reale. Qui sotto trovi un percorso pulito: deploy iniziale, hardening minimo, verifica e controlli di ritorno.

Prima scelta: cosa vuoi ottenere dal deploy

Prima di cliccare sul pulsante di installazione, chiarisci il caso d’uso. Se stai creando un ambiente di test, puoi accettare una configurazione semplice e limitata alla rete privata. Se invece il servizio deve essere raggiungibile da applicazioni remote, devi impostare fin da subito firewall, bind address e credenziali, altrimenti il “deploy rapido” diventa un debito tecnico che si paga dopo.

Con VPSie, il deploy a un clic in genere riduce il tempo di provisioning, ma non sostituisce la configurazione del database. L’installazione automatica ti porta a un sistema vivo; la sicurezza e l’operatività dipendono da ciò che fai subito dopo. Questo vale ancora di più per MongoDB, perché l’errore più comune è lasciare il servizio esposto con impostazioni di default.

Deploy a un clic su VPSie: cosa controllare subito

Al termine del deploy, entra nella VPS e verifica tre punti: sistema operativo, spazio disco e raggiungibilità della rete. Non partire dall’applicazione, parti dall’infrastruttura. Se il volume è quasi pieno o il nodo ha poca RAM, MongoDB funzionerà male anche se l’installazione è corretta.

  • Controlla l’OS e la release con cat /etc/os-release.
  • Verifica spazio e inode con df -h e df -i.
  • Conferma RAM e swap con free -h.
  • Controlla che il servizio sia attivo con systemctl status mongod o systemctl status mongodb, a seconda del pacchetto installato.
  • Se uno di questi controlli fallisce, la correzione va fatta prima di aprire il database all’esterno. Un esempio pratico: su VPS piccole, meno di 2 GB di RAM reali rendono scomodo un uso persistente con carichi non banali. Non è un divieto, ma è una soglia che impone aspettative realistiche.

    Installazione di MongoDB: percorso pulito su Linux recente

    La procedura esatta cambia in base alla distribuzione, ma il flusso resta lo stesso: repository ufficiale, pacchetto server, avvio del servizio, verifica del listener. Se VPSie ti offre un template già pronto con MongoDB preinstallato, trattalo comunque come un sistema da verificare, non come un sistema da dare per buono.

    Su distribuzioni Debian o Ubuntu recenti, il percorso tipico è questo:

    sudo apt update
    sudo apt install -y gnupg curl
    
    curl -fsSL https://pgp.mongodb.com/server-7.0.asc | sudo gpg --dearmor -o /usr/share/keyrings/mongodb-server-7.0.gpg
    
    echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
    
    sudo apt update
    sudo apt install -y mongodb-org
    sudo systemctl enable --now mongod

    Se la distribuzione è diversa, cambia il repository ma non il principio. La verifica finale è sempre la stessa: il servizio deve essere attivo e il processo deve ascoltare sulla porta prevista, di solito la 27017.

    Controlla con:

    systemctl status mongod --no-pager
    ss -lntp | grep 27017

    Se il listener non compare, il problema è quasi sempre uno tra servizio fermo, configurazione errata o permessi sul filesystem. In quel caso i log sono la prima fonte utile, non le ipotesi.

    Impostazione della rete: bind, firewall e accesso minimo

    MongoDB non va esposto a caso. Se il database serve solo all’applicazione sulla stessa VPS, il bind può restare su localhost. Se l’app gira su un’altra macchina, limita l’ascolto all’IP privato o alla rete di backend. Evita il classico 0.0.0.0 se non hai un motivo preciso e un firewall coerente.

    Il file di configurazione di solito è /etc/mongod.conf. Un esempio minimo e prudente:

    net:
      port: 27017
      bindIp: 127.0.0.1,10.0.0.10
    security:
      authorization: enabled

    Dopo la modifica, riavvia il servizio e verifica la sintassi indirettamente dal log e dallo stato del demone:

    sudo systemctl restart mongod
    sudo systemctl status mongod --no-pager
    sudo journalctl -u mongod -n 50 --no-pager

    Il firewall deve riflettere la stessa logica. Se il database deve parlare solo con una web app interna, apri la porta solo da quella subnet o da quell’host. Esempio con UFW:

    sudo ufw allow from 10.0.0.20 to any port 27017 proto tcp
    sudo ufw status verbose

    Se usi iptables o un firewall del provider, il criterio non cambia. La regola giusta è quella che minimizza la superficie esposta, non quella che “fa funzionare tutto” in modo indistinto.

    Autenticazione: attivarla subito, non dopo

    Su MongoDB, lasciare l’autenticazione disattivata è un errore che va corretto il prima possibile. Il flusso corretto è: creare l’utente amministrativo, abilitare il controllo accessi, verificare che il login funzioni e solo dopo collegare l’applicazione. Se inverti l’ordine, rischi di rimanere bloccato fuori dal server o, peggio, di esporre il database senza protezione.

    Per un setup iniziale, puoi creare un utente admin con privilegi di amministrazione. Collegati in locale e crea le credenziali con attenzione, poi ruotale e memorizzale in un vault o in un secret manager, non in chiaro nei file di deploy.

    mongosh
    use admin
    db.createUser({
      user: "admin",
      pwd: passwordPrompt(),
      roles: [ { role: "root", db: "admin" } ]
    })

    Poi abilita authorization nel file di configurazione se non è già attiva, riavvia e prova l’accesso autenticato:

    mongosh -u admin -p --authenticationDatabase admin

    Se il login fallisce, non cambiare dieci cose insieme. Prima verifica il nome utente, il database di autenticazione e il fatto che il servizio abbia riletto la configurazione. I log di sistema e di MongoDB ti dicono quasi sempre dove si rompe il flusso.

    Persistenza dati e filesystem: il punto che molti saltano

    MongoDB vive bene solo se il disco è affidabile e dimensionato correttamente. Su una VPS piccola, il problema non è solo lo spazio totale, ma anche il tipo di storage e la crescita dei file di log e dei dati. Se il disco si riempie, il database può degradare rapidamente o fermarsi.

    Prima di mettere in produzione il servizio, controlla dove risiedono i dati. Di default la directory è spesso /var/lib/mongodb o una variante simile. Verifica che il path esista e che i permessi siano coerenti con l’utente del demone.

    ls -ld /var/lib/mongodb
    sudo du -sh /var/lib/mongodb
    sudo journalctl -u mongod -n 50 --no-pager

    Se la VPSie ti permette di aggiungere volumi, ha senso separare il disco dati dal sistema operativo. È una scelta che semplifica backup e resize. In quel caso, monta il volume in modo persistente e aggiorna il path dati in mongod.conf solo dopo aver verificato il mount con mount | grep mongodb o findmnt.

    Backup: il minimo sindacale da fare subito

    Un’installazione senza backup non è pronta per il traffico reale. Anche su una singola VPS, basta una corruzione del filesystem, un errore umano o un aggiornamento sbagliato per perdere dati. Il backup più semplice da introdurre subito è un dump logico programmato, poi eventualmente si passa a snapshot o a replica set a seconda del contesto.

    Per iniziare, un dump notturno può bastare:

    mongodump --uri="mongodb://admin:PASS@127.0.0.1:27017/admin" --out=/backup/mongodb/$(date +%F)

    Attenzione: non lasciare la password in chiaro nello script. Usa un file di configurazione protetto, variabili d’ambiente gestite dal sistema, oppure un secret manager. Se il backup va verso storage esterno, verifica che il canale sia cifrato e che i permessi siano limitati.

    La verifica minima di un backup non è “il comando è partito”, ma “il dump si ripristina”. Con una cadenza regolare, esegui un test di restore in un ambiente separato:

    mongorestore --uri="mongodb://admin:PASS@127.0.0.1:27017/admin" /backup/mongodb/2026-04-23

    Se il restore fallisce, il backup non è affidabile. Fine della discussione.

    Collegare l’applicazione: stringa di connessione, timeout e pool

    Una volta che il database è in piedi, passa al collegamento dell’app. La stringa di connessione deve essere coerente con il tipo di accesso: locale, rete privata o endpoint dedicato. Per applicazioni web, è utile impostare timeout e pool di connessioni in modo sensato, soprattutto se il carico cresce o se il database è distante dalla web tier.

    Esempio di URI con autenticazione e database esplicito:

    mongodb://appuser:SECRET@10.0.0.10:27017/appdb?authSource=admin

    Se l’applicazione è in PHP, Node.js o Python, la logica resta uguale: usa credenziali separate dall’utente admin, limita i privilegi al database necessario e tieni separati ambiente di sviluppo e produzione. Un utente applicativo con ruolo troppo ampio è un problema operativo prima ancora che di sicurezza.

    Se incontri errori di connessione, il controllo rapido è questo: la porta è raggiungibile, l’utente esiste, il database di autenticazione è corretto e il servizio accetta connessioni dal tuo IP. In molti casi il fallimento non dipende da MongoDB, ma da un firewall di mezzo o da un bind address troppo restrittivo.

    Verifiche operative dopo il deploy

    Dopo l’installazione, fai un giro di controllo che ti evita sorprese a distanza di ore o giorni. Non serve una checklist infinita: bastano pochi test coerenti.

  • Verifica il servizio: systemctl is-active mongod deve restituire active.
  • Verifica il listener: ss -lntp | grep 27017 deve mostrare il processo corretto.
  • Verifica l’autenticazione: un accesso senza credenziali deve fallire, uno autenticato deve riuscire.
  • Verifica i log: journalctl -u mongod -n 100 --no-pager non deve contenere errori ripetuti.
  • Verifica spazio disco: df -h deve lasciare margine, non solo pochi punti percentuali.
  • Se vuoi un controllo più accurato, aggiungi una metrica di base: latenza della query semplice, numero di connessioni e utilizzo RAM del processo. È il modo più rapido per capire se il nodo sta lavorando bene o se è già al limite.

    Errori tipici e come leggerli senza perdere tempo

    Alcuni errori tornano spesso. Se il servizio non parte dopo una modifica, guarda prima il log di sistema e poi il file di configurazione. Un errore di YAML in mongod.conf o un indent errato basta a bloccare tutto. Se il servizio parte ma l’app non si connette, il problema è quasi sempre rete, autenticazione o hostname.

    Se compare un errore di spazio insufficiente, non limitarti a cancellare file a caso. Identifica cosa sta crescendo: dati, log, dump vecchi o swap. Esegui una pulizia ragionata, poi ridimensiona il volume se necessario. La correzione strutturale è più importante della liberazione momentanea di qualche gigabyte.

    Se invece il database sembra “vivo” ma l’app mostra pagina bianca o timeout, non dare per scontato che il problema sia MongoDB. Controlla prima la catena completa: origin web, PHP/Node runtime, DNS, firewall, quindi database. Nei sistemi reali il guasto raramente sta in un solo punto.

    Quando il deploy a un clic non basta più

    Il deploy a un clic è ottimo per ridurre attrito iniziale, non per evitare le decisioni di architettura. Quando il database inizia a servire più di un’app, o quando serve disponibilità più alta, va ripensato il modello: replica set, backup verificati, monitoraggio, alerting e accesso segmentato. A quel punto il “click” iniziale resta solo il modo più veloce per arrivare al primo nodo.

    Su VPSie, il valore vero sta nel partire velocemente senza perdere il controllo. Se imposti bene bind, autenticazione, firewall, backup e verifiche, MongoDB su VPS può essere una base solida. Se invece lasci tutto al default, il tempo risparmiato all’inizio lo recuperi alla prima anomalia.

    Assunzioni: procedura pensata per una VPS Linux recente con accesso root o sudo, servizio gestito da systemd e MongoDB installato da repository ufficiale o template equivalente di VPSie.