
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