
Nel panorama della gestione delle infrastrutture IT, NetBox è diventato uno degli strumenti open source più apprezzati per documentare e automatizzare reti e data center.
Nato inizialmente all’interno di DigitalOcean, oggi il progetto è mantenuto dalla community e offre una piattaforma completa per gestire asset, IP address, cablaggi, dispositivi e automazioni in un’unica interfaccia web.
In questa guida vedremo passo dopo passo come installare e configurare la versione Community Edition di NetBox (v4.4.4) su Ubuntu Server 24.04 LTS, utilizzando lo stack classico composto da PostgreSQL, Redis, Gunicorn e Nginx.
L’obiettivo è arrivare a un’installazione stabile, pronta per essere utilizzata in laboratorio o come base per ambienti di produzione.
PREREQUISITI
Ubuntu Server 24.04 LTS a 64 bit (tutte le edizioni supportate)
Accesso con un utente con privilegi sudo
Connessione a Internet per scaricare pacchetti e dipendenze
AGGIORNAMENTO DEL SERVER UBUNTU
Aggiornare il sistema e installa strumenti utili con i seguenti comandi:
|
0
1
|
sudo apt update && sudo apt upgrade -y
sudo apt install -y git curl wget ca-certificates gnupg lsb-release
|
Opzionale ma caldamente consigliato su VM piccole (<2GB RAM): creare uno swap da 4GB per evitare OOM quando pip compila le deps pesanti.
|
0
1
2
3
4
|
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
|
INSTALLAZIONE E CONFIGURAZIONE DI POSTGRESQL
NetBox usa PostgreSQL come DB.
Installarlo con il comando:
|
0 |
sudo apt install -y postgresql postgresql-contrib
|
Creare un DB, utente e password dedicati (sostituire SPASSWORD con qualcosa di serio):
|
0
1
2
3
4
5
|
sudo -u postgres psql << 'EOF'
CREATE DATABASE netbox;
CREATE USER netbox WITH PASSWORD 'PASSWORD';
ALTER DATABASE netbox OWNER TO netbox;
GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;
EOF
|
NOTA BENE: Appuntarsi il nome del DB (netbox), l’utente (netbox) e la password (PASSWORD) perchè tra poco andranno inserite nel file configuration.py.
INSTALLAZIONE E CONFIGURAZIONE DI REDIS
NetBox usa Redis per cache e code in background.
Installare Redis con il comando:
|
0 |
sudo apt install -y redis
|
Controllare che giri tutto correttamante con il seguente comando:
|
0 |
systemctl status redis-server --no-pager
|
Se è tutto OK dovremmo visualizzare il seguente output:
|
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
● redis-server.service - Advanced key-value store
Loaded: loaded (/usr/lib/systemd/system/redis-server.service; enabled; preset: enabled)
Active: active (running) since Sat 2025-10-25 11:24:22 CEST; 5s ago
Docs: http://redis.io/documentation,
man:redis-server(1)
Main PID: 15339 (redis-server)
Status: "Ready to accept connections"
Tasks: 5 (limit: 979)
Memory: 3.4M (peak: 4.3M)
CPU: 51ms
CGroup: /system.slice/redis-server.service
└─15339 "/usr/bin/redis-server 127.0.0.1:6379"
Oct 25 11:24:22 systemd[1]: Starting redis-server.service - Advanced key-value store...
Oct 25 11:24:22 systemd[1]: Started redis-server.service - Advanced key-value store.
|
ATTENZIONE: Da fare per ambienti di Produzione: di default Redis su Ubuntu 24.04 ascolta su 127.0.0.1:6379 senza password.
Se il server è esposto verso reti non fidate, impostare una password con il comando:
|
0 |
sudo sed -i 's/^# requirepass .*/requirepass REDISPASSWORD/' /etc/redis/redis.conf
|
Quindi riavviare Redis con il comando:
|
0 |
sudo systemctl restart redis-server
|
Annotare REDISPASSWORD perchè andrà inseritio in configuration.py come REDIS_PASSWORD.
CREAZIONE DI UN UTENTE DI SERVIZIO
Useremo /opt/netbox e creeremo un utente di sistema netbox come suggerito nelle guide ufficiali.
Creare utente/gruppo di sistema senza shell di login con il comando:
|
0 |
sudo adduser --system --group netbox
|
DOWNLOAD DI NETBOX 4.4.4
Scaricare NetBox 4.4.4 all’interno di /opt/netbox-4.4.4 e creare symlink /opt/netbox con i seguenti comandi:
|
0
1
2
3
|
cd /opt
sudo wget https://github.com/netbox-community/netbox/archive/refs/tags/v4.4.4.tar.gz
sudo tar -xzf v4.4.4.tar.gz
sudo ln -s netbox-4.4.4 netbox
|
Impostare i permessi (importante per media/uploads):
|
0
1
|
sudo chown -R netbox:netbox /opt/netbox-4.4.4
sudo chown -R netbox:netbox /opt/netbox-4.4.4/netbox/media
|
INSTALLAZIONE DELLE DIPENDENZE DI SISTEMA E CREAZIONE DEL VIRTUALENV PYTHON
Secondo i requisiti ufficiali NetBox supporta Python 3.10–3.12 e richiede librerie di build, libpq-dev ecc.
Ubuntu 24.04 già ha Python 3.12. Procedere all’installazione con i seguenti comandI:
|
0
1
2
|
sudo apt install -y python3 python3-venv python3-dev python3-pip \
build-essential libxml2-dev libxslt1-dev libffi-dev libpq-dev \
libssl-dev zlib1g-dev
|
Creare e popolare il virtualenv con i comandi:
|
0
1
2
3
|
cd /opt/netbox
sudo -u netbox python3 -m venv /opt/netbox/venv
sudo -u netbox /opt/netbox/venv/bin/pip install --upgrade pip wheel setuptools
sudo -u netbox /opt/netbox/venv/bin/pip install -r requirements.txt
|
Questo installerà Django, Gunicorn e tutte le dipendenze pin-rate della release.
CONFIGURAZIONE DI NETBOX
Copiare il file di configurazione con i seguenti comandi:
|
0
1
|
cd /opt/netbox/netbox/netbox
sudo -u netbox cp configuration_example.py configuration.py
|
GENERAZIONE DELLA SECRET_KEY
Per generare la Secret-Key eseguire il comando:
|
0 |
sudo -u netbox python3 ../generate_secret_key.py
|
Dovremmo visualizzare un output simile al seguente:
|
0 |
uuWGs8(X2Q6#ajHPx=H9+4Ay08HlHMC7T4qLcs4yL&u5=Z-dfO
|
Copiare il valore stampato perchè andrà inserito in SECRET_KEY dentro configuration.py.
MODIFICA DELLA CONFIGURAZIONE DEL FILE CONFIGURATION.PY
Editare il file configuration.py con il comando:
|
0 |
sudo nano /opt/netbox/netbox/netbox/configuration.py
|
Impostare almeno i seguenti paramentri:
|
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
ALLOWED_HOSTS = ['netbox.example.local', '10.0.0.5'] # aggiungi hostname/IP del server
SECRET_KEY = 'uuWGs8(X2Q6#ajHPx=H9+4Ay08HlHMC7T4qLcs4yL&u5=Z-dfO'
DATABASE = {
'NAME': 'netbox',
'USER': 'netbox',
'PASSWORD': 'STRONGPASSWORD', # quella di PostgreSQL
'HOST': 'localhost',
'PORT': '',
'CONN_MAX_AGE': 300,
}
REDIS = {
'tasks': {
'HOST': 'localhost',
'PORT': 6379,
'PASSWORD': 'SUPERREDISPASS', # se hai impostato requirepass, altrimenti ''
'DATABASE': 0,
'SSL': False,
},
'caching': {
'HOST': 'localhost',
'PORT': 6379,
'PASSWORD': 'SUPERREDISPASS',
'DATABASE': 1,
'SSL': False,
}
}
|
Salvare e chiudere il file di configurazione
MIGRAZIONE DEI DB, RACCOLTA DEI FILE STATICI E CREAZIONE DEL SUPERUSER
Ora creare le tabelle, raccogliere i file statici e creiamo l’utente admin.
Questi comandi vanno lanciati dentro l’ambiente virtuale.
Attivare Venv con il comando:
|
0 |
source /opt/netbox/venv/bin/activate
|
Entrare nella directory del manage.py con il comando:
|
0 |
cd /opt/netbox/netbox
|
Migrare il database con il comando:
|
0 |
python3 manage.py migrate
|
Raccogliere i file statici in /opt/netbox/netbox/static con il comando:
|
0 |
python3 manage.py collectstatic --noinput
|
Creare l’utente admin con il comando:
|
0 |
python3 manage.py createsuperuser
|
Rispondere a username/email/password inserendo i dati corretti
Se è andato tutto a buon fine dovremmo visualizzare il seguente output:
|
0
1
2
3
4
5
|
Username: admin
Email address: admin@test.lab
Password:
Password (again):
No active configuration revision found - falling back to most recent
Superuser created successfully.
|
Disattivare Venv con il comando:
|
0 |
deactivate |
A questo punto NetBox è pronto a partire.
Adesso lo rendiamo un servizio con Gunicorn + systemd + Nginx.
CONFIGURAZIONE DEL SERVIZIO NETBOX CON GUNICORN
Creare il file /etc/systemd/system/netbox.service con il comando:
|
0 |
sudo nano /etc/systemd/system/netbox.service
|
Inserire il seguente output:
|
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[Unit]
Description=NetBox WSGI Service
After=network.target
[Service]
Type=simple
User=netbox
Group=netbox
WorkingDirectory=/opt/netbox/netbox
Environment="PYTHONPATH=/opt/netbox/netbox"
ExecStart=/opt/netbox/venv/bin/gunicorn --workers 4 --bind 127.0.0.1:8001 netbox.wsgi
Restart=on-failure
[Install]
WantedBy=multi-user.target
|
NOTA: –bind 127.0.0.1:8001: Gunicorn ascolta solo in locale.
NOTA: Configura –workers in base a CPU/RAM.
Ricaricare systemd e avviare i servizi con i comandi:
|
0
1
2
|
sudo systemctl daemon-reload
sudo systemctl enable --now netbox.service
sudo systemctl status netbox.service --no-pager
|
Se è andato tutto a buon fine dovremmo visualizzare il seguente output:
|
0
1
2
3
4
5
6
7
8
9
10
|
● netbox.service - NetBox WSGI Service
Loaded: loaded (/etc/systemd/system/netbox.service; enabled; preset: enabled)
Active: active (running) since Sat 2025-10-25 11:46:17 CEST; 18ms ago
Main PID: 16773 (gunicorn)
Tasks: 1 (limit: 979)
Memory: 3.4M (peak: 3.4M)
CPU: 14ms
CGroup: /system.slice/netbox.service
└─16773 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --workers 4 --bind 127.0.0.1:8001 netbox.wsgi
Oct 25 11:46:17 systemd[1]: Started netbox.service - NetBox WSGI Service.
|
CONFIGURAZIONE DI NGINX COME REVERSE PROXY
Nginx farà da frontend HTTP/HTTPS e servirà gli statici.
Installare Nginx con il comando:
|
0 |
sudo apt install -y nginx
|
Quindi creare il file /etc/nginx/sites-available/netbox con il comando:
|
0 |
sudo nano /etc/nginx/sites-available/netbox
|
Inserire il seguente contenuto base HTTP
|
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
server {
listen 80;
server_name netbox.example.local;
client_max_body_size 25m;
# Static files
location /static/ {
alias /opt/netbox/netbox/static/;
}
# Media uploads (images, attachments)
location /media/ {
alias /opt/netbox/netbox/media/;
}
# Proxy all else to Gunicorn
location / {
proxy_pass http://127.0.0.1:8001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
|
Salvare e chiudere il file di configurazione.
NOTA BENE: è consigliabile configurare HTTPS con certbot in produzione
Abilitare il sito e controllare la sintassi con i seguenti comandi:
|
0
1
2
3
|
sudo ln -s /etc/nginx/sites-available/netbox /etc/nginx/sites-enabled/netbox
sudo nginx -t
sudo systemctl restart nginx
sudo systemctl enable nginx
|
AVVIARE NETBOX DA INTERFACCIA WEB
Da un qualsiasi browser richiamare il link: http://<IP_del_server>/
Dovremmo visualizzare la schermata di Login di Netbox. Inserire le credenziali create in precedenza quindi cliccare Sign In
Sopra un immagine che mostra la Home Page di NetBox
A questo punto è possibile aggiungere i devices…
CONSIDERAZIONI FINALI SU NETBOX
Con la versione 4.4.4, NetBox conferma la sua posizione come piattaforma open source di riferimento per la documentazione e la gestione delle infrastrutture di rete e data center.
L’applicazione ha raggiunto un livello di maturità e stabilità notevole, mantenendo la flessibilità che da sempre la contraddistingue e introducendo nel tempo un ecosistema di plugin e API REST che la rendono ideale anche per ambienti di automazione complessi.
✅ Punti di forza (Pro)
Open Source e Community attiva: NetBox è completamente gratuito e supportato da una community solida e collaborativa. Gli aggiornamenti sono frequenti e ben documentati.
Architettura moderna: Basato su Django, PostgreSQL e Redis, garantisce ottime prestazioni e integrazione con stack Python e strumenti DevOps (Ansible, Nornir, Nautobot, ecc.).
API REST e GraphQL potenti: Tutte le funzioni disponibili via interfaccia web sono accessibili via API, favorendo l’automazione e l’integrazione con sistemi esterni.
Modularità e personalizzazione: Grazie al supporto ai plugin, è possibile estendere NetBox per adattarlo alle esigenze specifiche dell’organizzazione senza toccare il core del software.
Interfaccia chiara e ricca di funzionalità: Permette di documentare dispositivi, rack, interfacce, IP, VLAN, circuiti e molto altro, con relazioni incrociate precise e visualizzazioni coerenti.
Documentazione eccellente: Lato ufficiale e community, le guide sono ben curate e aiutano a mantenere l’ambiente aggiornato e sicuro.
⚠️ Punti deboli (Contro)
Curva di apprendimento iniziale: Per chi arriva da zero, la logica dei modelli (device, interfaces, tenants, ecc.) può risultare complessa. Serve un po’ di tempo per familiarizzare.
Installazione e upgrade non immediati: Pur ben documentati, i processi di setup e aggiornamento richiedono dimestichezza con ambienti Linux, Python e database. Non è un’app “click & run”.
Interfaccia amministrativa non dinamica come le moderne app SPA: Pur molto funzionale, l’UI resta server-rendered (Django template), meno fluida di front-end in React/Vue. Alcune operazioni massive potrebbero essere più interattive.
Assenza di funzioni di monitoraggio: NetBox è un CMDB/documentation tool — non effettua discovery o monitoring attivo. Serve integrarlo con strumenti come LibreNMS, Zabbix o Prometheus.
Gestione utenti e permessi avanzata richiede attenzione: L’RBAC è potente ma complesso da configurare in ambienti con molti gruppi e ruoli.
In sintesi
NetBox 4.4.4 rappresenta una soluzione matura, stabile e scalabile per la gestione centralizzata dell’infrastruttura IT.
È particolarmente indicato per:
- ambienti enterprise o service provider che vogliono una CMDB affidabile,
- team network che desiderano integrare documentazione e automazione,
- laboratori di formazione e test di infrastruttura.
Non è però la scelta giusta se cerchi un sistema “plug-and-play” o un tool di monitoraggio in tempo reale: NetBox eccelle nella documentazione strutturata, non nella raccolta automatica dei dati.
Conclusione
Installare NetBox su Ubuntu 24.04 è un ottimo punto di partenza per chi desidera costruire un inventario IT completo, estensibile e integrabile con pipeline di automazione.
Con un po’ di pratica, diventa uno strumento indispensabile per avere ordine, visibilità e controllo sulla propria rete.

0 commenti