how-to-install-and-manage Help

Netbox

Netbox est une application web open source conçue pour la gestion et la documentation des infrastructures réseau. Elle permet de modéliser les équipements, les adresses IP, les VLANs, les racks, les câbles, etc. Son intégration dans notre projet nous offre une vue centralisée et dynamique de notre SI (Système d'Information).

Architecture

Nous avons choisi d’installer Netbox sur notre VPS Saphire pour qu’il serve de référentiel unique pour tout ce qui concerne notre architecture réseau. Il est notamment lié à Xen Orchestra, qui nous permet de superviser et gérer nos machines virtuelles.

Environnement

Nous avons décidé de passer le VPS Saphire sous l'OS NixOS. Pour cela, nous devons faire toutes les installations dessus via une configuration nix.

Prérequis

Template NixOS

Dans un premier temps, on doit copier un template pour configurer notre vps à notre convenance. Le template se trouve au lien suivant.

nix flake init --template "git+ssh://git@gitlab.innovalia.cc:2225/nix/nixos-configs/common.git#server" nom_dossier_nix

Configuration basique

  1. disko.nix: Il faut changer le chemin du disque par celui de la machine distante souhaitée.

  2. networking.nix: On doit mettre l'adresse ipv4 et ipv6 qui nous ont été fournis lors de l'achat du VPS. À cela, on doit ajouter les ports à ouvrir pour nos futurs services :

    networking.firewall.interfaces.eth0.allowedTCPPorts = [80 443 8080 3900];
  3. user.nix: Dans ce fichier, on doit créer notre utilisateur et lui fournir un mot de passe ainsi que les différentes clés SSH qui pourront être utilisé. Pour générer un mot de passe voici la commande à effectuer :

    nix run "nixpkgs#mkpassd" -- -m sha-512 StrongPassword
  4. hardware-configuration.nix: Pour générer ce fichier, il faut utiliser cette commande :

    nixos-generate-config --no-filesystems --show-hardware-config > hardware/hardware-configuration.nix

Liaison avec Netbird

Afin de lier notre VPS à Netbird, nous devons ajouter un fichier à notre configuration NixOS. En effet, un fichier équivaut à un service ou une fonction. À la création d'un nouveau fichier, nous devons l'ajouter à notre module présent dans le flake.nix:

nixosConfigurations.saphire = nixpkgs.lib.nixosSystem { modules = [ ./disko.nix ./networking.nix ./misc.nix ./journal.nix ./users.nix ./hardware-configuration.nix ./netbird.nix disko.nixosModules.disko common.nixosModules.common common.nixosModules.server ]; };

Dans le fichier netbird.nix, il faut ajouter une ligne afin d'activer le service Netbird :

{ services.netbird.enable = true; }

Une fois la configuration appliquée, on va connecter notre netbird grâce à cette commande et la génération d'une clé d'accès sur Netbird :

netbird up -m https://netbird.daniel-thomas.fr -k KEY

Application de la configuration

Pour appliquer cette nouvelle configuration, nous devons le faire à distance depuis notre machine de développement qui contient la configuration :

NIX_SSHOPTS=-t nixos-rebuild --impure switch --use-remote-sudo --target-host innovalia@45.88.180.139 --flake .#saphire

Fichier Netbox.nix

Comme pour Netbird, on peut ajouter un fichier par service en plus voulu. Nous devons donc naturellement créer un fichier netbox.nix qui va être ensuite ajouté à notre module mis dans flake.nix:

nixosConfigurations.saphire = nixpkgs.lib.nixosSystem { modules = [ ./netbox.nix ]; };

Afin de remplir notre configuration, on doit se baser sur le wiki de Nixos. La première chose à faire est de créer une clé secrète sur notre machine :

mkdir -p /var/lib/netbox/ nix-shell -p openssl openssl rand -hex 50 > /var/lib/netbox/secret-key-file

Nous pouvons ensuite implémenter la configuration dans notre fichier netbox.nix:

{ config, pkgs, ... }: { services.netbox = { enable = true; package = pkgs.netbox_4_1; secretKeyFile = "/var/lib/netbox/secret-key-file"; settings = { ALLOWED_HOSTS = ["*"]; CSRF_TRUSTED_ORIGINS = ["http://IP_HOST:8080"]; }; }; services.nginx = { enable = true; user = "netbox"; recommendedTlsSettings = false; clientMaxBodySize = "25m"; virtualHosts."IP_HOST" = { locations = { "/" = { proxyPass = "http://[::1]:8001"; # proxyPass = "http://${config.services.netbox.listenAddress}:${config.services.netbox.port}"; }; "/static/" = {alias = "${config.services.netbox.dataDir}/static/";}; }; listen = [ { addr = "0.0.0.0"; port = 8080; ssl = false; } ]; forceSSL = false; enableACME = false; serverName = "netbox"; }; }; }

Une fois un rebuild de la configuration fait, on doit créer un super utilisateur sur notre machine :

$ netbox-manage createsuperuser Username (leave blank to use 'netbox'): Email address: Password: Password (again): Superuser created successfully.

Netbox est maintenant accessible à l'adresse indiquée dans la configuration (45.88.180.139) sur le port 8080.

Liaison avec Xen Orchestra

Dans l'interface de Xen Orchestra, la gestion des plugins s'effectue dans l'onglet Settings > Plugins. Dedans, il faut chercher le plugin "Netbox" et utiliser le lien proposé permettant de suivre la procédure d'ajout :

Screenshot 2025-04-21 201922.png

Une fois toutes les étapes de liaison effectuée, on doit se retrouver avec une configuration comme suit :

Screenshot 2025-04-24 082147.png

Enfin, lorsque la synchronisation avec Netbox est terminé, nous pouvons voir apparaitre nos machines :

Screenshot 2025-07-15 170020.png
Last modified: 15 July 2025