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

Repo aktualisieren

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.

Abhängigkeiten installieren

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:

apache2 prüfen

Ü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:

postgresql prüfen

Ü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

Redis prüfen

Ü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.

python prüfen

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;

Datenbankbenutzer anlegen

Ü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.

Datenbankbenutzer prüfen

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.

Verbindung verifizieren

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.

redis konfigurieren

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

Benutzer erstellen Download 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

Geheimnis erzeugen

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.

Netbox-Installation

Der Prozess der Datenbankmigration.

Datenbankmigration

Der Prozess der Generierung statischer Dateien.

statische Dateien erzeugen

Unten siehst du die Ausgabe, wenn die Installation abgeschlossen ist.

Installation beendet

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.

Superuser erstellen

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

laufende Netbox

Ö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.

NETBOX HOME

Gib deinen Admin-Benutzer und dein Passwort ein, die du erstellt hast, und klicke dann auf Sign In.

LOGIN NETBOX

Wenn alles geklappt hat, solltest du das NetBox-Dashboard wie folgt sehen:

netbox daSHBOARD

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.

Netbox prüfen

Die folgende Ausgabe bestätigt, dass der netbox-rq-Dienst ausgeführt wird und aktiviert ist.

netbox rq

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.

apache2 netbox

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:

netbox home

Nach dem Einloggen solltest du das NetBox IRM Dashboard sehen, das mit dem Domainnamen unter dem Apache2 Reverse Proxy läuft.

netbox dashboard

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.

Das könnte dich auch interessieren …