So installierst du NetBox IRM unter Debian 11

NetBox ist eine Software für die Infrastruktur-Ressourcen-Modellierung (IRM), die für die Netzwerkautomatisierung und das Infrastruktur-Engineering entwickelt wurde. Ursprünglich wurde sie vom DigitalOcean-Team entwickelt und ist nun 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.

NetBox hilft dir bei der Verwaltung deiner Infrastruktur, die Folgendes umfasst:

  • DCIM (Data Center Infrastructure Management)
  • IPAM (IP-Adressverwaltung)
  • Datenkreise
  • Verbindungen (Netzwerk, Konsole und Strom)
  • Geräte-Racks
  • Virtualisierung
  • Geheimnisse

Dieser Artikel führt dich durch die Schritte zur Installation des NetBox Infrastructure Resource Modeling auf einem Debian 11 Server. Dieser Artikel beinhaltet die grundlegende Installation der PostgreSQL-Datenbank, des Redis-Servers und die grundlegende Konfiguration von Apache2 als Reverse Proxy. Am Ende wirst du die NetBox auf deinem Debian 11 Server zum Laufen bringen und HTTPS/SSL aktivieren.

Voraussetzungen

Um dieses Tutorial durchzuführen, brauchst du die folgenden Voraussetzungen:

  • Eine Debian 11 Serverinstanz.
  • Einen Nicht-Root-Benutzer mit Root-/Administrator-Rechten.
  • Einen Domainnamen, der auf deinen Debian Server zeigt.

Installation des PostgreSQL-Servers

Die NetBox-Anwendung unterstützt nur PostgreSQL als Standarddatenbank. Du installierst also PostgreSQL auf deinem Debian-Server. Anschließend erstellst du eine neue Datenbank und einen neuen Benutzer für deine NetBox-Installation.

Die aktuelle Version von NetBox benötigt mindestens PostgreSQL v10 oder höher. Unter Debian 11 bietet das Repository den Standard PostgreSQL Server v13.

Um zu beginnen, führe den folgenden apt-Befehl aus, um dein Debian-Repository zu aktualisieren und den Paketindex zu aktualisieren.

sudo apt update

Installiere nun den PostgreSQL-Server mit dem folgenden apt-Befehl. Gib zur Bestätigung Y ein und drücke ENTER. Die Installation von PostgreSQL beginnt.

sudo apt install postgresql postgresql-common

postgresql installieren

Wenn du mit der PostgreSQL-Installation fertig bist, führe den folgenden systemctl-Befehl aus, um den PostgreSQL-Dienst zu überprüfen und zu verifizieren. Du solltest sehen, dass PostgreSQL aktiviert ist und beim Systemstart automatisch ausgeführt wird. Und der aktuelle Status des PostgreSQL-Dienstes ist „running“.

sudo systemctl is-enabled postgresql
sudo systemctl status postgresql

check postgresql service

Als nächstes erstellst du eine neue PostgreSQL-Datenbank und einen neuen Benutzer für Nextbox. Dazu musst du dich an der PostgreSQL-Konsole anmelden.

Führe den folgenden Befehl aus, um dich in der PostgreSQL-Konsole mit der Rolle„postgres“ anzumelden.

sudo -u postgres psql

Führe nun die folgenden Abfragen in der PostgreSQL-Konsole aus, um eine neue Datenbank und einen neuen Benutzer zu erstellen. In diesem Beispiel erstellen wir eine neue Datenbank mit dem Namen„netboxdb“ und den PostgreSQL-Benutzer„netbox“ mit dem Passwort„NetBoxRocks„.

CREATE DATABASE netboxdb;
CREATE USER netbox WITH ENCRYPTED PASSWORD 'NetBoxRocks';
GRANT ALL PRIVILEGES ON DATABASE netboxdb TO netbox;

Drücke nun„Strg+d„, um die PostgreSQL-Konsole zu verlassen oder gib„\q“ für quit ein.

Popstgresql-Datenbank erstellen

Um die Datenbank und den Benutzer zu überprüfen, führe den folgenden Befehl aus. Dadurch wird eine Verbindung zur PostgreSQL-Shell mit dem Benutzer„netbox“ zur Datenbank„netboxdb“ auf deinem PostgreSQL-Server hergestellt.

Wenn du nach dem Passwort für die Datenbank gefragt wirst, gibst du das Passwort„NetBoxRocks“ ein.

sudo -u postgres psql --username netbox --password --host localhost netboxdb

Nachdem du dich bei der PostgreSQL-Konsole und der Datenbank„netboxdb“ angemeldet hast, führe die folgende Abfrage aus, um die aktuelle Verbindung zu überprüfen. Du solltest sehen, dass du mit der PostgreSQL-Datenbank„netboxdb“ mit dem Benutzer„netbox“ verbunden bist.

\conninfo

Postgresql-Benutzerdatenbank verifizieren

Drücke„Strg+d„, um die PostgreSQL-Konsole zu verlassen, oder gib„\q“ für quit ein.

Installation von Redis Server

Redis ist eine In-Memory-Schlüsselwertdatenbank, die von NetBox für das Caching und die Warteschlangenbildung verwendet wird. Jetzt installierst du den Redis-Server auf deinem Debian-Server.

Zum Zeitpunkt der Erstellung dieses Artikels benötigte die letzte Version von NetBox Redis v4.0 oder höher. Das neueste Debian 11 Repository bietet Redis v5.6.

Um die Redis-Installation zu starten, führe den folgenden apt-Befehl aus. Gib Y ein, um die Installation zu bestätigen, und drücke ENTER.

sudo apt install redis-server

redis installieren

Wenn die Installation abgeschlossen ist, führe die folgenden systemctl-Befehle aus, um den Redis-Dienst zu überprüfen und zu bestätigen. Du solltest sehen, dass der Redis-Dienst aktiviert ist und beim Systemstart automatisch ausgeführt wird. Und der aktuelle Status des Redis-Dienstes ist „running“.

sudo systemctl is-enabled redis-server
sudo systemctl status redis-server

Redis-Dienst prüfen

Die Standardinstallation von Redis erfolgt ohne Authentifizierung. Für die Produktionsumgebung wird empfohlen, eine Authentifizierung auf dem Redis-Server zu verwenden. Um die Redis-Authentifizierung zu aktivieren, musst du die Konfigurationsdatei„/etc/redis/redis.conf“ ändern

Führe den folgenden Befehl aus, um die Redis-Konfigurationsdatei„/etc/redis/redis.conf“ zu bearbeiten.

sudo nano /etc/redis/redis.conf

Dekommentiere die Option„requirepass“ und gib das Passwort für die Authentifizierung von Redis ein. In diesem Beispiel verwenden wir das Passwort„RedisPasswordNetBox„.

requirepass RedisPasswordNetBox

Wenn du fertig bist, speichere und schließe die Datei.

Führe nun den folgenden Befehl aus, um den Redis-Dienst neu zu starten und die neuen Änderungen anzuwenden.

sudo systemctl restart redis-server

Um die Redi-Authentifizierung zu überprüfen, führe den unten stehenden Befehl „redis-cli“ aus, um dich mit der Redis-Konsole zu verbinden.

redis-cli

Führe nun den folgenden Befehl aus, um deine Redis-Authentifizierung zu überprüfen. Wenn dein Passwort korrekt ist, siehst du die Ausgabe„OK„.

AUTH RedisPasswordNetBox

Redis-Authentifizierung einrichten

Drücke nun„Strg+d„, um die Redis-Konsole zu verlassen.

Installation von NetBox IRM

NetBox ist eine Open-Source-Webanwendung, die mit dem Python Django-Framework geschrieben wurde. Daher ist die Installation von NetBox dem Python Django Web-Framework sehr ähnlich. Die neueste Version von Netbox benötigt mindestens Python v3.8 oder höher.

Bevor du mit der Installation von NetBox beginnst, führe den folgenden Befehl aus, um einen neuen Systembenutzer„netbox“ anzulegen, der zum Ausführen der NetBox-Webanwendung verwendet werden soll.

sudo useradd -r -d /opt/netbox -s /usr/sbin/nologin netbox

Installiere Python3 und einige Paketabhängigkeiten mit dem unten stehenden apt-Befehl.

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

Benutzer erstellen Netbox herunterladen Abhängigkeiten installieren

Wenn die Installation abgeschlossen ist, führe den folgenden Befehl aus, um ein neues NetBox-Installationsverzeichnis „/opt/netbox“ zu erstellen und klone den NetBox-Quellcode mit dem Git-Befehl.

mkdir -p /opt/netbox; cd /opt/netbox
sudo git clone -b master --depth 1 https://github.com/netbox-community/netbox.git .

Ändere nun mit dem folgenden Befehl die Eigentumsrechte am NetBox-Installationsverzeichnis auf den richtigen Benutzer„netbox„.

sudo chown -R netbox:netbox /opt/netbox

Netbox herunterladen

Als Nächstes verschiebst du das Arbeitsverzeichnis nach„/opt/netbox/netbox/netbox“ und kopierst die Beispielkonfiguration von NetBox„configuration_example.py“ nach„configuration.py„.

cd /opt/netbox/netbox/netbox
sudo -u netbox cp configuration_example.py configuration.py

Bevor du die NetBox-Konfigurationsdatei bearbeitest, führe den folgenden Befehl aus, um den„SECRET_KEY“ für NetBox zu erzeugen. Kopiere den generierten„SECRET_KEY“ in deinen Editor. Dieser wird später beim Bearbeiten der Datei„configuration.py“ verwendet.

sudo -u netbox python3 ../generate_secret_key.py

Führe den folgenden Befehl aus, um die Datei„configuration.py“ zu bearbeiten.

sudo -u netbox nano configuration.py

Jetzt musst du die NetBox-Installation wie unten beschrieben einrichten:

  • In der Konfiguration„ALLOWED_HOSTS“ gibst du den Domainnamen für die NetBox-Installation und die IP-Adresse des Servers ein. In diesem Beispiel wird die NetBox unter dem Domainnamen„netbox.hwdomain.io“ und der Server-IP-Adresse„192.168.5.20“ installiert.
  • Gib die Details der PostgreSQL-Datenbank für deine NetBox in der Einstellung„DATABASE“ ein.
  • Gib das Redis-Passwort in der Konfiguration„REDIS“ ein. Achte darauf, dass du das Passwort in den beiden Abschnitten„Aufgaben“ und„Caching“ änderst.
  • Zum Schluss fügst du den generierten„SECRET_KEY“ in die Datei ein.
# domain and IP address
ALLOWED_HOSTS = ['netbox.hwdomain.io', '192.168.5.20']
# database configuration
DATABASE = {
'NAME': 'netboxdb',               # Database name
'USER': 'netbox',               # PostgreSQL username
'PASSWORD': 'NetBoxRocks', # PostgreSQL password
'HOST': 'localhost',            # Database server
'PORT': '',                     # Database port (leave blank for default)
'CONN_MAX_AGE': 300,            # Max database connection age (seconds)
}

# Redis cache configuration
REDIS = {
'tasks': {
'HOST': 'localhost',      # Redis server
'PORT': 6379,             # Redis port
'PASSWORD': 'RedisPasswordNetBox',           # Redis password (optional)
'DATABASE': 0,            # Database ID
'SSL': False,             # Use SSL (optional)
},
'caching': {
'HOST': 'localhost',
'PORT': 6379,
'PASSWORD': 'RedisPasswordNetBox',
'DATABASE': 1,            # Unique ID for second database
'SSL': False,
}
}

# Secret key
SECRET_KEY = 'Slr-8H@1XMcW!22_UYNLcWw+_5=$$=8mtL#JImfOlD*-KiuI6h'

Wenn du fertig bist, speichere und schließe die Datei.

Um die NetBox-Installation zu starten, kannst du nun das Skript„upgrade.sh“ wie unten beschrieben ausführen.

sudo -u netbox /opt/netbox/upgrade.sh

Dieses Skript installiert und konfiguriert die NetBox-Installation automatisch. Die ausführliche Version findest du unten:

  • Damit wird eine neue virtuelle Python-Umgebung für deine NetBox-Installation erstellt.
  • Es installiert auch einige Python-Abhängigkeiten und -Bibliotheken für NetBox.
  • Ausführen der Datenbankmigration für NetBox.
  • Erzeugen der Ressourcen für statische Dateien für NetBox.

Unten siehst du die Ausgabe, wenn die Installation beginnt.

Installation der Netbox

Wenn die Installation abgeschlossen ist, siehst du die folgende Ausgabe.

Netbox-Installation abgeschlossen

NetBox-Administrator-Benutzer anlegen

Du hast die Grundinstallation der NetBox abgeschlossen. Jetzt musst du einen neuen Administrator-Benutzer für die NetBox erstellen. Dies geschieht auf ähnliche Weise, wenn du einen Django-Admin-Benutzer anlegen willst.

Führe den folgenden Befehl aus, um die virtuelle Python-Umgebung zu aktivieren.

source /opt/netbox/venv/bin/activate

Verschiebe das Arbeitsverzeichnis nach„/opt/netbox/netbox„. Führe dann das Skript„manage.py“ aus, um einen neuen Admin-Benutzer für die NetBox zu erstellen.

cd /opt/netbox/netbox
python3 manage.py createsuperuser

Gib den Benutzernamen, die E-Mail-Adresse und das Passwort für NextBox ein.

Nachdem die Admin-Konfiguration abgeschlossen ist, rufst du den folgenden Befehl auf, um das notwendige Cron-Skript für NetBox einzurichten, das täglich automatisch ausgeführt wird.

sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping

netbox admin Benutzer erstellen

Zum Schluss führst du den folgenden Befehl aus, um deine NetBox-Installation zu testen und zu überprüfen. Wenn deine Installation korrekt ist, wirst du sehen, dass die NetBox jetzt auf dem Port„8000“ läuft.

python3 manage.py runserver 0.0.0.0:8000 --insecure

Netbox-Installation prüfen

Drücke nun„Strg+c“ im Terminal, um den Vorgang zu beenden. Führe dann den Befehl„deaktivieren“ aus, um die virtuelle Python-Umgebung zu verlassen.

NetBox als Systemd-Dienst einrichten

Nachdem du die Admin-Konfiguration für NetBox abgeschlossen hast. Jetzt richtest du die NetBox als Systemd-Dienst ein. Der NetBox-Dienst wird unter dem Gunicorn- und HTTP-Reverse-Proxy laufen.

Alle für die Konfiguration der NetBox erforderlichen Gunicorn- und systemd-Skripte sind standardmäßig im Verzeichnis „/opt/netbox/contrib“ verfügbar.

Führe den folgenden Befehl aus, um die Gunicorn-Konfiguration nach „/opt/netbox/gunicorn.py“ zu kopieren. Bearbeite die Datei dann mit dem Editor nano.

sudo -u netbox cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
sudo -u netbox nano /opt/netbox/gunicorn.py

In der Standardkonfiguration wird die NetBox-Anwendung auf localhost mit dem Port„8001“ ausgeführt. Du kannst die Standardkonfiguration beibehalten oder je nach deiner Umgebung Änderungen vornehmen.

bind = '127.0.0.1:8001'

Speichere und schließe die Konfigurationsdatei, wenn du fertig bist.

Als Nächstes kopierst du die systemd-Dienstdateien mit folgendem Befehl in das Verzeichnis„/etc/systemd/system„. Dadurch werden zwei Dienste aktiviert: der„netbox„-Dienst als Hauptdienst für deine NetBox-Anwendung und der„netbox-rq„-Dienst für den NetBox-Request-Queue-Dienst.

sudo cp -v /opt/netbox/contrib/*.service /etc/systemd/system/

Lade nun den Systemmanager neu, um die neuen NetBox-Dienstdateien anzuwenden.

sudo systemctl daemon-reload

Nachdem du den systemd Manager neu geladen hast, kannst du die Dienste„netbox“ und„netbox-rq“ mit dem systemctl-Befehl wie unten beschrieben starten. Beide Dienste werden beim Systemstart automatisch ausgeführt.

sudo systemctl start netbox netbox-rq
sudo systemctl enable netbox netbox-rq

netbox als systemd-Dienst einrichten

Überprüfe abschließend die NetBox-Dienste mit dem folgenden Befehl.

sudo systemctl status netbox
sudo systemctl status netbox-rq

In der folgenden Ausgabe kannst du sehen, dass der Dienst„netbox“ aktiviert ist. Und der aktuelle Status ist „running“.

Netbox-Dienststatus

Für den Dienst„netbox-rq“ erhältst du ebenfalls die Ausgabe, dass der Dienst aktiviert ist. Und er wird ausgeführt.

netbox-rq Dienststatus

Einrichten von Apache2 als Reverse Proxy

Führe den folgenden apt-Befehl aus, um den Apache2-Webserver zu installieren. Gib Y ein, um die Installation zu bestätigen, und drücke ENTER, um die Installation zu starten.

sudo apt install apache2

apache2 installieren

Nach Abschluss der Apache2-Installation führst du den folgenden Befehl aus, um einige Aapche2-Module zu aktivieren, die für den Reverse Proxy verwendet werden sollen. Du solltest sehen, dass einige zusätzliche Module ebenfalls aktiviert sind.

sudo a2enmod ssl proxy proxy_http headers

Apache2-Module aktivieren

Als Nächstes kopierst du das Beispiel für die Konfiguration des virtuellen Apache2-Hosts für NetBox nach „/etc/apache2/sites-available/netbox.conf“. Bearbeite dann die Datei„/etc/apache2/sites-available/netbox.conf“ mit dem Editor nano

sudo cp /opt/netbox/contrib/apache.conf /etc/apache2/sites-available/netbox.conf
sudo nano /etc/apache2/sites-available/netbox.conf

Ändere den Domainnamen für deine NetBox-Installation und den Pfad der SSL-Zertifikate. In diesem Beispiel werden wir die Domain„netbox.hwdomain.io“ mit den SSL-Zertifikaten von Letsencrypt verwenden, die im Verzeichnis„/etc/letsencrypt/live/netbox.hwdomain.io/“ verfügbar sind.

<VirtualHost *:443>
    ProxyPreserveHost On
# CHANGE THIS TO YOUR SERVER'S NAME
ServerName netbox.hwdomain.io

SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/netbox.hwdomain.io/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/netbox.hwdomain.io/privkey.pem

Alias /static /opt/netbox/netbox/static

<Directory /opt/netbox/netbox/static>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>

<Location /static>
ProxyPass !
</Location>

RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
ProxyPass / http://127.0.0.1:8001/
ProxyPassReverse / http://127.0.0.1:8001/
</VirtualHost>

Wenn du fertig bist, speichere und schließe die Datei.

Führe nun den folgenden Befehl aus, um die Konfiguration des virtuellen Hosts„netbox.conf“ zu aktivieren. Teste und überprüfe dann die Apache-Konfiguration. Du solltest eine Meldung wie„Syntax OK“ erhalten, was bedeutet, dass die Apache2-Konfiguration korrekt ist.

sudo a2ensite netbox.conf
sudo apachectl configtest

Starte nun den Apache2-Dienst neu, um die neuen Änderungen in der virtuellen Hostdatei zu übernehmen. Der Apache2-Webserver läuft jetzt mit aktiviertem HTTPS/SSL als Gegenstelle für die NetBox-Webanwendung, die auf„localhost:8001“ läuft.

sudo systemctl restart apache2

Apache2 Reverse Proxy einrichten

Um die Installation zu überprüfen, öffne deinen Webbrowser und rufe den Domainnamen der NetBox-Installation auf (z.B.: https://netbox.hwdomain.io/). Du solltest die Dashboard-Verwaltung für NetBox mit einem gesperrten Status erhalten.

Klicke auf die Schaltfläche„Anmelden“ oben rechts.

nextbox Seite

Gib jetzt den Admin-Benutzer und das Passwort für deine NetBox-Installation ein und klicke auf„Anmelden„.

Anmeldung bei netbox

Du solltest nun die Dashboard-Verwaltung der NetBox erhalten.

netbox admin dashboard

Fazit

In diesem Lernprogramm hast du NetBox Infrastructure Resource Modelling (IRM) mit der PostgreSQL-Datenbank, dem Redis-Caching-System, Gunicorn und dem Apache2-Reverse-Proxy auf einem Debian 11-Server eingerichtet. Außerdem hast du NetBox als systemd-Dienst konfiguriert, der das Starten und Stoppen der NetBox-Webanwendung erleichtert. Am Ende hast du NetBox IRM vollständig konfiguriert und auf deinem Debian-Server mit sicherem HTTPS/SSL aktiviert.

Das könnte dich auch interessieren …