Netbox ist ein kostenloses und leistungsstarkes Tool zur Verwaltung von IP-Adressen (IPAM) und Rechenzentrumsinfrastruktur (DCIM). Es wird zum Speichern von Informationen über Ihre Netzwerke, VMs, Inventare und vieles mehr verwendet. Es wurde ursprünglich vom Netzwerk-Engineering-Team von DigitalOcean entwickelt. Dieses Tool ist im Django-Python-Framework geschrieben und basiert auf der PostgreSQL-Datenbank. Sein Ziel ist es, als domänenspezifische Quelle der Wahrheit für den Netzwerkbetrieb zu fungieren.
In diesem Tutorial erklären wir, wie man Netbox mit Nginx als Reverse-Proxy unter Ubuntu 20.04 installiert.
Voraussetzungen
- Ein Server mit Ubuntu 20.04.
- Auf Ihrem Server ist ein Root-Passwort konfiguriert.
Erste Schritte
Bevor Sie beginnen, müssen Sie einige Abhängigkeiten installieren, die von Netbox benötigt werden. Sie können alle installieren, indem Sie den folgenden Befehl ausführen:
apt-get install nginx git gcc supervisor python3 python3-dev python3-pip python3-setuptools build-essential libxml2-dev libxslt1-dev libffi-dev graphviz libpq-dev libssl-dev zlib1g-dev -y
Sobald alle Pakete installiert sind, können Sie mit dem nächsten Schritt fortfahren.
Installieren und konfigurieren Sie die PostgreSQL-Datenbank
Netbox setzt zur Datenspeicherung auf die PostgreSQL-Datenbank. Sie können es mit dem folgenden Befehl installieren:
apt-get install postgresql postgresql-contrib -y
Sobald PostgreSQL installiert ist, melden Sie sich mit dem folgenden Befehl bei PostgreSQL an:
su - postgres
[email protected]:~$ psql
Sie sollten die folgende Ausgabe erhalten:
psql (12.2 (Ubuntu 12.2-4)) Geben Sie „help“ ein, um Hilfe zu erhalten.
Als nächstes erstellen Sie eine Datenbank und einen Benutzer für Netbox mit dem folgenden Befehl:
postgres=# DATENBANK netbox ERSTELLEN;
postgres=# BENUTZER netbox MIT PASSWORT ERSTELLEN 'password';
Als nächstes erteilen Sie der Netbox-Datenbank mit dem folgenden Befehl alle Berechtigungen:
postgres=# GEWÄHRE ALLE PRIVILEGIEN AUF DATENBANK netbox TO netbox;
Verlassen Sie als Nächstes die PostgreSQL-Shell mit dem folgenden Befehl:
postgres=# Ausfahrt
[email protected]:~$ Ausfahrt
NetBox installieren und konfigurieren
Wechseln Sie zunächst in das Verzeichnis /opt und laden Sie mit dem folgenden Befehl die neueste Version von Netbox aus dem Git Hub-Repository herunter:
cd /opt/
git clone -b master https://github.com/digitalocean/netbox.git
Erstellen Sie als Nächstes mit dem folgenden Befehl einen symbolischen Link der Python-Binärdatei:
ln -s /usr/bin/python3 /usr/bin/python
Wechseln Sie als Nächstes in das Verzeichnis /opt/netbox/netbox/ und generieren Sie den Django SECRET Key, indem Sie den folgenden Befehl ausführen:
cd /opt/netbox/netbox/
./generate_secret_key.py
Sie sollten die folgende Ausgabe erhalten:
[email protected])eTDpo(k^f4Sm9bariUnK0syCPMGEIjW6XV_8l5xhB7z
Ändern Sie als Nächstes das Verzeichnis in netbox und benennen Sie die Beispielkonfigurationsdatei um:
cd netbox
mv configuration.example.py configuration.py
Bearbeiten Sie als Nächstes die Netbox-Konfigurationsdatei und definieren Sie Ihre Datenbank, Ihren geheimen Schlüssel und die zulässigen Hosts:
nano configuration.py
Nehmen Sie die folgenden Änderungen vor:
ALLOWED_HOSTS =['your-server-ip']# PostgreSQL-Datenbankkonfiguration. Eine vollständige Liste der verfügbaren Parameter finden Sie in der Django-Dokumentation:# https://docs.djangoproject.com/en/stable/ref/settings/#databasesDATABASE ={ 'NAME':'netbox', # Database name 'USER':'netbox', # PostgreSQL-Benutzername 'PASSWORD':'password', # PostgreSQL-Passwort 'HOST':'localhost', # Datenbankserver 'PORT':'', # Datenbankport (standardmäßig leer lassen) 'CONN_MAX_AGE':300 , # Max. Datenbankverbindungsalter}SECRET_KEY ='[email protected])eTDpo(k^f4Sm9bariUnK0syCPMGEIjW6XV_8l5xhB7z'
Speichern und schließen Sie die Datei und installieren Sie dann alle Python-Abhängigkeiten mit dem folgenden Befehl:
pip3 install -r /opt/netbox/requirements.txt
Als nächstes migrieren Sie die Datenbank mit dem folgenden Befehl:
cd /opt/netbox/netbox/
python3 manage.py migrieren
Erstellen Sie als Nächstes mit dem folgenden Befehl einen Netbox-Administratorbenutzer:
python3 manage.py erstellt einen Superuser
Sie werden aufgefordert, den Benutzernamen und das Passwort wie unten gezeigt einzugeben:
Benutzername (leer lassen, um „root“ zu verwenden):netboxadminE-Mail-Adresse:[email protected]Passwort:Passwort (erneut):Superuser erfolgreich erstellt.
Sammeln Sie als Nächstes die statische Datei mit dem folgenden Befehl:
python3 manage.py collectstatic
Sie sollten die folgende Ausgabe sehen:
976 statische Dateien nach '/opt/netbox/netbox/static' kopiert.
Gunicorn installieren und konfigurieren
Netbox ist eine Django-basierte Anwendung. Sie müssen also Gunicorn in Ihrem System installieren. Sie können es installieren, indem Sie den folgenden Befehl ausführen:
pip3 installiere gunicorn
Erstellen Sie nach der Installation von Gunicorn mit dem folgenden Befehl eine neue Gunicorn-Konfigurationsdatei für Netbox:
nano /opt/netbox/gunicorn_config.py
Fügen Sie die folgenden Zeilen hinzu:
command ='/usr/local/bin/gunicorn'pythonpath ='/opt/netbox/netbox'bind ='your-server-ip:8001'workers =3user ='www-data'
Speichern und schließen Sie die Datei, wenn Sie fertig sind.
Supervisor installieren und konfigurieren
Supervisor ist ein Client/Server-System, mit dem Sie den NetBox-Dienst überwachen und steuern können. Mit dem folgenden Befehl können Sie eine neue Supervisor-Konfigurationsdatei für Netbox erstellen:
nano /etc/supervisor/conf.d/netbox.conf
Fügen Sie die folgenden Zeilen hinzu:
[program:netbox]command =gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgidirectory =/opt/netbox/netbox/user =www-data
Speichern und schließen Sie die Datei, wenn Sie fertig sind. Starten Sie dann den Supervisor-Dienst mit dem folgenden Befehl neu:
Systemctl-Neustart-Supervisor
Sie können den Status des Supervisor-Dienstes auch mit dem folgenden Befehl überprüfen:
Systemctl Status Supervisor
Sie sollten die folgende Ausgabe erhalten:
Nginx für NetBox konfigurieren
Es ist eine gute Idee, Nginx als Reverse-Proxy zu konfigurieren, um auf die Netbox an Port 80 zuzugreifen. Sie können eine neue virtuelle Nginx-Hostkonfiguration mit dem folgenden Befehl erstellen:
nano /etc/nginx/sites-available/netbox.conf
Fügen Sie die folgenden Zeilen hinzu:
server {listen 80; server_name ihre-server-ip; client_max_body_size 25m; Standort /statisch/ { alias /opt/netbox/netbox/static/; } location / { proxy_pass http://your-server-ip:8001; }}
Speichern und schließen Sie die Datei. Erstellen Sie dann einen symbolischen Link zum Verzeichnis /etc/nginx/sites-enabled/:
ln -s /etc/nginx/sites-available/netbox.conf /etc/nginx/sites-enabled/
Überprüfen Sie als Nächstes Nginx mit dem folgenden Befehl auf Syntaxfehler:
nginx -t
Wenn alles in Ordnung ist, sollten Sie die folgende Ausgabe erhalten:
nginx:Die Syntax der Konfigurationsdatei /etc/nginx/nginx.conf ist oknginx:Der Test der Konfigurationsdatei /etc/nginx/nginx.conf ist erfolgreich
Starten Sie abschließend den Nginx-Dienst neu, um die Änderungen zu implementieren.
systemctl startet nginx neu
Sie können Nginx auch mit dem folgenden Befehl überprüfen:
systemctl status nginx
Sie sollten die folgende Ausgabe erhalten:
Zu diesem Zeitpunkt ist der Nginx-Webserver so konfiguriert, dass er Netbox auf Port 80 bedient. Sie können nun mit dem Zugriff auf die Netbox-Weboberfläche fortfahren.
Zugriff auf die Netbox-Webschnittstelle
Öffnen Sie Ihren Webbrowser und besuchen Sie die URL http://your-server-ip. Sie werden auf die folgende Seite weitergeleitet:
Klicken Sie auf das Protokoll in Taste. Sie sollten die Netbox-Anmeldeseite auf dem folgenden Bildschirm sehen:
Geben Sie Ihren Netbox-Admin-Benutzernamen und Ihr Passwort ein und klicken Sie auf Anmeldung Taste. Sie sollten das Standard-Dashboard von Netbox auf der folgenden Seite sehen:
Schlussfolgerung
In diesem Handbuch haben Sie gelernt, wie Sie Netbox auf Ubuntu 20.04 mit Nginx installieren. Sie können jetzt mit der Dokumentation Ihrer Netzwerkinfrastruktur beginnen. Weitere Informationen finden Sie in der offiziellen Netbox-Dokumentation. Sie können mich gerne fragen, wenn Sie Fragen haben.