So installierst du NetBox IRM unter Debian 12
NetBox ist eine Infrastruktur-Ressourcen-Modellierung (IRM), die für die Netzwerkautomatisierung und das Infrastruktur-Engineering entwickelt wurde. Ursprünglich wurde es vom DigitalOcean-Team entwickelt und ist jetzt ein Open-Source-Projekt, das unter der Apache-2-Lizenz veröffentlicht wird. NetBox wurde im Python-Django-Webframework mit PostgreSQL als Standarddatenbank entwickelt und die Installation von NetBox ist anderen Python-Django-Webanwendungen sehr ähnlich.
In dieser Anleitung zeigen wir dir Schritt für Schritt, wie du die NetBox IRM Software auf einem Debian 12 Server installierst. Wir zeigen dir die Installation von NetBox mit PostgreSQL als Datenbankserver und Apache2 Webserver als Reverse Proxy. Außerdem wirst du deine NetBox-Installation mit SSl/TLS-Zertifikaten absichern.
Voraussetzungen
Bevor du fortfährst, solltest du sicherstellen, dass du Folgendes hast:
- Einen Debian 12 Server.
- Einen Nicht-Root-Benutzer mit Administrator-Rechten.
- Einen öffentlichen oder lokalen Domainnamen, der auf die IP-Adresse des Servers zeigt.
Installieren der Abhängigkeiten
NetBox ist eine Webanwendung, die auf dem Python Django Web Framework basiert. Sie kann mit dem PostgreSQL-Datenbankserver und dem Redis-Server für die Cache-Verwaltung installiert werden.
Im folgenden Schritt installierst du die Abhängigkeiten, die NetBox benötigt. Außerdem installierst du den Apache2 Webserver, der als Reverse Proxy für deine NetBox-Installation verwendet wird.
Um zu beginnen, führe den folgenden apt-Befehl aus, um dein Debian-Repository zu aktualisieren.
sudo apt update
Dann installierst du die Paketabhängigkeiten für deine NetBox IRM-Installation.
sudo apt install apache2 postgresql postgresql-common libpq-dev redis-server git python3 python3-pip python3-venv python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev libssl-dev zlib1g-dev
Gib y ein, um mit der Installation von Abhängigkeiten wie dem Apache2 Webserver, dem PostgreSQL Datenbankserver, Redis, Git, Python3 Paketen und einigen zusätzlichen Systembibliotheken fortzufahren.
Nachdem die Abhängigkeiten installiert sind, überprüfe die einzelnen Abhängigkeiten, indem du den folgenden Befehl ausführst.
Überprüfe den apache2-Dienst, um sicherzustellen, dass der Dienst aktiviert ist und läuft.
sudo systemctl is-enabled apache2 sudo systemctl status apache2
Wenn apache2 läuft und aktiviert ist, solltest du eine Ausgabe wie die folgende erhalten:
Überprüfe den PostgreSQL-Dienst, um sicherzustellen, dass der Dienst läuft und aktiviert ist.
sudo systemctl is-enabled postgresql sudo systemctl status postgresql
Der PostgreSQL-Dienst sollte wie folgt laufen und aktiviert sein:
Überprüfe nun den Redis-Dienst, um sicherzustellen, dass der Dienst läuft und aktiviert ist.
sudo systemctl is-enabled redis sudo systemctl status redis
Der Redis-Dienst sollte wie folgt laufen und aktiviert sein
Überprüfe abschließend die Python-Version mit dem folgenden Befehl. Die neueste Version von NetBox IRM unterstützt Python v3.9, 3.10 und 3.11.
python3 --version
Du solltest sehen, dass Python 3.11 auf deinem Debian-Rechner installiert ist.
PostgreSQL Server konfigurieren
Nachdem du die Abhängigkeiten installiert hast, musst du eine neue PostgreSQL-Datenbank und einen neuen Benutzer anlegen, die NetBox verwenden soll. Dazu musst du dich über die Befehlszeile psql am PostgreSQL-Server anmelden.
Melde dich beim PostgreSQL-Server an, indem du den unten stehenden Befehl ausführst.
sudo -u postgres psql
Führe die folgenden Abfragen aus, um einen neuen Benutzer netbox mit dem Passwort p4ssw0rd zu erstellen. Erstelle dann eine neue Datenbank netboxdb mit dem Eigentümer netbox.
CREATE USER netbox LOGIN CREATEDB PASSWORD 'p4ssw0rd'; CREATE DATABASE netboxdb OWNER netbox;
Überprüfe anschließend die Liste der Benutzer und Datenbanken in deinem PostgreSQL, indem du den folgenden Befehl ausführst.
\l \du
Du solltest sehen, dass die Datenbank netboxdb und der Benutzer netbox auf deinem PostgreSQL-Server erstellt wurden.
Gib quit ein, um den PostgreSQL-Server zu verlassen.
Melde dich anschließend mit dem neuen Benutzer netbox in der Datenbank netboxdb bei PostgreSQL an. So stellst du sicher, dass der Benutzer netbox sich mit der Datenbank netboxdb verbinden kann.
sudo -u postgres psql --username netbox --password --host localhost netboxdb
Sobald du verbunden bist, überprüfe deine Verbindung mit der folgenden Abfrage.
\conninfo
In der folgenden Ausgabe solltest du sehen, dass du dich über den Benutzer netbox mit der Datenbank netboxdb verbunden hast.
Tippe erneut quit ein, um deinen PostgreSQL-Server zu verlassen.
Redis Server konfigurieren
Nachdem du die PostgreSQL-Datenbank und den Benutzer erstellt hast, musst du als Nächstes den Redis-Server konfigurieren, der für die Cache-Verwaltung der NetBox verwendet werden soll. Dazu änderst du die Redis-Konfiguration /etc/redis/redis.conf und überprüfst deine Änderungen mit redis-cli.
Öffne die Standard-Redis-Konfiguration /etc/redis/redis.conf mit dem folgenden Editor-Befehl nano.
sudo nano /etc/redis/redis.conf
Entferne den Kommentar in der Option requirepass und gib dein Passwort ein, mit dem du deinen Redis-Server sichern willst.
requirepass p4ssw0rdNetBox
Wenn du fertig bist, speichere und beende die Datei.
Führe nun den folgenden systemctl-Befehl aus, um den Redis-Dienst neu zu starten und die vorgenommenen Änderungen zu übernehmen.
sudo systemctl restart redis
Um sicherzustellen, dass alles funktioniert, kannst du Redis über redis-cli überprüfen. Greife mit dem folgenden redis-cli-Befehl auf deinen Redis-Server zu.
redis-cli
Authentifiziere dich beim Redis-Server mit der folgenden AUTH-Abfrage und ändere unbedingt das Passwort.
AUTH p4ssw0rdNetBox
Sobald du dich authentifiziert hast, solltest du die Ausgabe OK erhalten.
Führe nun die folgende PING-Abfrage aus, um sicherzustellen, dass deine Verbindung erfolgreich ist.
PING
Wenn sie erfolgreich war, solltest du die Ausgabe PONG vom Redis-Server erhalten.
Installation von NetBox IRM
Im folgenden Abschnitt wirst du NetBox IRM herunterladen und auf deinem System installieren. Du lädst den NetBox-Quellcode über Git herunter und konfigurierst ihn, indem du die NetBox-Konfiguration änderst, die Datenbank PostgreSQL-Server und Redis hinzufügst und einen Administratorbenutzer für NetBox anlegst.
Führe zunächst den folgenden Befehl aus, um einen neuen systemd-Benutzer netbox zu erstellen, der für die NetBox-Installation verwendet wird.
sudo useradd -r -d /opt/netbox -s /usr/sbin/nologin netbox
Lade den NetBox IRM-Quellcode über git herunter und ändere den Eigentümer des Verzeichnisses /opt/netbox auf den Benutzer netbox.
cd /opt; sudo git clone -b master --depth 1 https://github.com/netbox-community/netbox.git sudo chown -R netbox:netbox /opt/netbox
Als Nächstes verschiebst du dein Arbeitsverzeichnis nach /opt/netbox und generierst den geheimen NetBox-Schlüssel mit dem Skript generate_secret_key.py. Achte darauf, dass du den generierten geheimen Schlüssel kopierst, der für deine NetBox-Installation verwendet werden soll.
cd /opt/netbox/netbox/netbox sudo -u netbox python3 ../generate_secret_key.py
Kopiere die Standardkonfiguration configuration_example.py nach configuration.py und öffne dann die neue Datei configuration.py mit dem folgenden nano-Editor-Befehl.
sudo -u netbox cp configuration_example.py configuration.py sudo -u netbox nano configuration.py
Füge im Abschnitt ALLOWED_HOSTS deinen Domainnamen oder die IP-Adresse deines Servers ein.
ALLOWED_HOSTS = ['netbox.hwdomain.io', '192.168.10.15']
Gib im Abschnitt DATABASE die Details deiner PostgreSQL-Datenbank ein, einschließlich Datenbankname, Benutzer, Passwort, Host und Port.
# database configuration DATABASE = { 'NAME': 'netboxdb', # Database name 'USER': 'netbox', # PostgreSQL username 'PASSWORD': 'p4ssw0rd', # PostgreSQL password 'HOST': 'localhost', # Database server 'PORT': '', # Database port (leave blank for default) 'CONN_MAX_AGE': 300, # Max database connection age (seconds) }
Im Abschnitt REDIS gibst du die Details deines Redis-Servers für die Aufgaben und Caching-Optionen ein.
# Redis cache configuration REDIS = { 'tasks': { 'HOST': 'localhost', # Redis server 'PORT': 6379, # Redis port 'PASSWORD': 'p4ssw0rdNetBox', # Redis password (optional) 'DATABASE': 0, # Database ID 'SSL': False, # Use SSL (optional) }, 'caching': { 'HOST': 'localhost', 'PORT': 6379, 'PASSWORD': 'p4ssw0rdNetBox', 'DATABASE': 1, # Unique ID for second database 'SSL': False, } }
Zuletzt gibst du deinen geheimen Schlüssel in den Abschnitt SECRET_KEY ein.
# Secret key SECRET_KEY = 'ZjYbgz$)j!NnqJcZLR!NB2BCz4(Yyk=o^Xr(1sTIrM)ZyiE%nk'
Wenn du fertig bist, speichere und beende die Datei.
Als nächstes führst du das Skript /opt/netbox/upgrade.sh aus, um deine NextBox-Installation zu starten. Es erstellt eine neue virtuelle Python-Umgebung, installiert einige Python-Pakete und -Bibliotheken, führt die Datenbankmigration auf deinen PostgreSQL-Server durch und generiert statische Dateien für NextBox.
sudo -u netbox /opt/netbox/upgrade.sh
Nachfolgend siehst du eine ähnliche Ausgabe, die du während des Prozesses erhalten wirst.
Der Prozess der Datenbankmigration.
Der Prozess der Generierung statischer Dateien.
Unten siehst du die Ausgabe, wenn die Installation abgeschlossen ist.
Nachdem NetBox konfiguriert ist, musst du einen Administrator-Benutzer für NetBox anlegen. Melde dich dazu in der virtuellen Python-Umgebung an, die du mit dem folgenden Befehl erstellt hast.
source /opt/netbox/venv/bin/activate
Wechsle in das Verzeichnis /opt/netbox/netbox und führe das Skript manage.py aus, um einen NetBox-Administratorbenutzer anzulegen.
cd /opt/netbox/netbox python3 manage.py createsuperuser
Wenn du dazu aufgefordert wirst, gib deine Administrator-E-Mail-Adresse, deinen Benutzernamen und dein Passwort ein.
Führe anschließend das Skript manage.py erneut aus, um deine NetBox-Installation zu überprüfen. Damit wird NetBox auf deiner lokalen IP-Adresse mit Port 8000 ausgeführt.
python3 manage.py runserver 0.0.0.0:8000 --insecure
Öffne deinen Webbrowser und rufe die IP-Adresse deines Servers gefolgt von Port 8000 auf, z. B. http://192.168.10.15:8000/. Wenn deine Installation erfolgreich war, solltest du die NetBox IRM-Indexseite erhalten und von dort aus auf die Schaltfläche Login oben rechts klicken.
Gib deinen Admin-Benutzer und dein Passwort ein, die du erstellt hast, und klicke dann auf Sign In.
Wenn alles geklappt hat, solltest du das NetBox-Dashboard wie folgt sehen:
Gehe zurück zu deinem Terminal und drücke Strg+c, um den Prozess zu beenden.
NetBox als Systemd-Dienst ausführen
Jetzt hast du NetBox IRM auf deinem Debian-Rechner installiert. Um die Verwaltung von NetBox zu vereinfachen, wirst du NetBox als systemd-Dienst ausführen, mit dem du NetBox über das Dienstprogramm systemctl steuern kannst.
Kopiere die Datei /opt/netbox/contrib/gunicorn.py nach /opt/netbox/gunicorn.py und öffne die Datei gunicorn.py mit dem unten stehenden Editor-Befehl nano.
sudo -u netbox cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py sudo -u netbox nano /opt/netbox/gunicorn.py
Ändere die Option bind wie folgt. Dadurch wird deine NetBox-Installation über gunicorn auf localhost port 8001 ausgeführt.
bind = '127.0.0.1:8001'
Speichere und schließe die Datei, wenn du fertig bist.
Als nächstes kopierst du die systemd-Dienstdateien für NetBox in das Verzeichnis /etc/systemd/system/. Dadurch werden die Dienstdateien netbox, netbor-rq und netbook-housekeeping in das Verzeichnis /etc/systemd/system/ kopiert. Lade dann den systemd Manager neu, um die neuen Änderungen auf deinem System anzuwenden.
sudo cp -v /opt/netbox/contrib/*.service /etc/systemd/system/ sudo systemctl daemon-reload
Jetzt kannst du die Dienste netbox und netbox-rq mit dem folgenden systemctl-Befehl starten und aktivieren. Nachdem du den Befehl ausgeführt hast, wird deine NetBox-Installation im Hintergrund als systemd-Dienst ausgeführt.
sudo systemctl start netbox netbox-rq netbox-housekeeping sudo systemctl enable netbox netbox-rq netbox-housekeeping
Überprüfe abschließend den netbox- und netbox-rq-Dienst mit dem folgenden Befehl.
sudo systemctl status netbox sudo systemctl status netbox-rq
Die folgende Ausgabe zeigt, dass der netbox-Dienst läuft und aktiviert ist.
Die folgende Ausgabe bestätigt, dass der netbox-rq-Dienst ausgeführt wird und aktiviert ist.
Apache als Reverse Proxy konfigurieren
Im folgenden Schritt konfigurierst du Apache2 als Reverse-Proxy. Vergewissere dich vorher, dass ein Domainname auf die IP-Adresse deines Servers zeigt; du kannst auch einen lokalen Domainnamen verwenden.
Wenn du eine lokale Domain verwendest, kannst du den folgenden openssl-Befehl ausführen, um SSL-Zertifikate zu erzeugen. Wenn du eine öffentliche Domain verwendest, kannst du Certbot verwenden, um SSL-Zertifikate von Letsencrypt zu erzeugen.
openssl req -x509 -newkey rsa:4096 -sha256 -days 365 \ -nodes -keyout /etc/ssl/private/netbox.key -out /etc/ssl/certs/netbox.crt -subj "/CN=netbox.hwdomain.io" \ -addext "subjectAltName=DNS:netbox.hwdomain.io,IP:192.168.10.15"
Kopiere nun das Beispiel für die Konfiguration des virtuellen Apache-Hosts für NetBox nach /etc/apache2/sites-available/netbox.conf. Ändere dann die Datei /etc/apache2/sites-available/netbox.conf mit dem folgenden nano-Editor-Befehl.
sudo cp /opt/netbox/contrib/apache.conf /etc/apache2/sites-available/netbox.conf sudo nano /etc/apache2/sites-available/netbox.conf
Ersetze den Domainnamen durch deine Domain und ändere den Pfad der SSL/TLS-Zertifikate durch die richtige Pfaddatei.
<VirtualHost *:80> # CHANGE THIS TO YOUR SERVER'S NAME ServerName netbox.hwdomain.io
…
</VirtualHost>
<VirtualHost *:443>
ProxyPreserveHost On
# CHANGE THIS TO YOUR SERVER’S NAME
ServerName netbox.hwdomain.io
SSLEngine on
SSLCertificateFile /etc/ssl/certs/netbox.crt
SSLCertificateKeyFile /etc/ssl/private/netbox.key
…
</VirtualHost>
Speichere und beende die Datei, wenn du fertig bist.
Führe nun den folgenden Befehl aus, um einige Apache2-Module zu aktivieren, die für NetBox benötigt werden.
sudo a2enmod ssl proxy proxy_http headers rewrite
Führe danach den folgenden Befehl aus, aktiviere die virtuelle Hostdatei netbox.conf und überprüfe deine Apache2-Konfigurationen, um sicherzustellen, dass du die richtige Syntax hast.
sudo a2ensite netbox.conf sudo apachectl configtest
Wenn du eine korrekte Apache2-Syntax hast, solltest du die Ausgabe Syntax OK erhalten.
Führe nun den folgenden Befehl aus, um den Apache2-Dienst neu zu starten und die vorgenommenen Änderungen zu übernehmen.
sudo systemctl restart apache2
Deine NetBox-Installation sollte nun über den Domainnamen erreichbar sein.
Öffne deinen Webbrowser und rufe den Domainnamen deiner NetBox-Installation auf, z. B. https://netbox.hwdomain.io/. Wenn alles gut läuft, solltest du die NetBox-Indexseite wie die folgende sehen:
Nach dem Einloggen solltest du das NetBox IRM Dashboard sehen, das mit dem Domainnamen unter dem Apache2 Reverse Proxy läuft.
Fazit
Damit hast du NetBox IRM auf dem Debian 12 Server mit dem PostgreSQL Datenbankserver und dem Apache2 Webserver als Reverse Proxy installiert. Außerdem hast du deine NetBox-Installation mit SSL/TLS-Zertifikaten abgesichert.