Installer NetBox de zéro

D'un serveur Linux vierge à une instance NetBox derrière HTTPS, prête pour les utilisateurs. PostgreSQL, Redis, NetBox lui-même, gunicorn, puis le serveur web de ton choix.

intermédiaire~45 min de manipulation
#netbox#postgresql#redis#gunicorn#nginx#apache

Pas encore validée de bout en bout — sois le premier.Signaler un problème

Brouillon — pas encore exécuté de bout en bout. Cette page est écrite mais son auteur ne l'a pas encore déroulée sur une vraie machine. Des commandes peuvent être fausses : lis avant de lancer, et dis-nous ce qui casse.

En un coup d'œilUn serveur, quatre briques
Ton serveur
HTTPS
Ton équipehttps://
nginx443 → 8001
NetBox (gunicorn)
PostgreSQLnetbox / netbox
Redisdb 0 tasks · db 1 cache

Le serveur web reçoit le HTTPS des utilisateurs et passe les requêtes à gunicorn, qui fait tourner NetBox. NetBox garde tout dans PostgreSQL et utilise Redis pour sa file et son cache. Avec LDAP, les connexions sont vérifiées auprès de ton annuaire.

NetBox, c'est quatre pièces : une base PostgreSQL, un cache Redis, l'application Django servie par gunicorn, et un serveur web devant pour le HTTPS. On les installe dans cet ordre, en vérifiant chacune avant de passer à la suivante.

Avant de commencer

$sudo apt update && sudo apt upgrade -y

PostgreSQL

$sudo apt install -y postgresql
Vérification
$psql --version
Retour attendu
psql (PostgreSQL) 16.x

Crée la base et son propriétaire :

$sudo -u postgres psql -c "CREATE DATABASE netbox;"
$sudo -u postgres psql -c "CREATE USER netbox WITH PASSWORD '';"
$sudo -u postgres psql -c "ALTER DATABASE netbox OWNER TO netbox;"
$sudo -u postgres psql -d netbox -c "GRANT CREATE ON SCHEMA public TO netbox;"
Vérification
$psql --username netbox --password --host localhost netbox -c '\conninfo'
Retour attendu
You are connected to database "netbox" as user "netbox" on host "localhost"

Redis

$sudo apt install -y redis-server
Vérification
$redis-cli ping
Retour attendu
PONG

Installer NetBox

$sudo apt install -y git python3 python3-pip python3-venv python3-dev build-essential \
$ libxml2-dev libxslt1-dev libffi-dev libpq-dev libssl-dev zlib1g-dev
Vérification
$python3 -V
Retour attendu
Python 3.12.x
$sudo mkdir -p
$sudo git clone -b --depth 1 https://github.com/netbox-community/netbox.git
$sudo adduser --system --group netbox
$sudo chown --recursive netbox /netbox/media/ /netbox/reports/ /netbox/scripts/

Configuration

$sudo cp /netbox/netbox/configuration_example.py /netbox/netbox/configuration.py
$python3 /netbox/generate_secret_key.py

Édite configuration.py et renseigne ces valeurs (colle la clé affichée ci-dessus dans SECRET_KEY) :

python
ALLOWED_HOSTS = ['']
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'netbox',
'USER': 'netbox',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '',
'CONN_MAX_AGE': 300,
}
}
REDIS = {
'tasks': {'HOST': 'localhost', 'PORT': 6379, 'PASSWORD': '', 'DATABASE': 0, 'SSL': False},
'caching': {'HOST': 'localhost', 'PORT': 6379, 'PASSWORD': '', 'DATABASE': 1, 'SSL': False},
}
SECRET_KEY = 'colle-la-cle-generee-ici'

Lancer le script d'upgrade

$sudo /upgrade.sh
Vérification
$sudo /venv/bin/python /netbox/manage.py check
Retour attendu
System check identified no issues

Crée le premier administrateur :

$sudo /venv/bin/python /netbox/manage.py createsuperuser
$sudo ln -s /contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping

gunicorn et systemd

$sudo cp /contrib/gunicorn.py /gunicorn.py
$sudo cp -v /contrib/*.service /etc/systemd/system/
$sudo systemctl daemon-reload
$sudo systemctl enable --now netbox netbox-rq
Vérification
$systemctl is-active netbox netbox-rq
Retour attendu
active
active
Vérification
$curl -sI http://127.0.0.1:8001/ | head -1
Retour attendu
HTTP/1.1 200 OK

Serveur web et HTTPS

$sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
$ -keyout /etc/ssl/private/netbox.key -out /etc/ssl/certs/netbox.crt \
$ -subj "/CN="
Commande sensible — suppression récursive ou forcée (rm). Vérifie avant d'exécuter.
$sudo apt install -y nginx
$sudo cp /contrib/nginx.conf /etc/nginx/sites-available/netbox
$sudo sed -i 's/netbox.example.com//' /etc/nginx/sites-available/netbox
$sudo rm -f /etc/nginx/sites-enabled/default
$sudo ln -sf /etc/nginx/sites-available/netbox /etc/nginx/sites-enabled/netbox
$sudo nginx -t && sudo systemctl restart nginx
Vérification
$curl -skI https:/// | head -1
Retour attendu
HTTP/2 200

Terminé

Ouvre https:/// et connecte-toi avec l'administrateur créé. La page suivante de cette série ajoute utilisateurs et permissions, plugins et les réglages que tu voudras avant d'ouvrir NetBox à ton équipe.

Tout a fonctionné ?

Si tu as suivi cette page jusqu'au bout sur une vraie machine, dis-le. Ta validation est datée et enregistre ta stack : le prochain lecteur sur le même chemin sait que ça marche toujours.

Cette copie est en lecture seule. Pour dire que ça marche, ou que ça ne marche pas, ouvre une issue

Seuls tes choix de stack sont enregistrés, jamais tes valeurs. Le pseudo reste sur ce navigateur.