Database · 9 min read · Dec 20, 2025
Come installare e configurare Neo4j Graph Database su Ubuntu 22.04

Neo4j è un database a grafo utilizzato per creare relazioni tra i dati. I dati all’interno dei database tradizionali sono salvati in una struttura simile a una tabella. Un database grafico registra le relazioni tra i nodi dei dati. Ogni nodo memorizza riferimenti a tutti gli altri nodi a cui è connesso. I database tradizionali non salvano direttamente i dati delle relazioni, ma possono scoprire le connessioni cercando nelle strutture dei dati con l’aiuto dell’indicizzazione, che è costosa e richiede tempo. Un database grafico come Neo4j evita tutto questo sovraccarico e può codificare e interrogare relazioni complesse.

Neo4j è sviluppato da Neo Technology. È scritto in Java e Scala ed è disponibile sia in una versione comunitaria gratuita che in una versione enterprise. Neo4j utilizza il proprio linguaggio di query chiamato Cypher, ma le query possono essere scritte in altri stili.
Questo tutorial ti insegnerà come installare e configurare Neo4j su un server Ubuntu 22.04.
Prerequisiti
- Un server che esegue Ubuntu 22.04 con un minimo di 1 core CPU e 2 GB di memoria. Dovrai aggiornare il server in base ai requisiti.
- Un utente non root con privilegi sudo.
- Assicurati che tutto sia aggiornato.
$ sudo apt update- Installa pacchetti di utilità di base. Alcuni di essi potrebbero essere già installati.
$ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
Passo 1 - Installare Neo4j
Il primo passo per installare Neo4j è aggiungere la chiave GPG.
$ curl -fsSL https://debian.neo4j.com/neotechnology.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/neo4j.gpg
Aggiungi il repository di Neo4j alla directory delle sorgenti APT del tuo sistema.
$ echo "deb [signed-by=/usr/share/keyrings/neo4j.gpg] https://debian.neo4j.com stable latest" | sudo tee -a /etc/apt/sources.list.d/neo4j.list
Per evitare il rischio di aggiornare alla prossima versione principale, puoi specificare le versioni principali e secondarie richieste al posto di latest nel comando sopra.
Il comando seguente aggiungerà il repository Neo4j 5.x, il che significa che non finirai per aggiornare alla versione 6.x ogni volta che viene rilasciata.
$ echo "deb [signed-by=/usr/share/keyrings/neo4j.gpg] https://debian.neo4j.com stable 5" | sudo tee -a /etc/apt/sources.list.d/neo4j.list
Aggiorna l’elenco dei repository di sistema.
$ sudo apt update
Elenca le versioni di Neo4j disponibili per l’installazione.
$ apt list -a neo4j
Listing... Done
neo4j/stable 1:5.3.0 all
neo4j/stable 1:5.2.0 all
neo4j/stable 1:5.1.0 all
Installa l’edizione Community di Neo4j.
$ sudo apt install neo4j
Puoi installare una versione specifica utilizzando il seguente comando.
$ sudo apt install neo4j=1:5.3.0
Nota che la versione include un componente di versione epoch (1:), in conformità con la politica di versioning di Debian.
Neo4j installerà automaticamente la versione JDK richiesta con esso.
Abilita il servizio Neo4j.
$ sudo systemctl enable neo4j
Avvia il servizio Neo4j.
$ sudo systemctl start neo4j
Controlla lo stato del servizio Neo4j.
$ sudo systemctl status neo4j
? neo4j.service - Neo4j Graph Database
Loaded: loaded (/lib/systemd/system/neo4j.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2023-01-21 20:50:52 UTC; 33s ago
Main PID: 5241 (java)
Tasks: 72 (limit: 1030)
Memory: 399.3M
CPU: 20.350s
CGroup: /system.slice/neo4j.service
Passo 2 - Testare la connessione
Neo4j utilizza il Cypher Shell per lavorare con i dati.
Connettiti al Cypher Shell.
$ cypher-shell
Ti verrà chiesto un nome utente e una password. Il nome utente e la password predefiniti sono neo4j. Ti verrà chiesto di scegliere una nuova password.
username: neo4j
password:
Password change required
new password:
confirm password:
Connected to Neo4j using Bolt protocol version 5.0 at neo4j://localhost:7687 as user neo4j.
Type :help for a list of available commands or :exit to exit the shell.
Note that Cypher queries must end with a semicolon.
neo4j@neo4j>
Questo conferma la connessione riuscita al DBMS Neo4j.
Digita :exit per uscire dal shell.
neo4j@neo4j> :exit
Bye!
Passo 3 - Configurare Neo4j per l’accesso remoto
Per gli ambienti di produzione, potrebbe essere necessario confermare Neo4j per accettare connessioni da host remoti. Per impostazione predefinita, Neo4j accetta connessioni solo da localhost.
Possiamo configurare Neo4j per accettare connessioni da host remoti modificando il suo file di configurazione. Neo4j memorizza le sue impostazioni nel file /etc/neo4j/neo4j.conf. Aprilo per la modifica.
$ sudo nano /etc/neo4j/neo4j.conf
Trova la riga commentata #dbms.default_listen_address=0.0.0.0 e decommentala rimuovendo l’hash iniziale.
. . .
#***************************************************************
# Configurazione del connettore di rete
#***************************************************************
# Con la configurazione predefinita Neo4j accetta solo connessioni locali.
# Per accettare connessioni non locali, decommenta questa riga:
server.default_listen_address=0.0.0.0
. . .
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Per impostazione predefinita, il valore 0.0.0.0 collegherà Neo4j a tutte le interfacce IPv4 disponibili sul tuo sistema, incluso localhost. Se desideri limitare Neo4j a un particolare indirizzo IP, ad esempio, un indirizzo IP di rete privata, specifica qui l’indirizzo IP assegnato all’interfaccia di rete privata del tuo server.
Puoi anche configurare Neo4j per utilizzare interfacce IPv6. Come per IPv4, puoi impostare il valore default_listen_address su un indirizzo IPv6 specifico che utilizzerai per comunicare con Neo4j. Se desideri limitare Neo4j a utilizzare solo l’indirizzo IPv6 locale per il tuo server, specifica ::1, che corrisponde a localhost utilizzando la notazione IPv6.
Se configuri Neo4j con un indirizzo IPv6, non sarai in grado di connetterti con cypher-shell utilizzando direttamente l’indirizzo IPv6. Invece, devi configurare un nome DNS che risolva l’indirizzo IPv6, oppure aggiungere un’entrata nel file /etc/hosts del sistema remoto che mappa l’indirizzo a un nome. Poi potrai utilizzare il nome del DNS o del file hosts per connetterti a Neo4j utilizzando IPv6 dal tuo sistema remoto.
Ad esempio, un server Neo4j con un indirizzo IPv6 come 2001:db8::1 richiederebbe al sistema di connessione remota di avere un’entrata /etc/hosts come mostrato di seguito.
2001:db8::1 your_hostname
Puoi quindi connetterti al server dal sistema remoto utilizzando il nome che hai specificato come mostrato di seguito.
$ cypher-shell -a 'neo4j://your_hostname:7687'
Se limiti Neo4j a utilizzare l’indirizzo localhost IPv6 di ::1, puoi connetterti localmente sul server Neo4j stesso utilizzando il nome ip6-localhost preconfigurato dal tuo file /etc/hosts mostrato di seguito.
$ cypher-shell -a 'neo4j://ip6-localhost:7687'
Una volta che invochi cypher-shell con l’URI di connessione, ti verrà chiesto il tuo nome utente e la tua password come al solito.
Passo 4 - Configurare l’accesso al firewall (UFW)
Una volta che hai abilitato le connessioni remote, puoi utilizzare il firewall per limitare Neo4j a limitare le connessioni solo da sistemi fidati a cui può connettersi.
Neo4j crea due socket di rete, uno sulla porta 7474 per l’interfaccia HTTP integrata e il protocollo bolt principale sulla porta 7687.
Ubuntu 22.04 utilizza Uncomplicated Firewall (UFW) per impostazione predefinita.
Configura il firewall per consentire a un host remoto fidato di accedere all’interfaccia bolt utilizzando IPv4 con il seguente comando.
$ sudo ufw allow from 203.0.113.1 to any port 7687 proto tcp
Sostituisci l’indirizzo IP del sistema remoto fidato al posto del valore 203.0.113.1. Allo stesso modo, puoi consentire un’intera gamma di reti utilizzando il seguente comando.
$ sudo ufw allow from 192.0.2.0/24 to any port 7687 proto tcp
Sostituisci la rete effettiva al posto del valore 192.0.2.0/24.
Per consentire l’accesso a un host remoto utilizzando IPv6, puoi utilizzare il seguente comando.
$ sudo ufw allow from 2001:DB8::1/128 to any port 7687 proto tcp
Sostituisci l’indirizzo IPv6 del tuo sistema fidato al posto del valore 2001:DB8::1/128.
Come per IPv4, puoi consentire un intervallo di indirizzi IPv6 utilizzando il seguente comando.
$ ufw allow from 192.0.2.0/24 to any port 7687 proto tcp
Ancora una volta, sostituisci il tuo intervallo di rete fidato al posto dell’intervallo di rete evidenziato 2001:DB8::/32.
Ricarica il firewall per applicare le modifiche.
$ sudo ufw reload
Controlla lo stato del firewall.
$ sudo ufw status
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
7687/tcp ALLOW 203.0.113.1
Passo 5 - Utilizzare Neo4j
Connettiti a Neo4j utilizzando lo strumento cypher-shell. Ti verrà chiesto il tuo nome utente e la tua password.
$ cypher-shell
Se hai configurato Neo4j per l’accesso remoto, utilizza il seguente comando per connetterti a Neo4j dal sistema remoto.
$ cypher-shell -a 'neo4j://203.0.113.1:7687'
Qui 203.0.113.1 è l’indirizzo IP del server Neo4j.
Se stai utilizzando IPv6, assicurati di avere un’entrata /etc/hosts con un nome descritto nel passo 3. Quindi connettiti al server Neo4j come segue.
$ cypher-shell -a 'neo4j://your_hostname:7687'
Assicurati che your_hostname mappi all’indirizzo IPv6 del tuo server Neo4j nel file /etc/hosts del sistema remoto.
Aggiungiamo un nodo chiamato Slite e i nomi degli autori a Neo4j. Il seguente comando creerà un nodo di tipo Slite, con un nome Navjot Singh.
neo4j@neo4j> CREATE (:Slite {name: 'Navjot Singh'});
Otterrai il seguente output.
0 rows
ready to start consuming query after 124 ms, results consumed after another 0 ms
Added 1 nodes, Set 1 properties, Added 1 labels
Successivamente, aggiungeremo più dipendenti e li collegheremo utilizzando una relazione chiamata COLLEAGUE. Puoi collegare i nodi con relazioni chiamate arbitrariamente.
Aggiungi altri tre dipendenti e collegali utilizzando la relazione COLLEAGUE.
neo4j@neo4j> CREATE
(:Slite {name: 'Sammy'})-[:COLLEAGUE]->
(:Slite {name: 'Peter Jack'})-[:COLLEAGUE]->
(:Slite {name: 'Chris Rock'});
Otterrai un output simile.
0 rows
ready to start consuming query after 72 ms, results consumed after another 0 ms
Added 3 nodes, Created 2 relationships, Set 3 properties, Added 3 labels
Ora, creiamo alcune relazioni.
Poiché Peter e Chris lavorano nello stesso dipartimento e hanno le stesse proprietà come nodi, creeremo una relazione con la colonna nome.
neo4j@neo4j> MATCH (a:Slite),(b:Slite)
WHERE a.name = 'Peter Jack' AND b.name = 'Chris Rock'
CREATE (a)-[r:DEPARTMENT { name: 'Designers' }]->(b)
RETURN type(r), r.name;
+----------------------------+
| type(r) | r.name |
+----------------------------+
| "DEPARTMENT" | "Designers" |
+----------------------------+
1 row
ready to start consuming query after 60 ms, results consumed after another 17 ms
Created 1 relationships, Set 1 properties
Ora, creiamo un’altra connessione tra Sammy e Peter poiché stanno lavorando sullo stesso progetto.
neo4j@neo4j> MATCH (a:Slite), (b:Slite)
WHERE a.name = 'Peter Jack' AND b.name = 'Sammy' CREATE (a)-[r:PROJECT { name: 'Test Project 1' }]->(b) RETURN type(r), r.name;
+------------------------------+
| type(r) | r.name |
+------------------------------+
| "PROJECT" | "Test Project 1" |
+------------------------------+
1 row
ready to start consuming query after 132 ms, results consumed after another 12 ms
Created 1 relationships, Set 1 properties
Mostriamo tutti questi dati utilizzando la seguente query.
neo4j@neo4j> MATCH (a)-[r]->(b)
RETURN a.name,r,b.name
ORDER BY r;
+-------------------------------------------------------------------+
| a.name | r | b.name |
+-------------------------------------------------------------------+
| "Sammy" | [:COLLEAGUE] | "Peter Jack" |
| "Peter Jack" | [:COLLEAGUE] | "Chris Rock" |
| "Peter Jack" | [:DEPARTMENT {name: "Designers"}] | "Chris Rock" |
| "Peter Jack" | [:PROJECT {name: "Test Project 1"}] | "Sammy" |
+-------------------------------------------------------------------+
4 rows
ready to start consuming query after 99 ms, results consumed after another 5 ms
Conclusione
Questo conclude il nostro tutorial su come installare e configurare Neo4j su un server Ubuntu 22.04. Se hai domande, postale nei commenti qui sotto.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.