Netbox jest aplikacją webową która przygotował zespół z Digital Ocean, pomaga ona w zarządzaniu oraz tworzeniu dokumentacji sieci. Poniższy tutorial przeprowadzi nas przez instalacje Netbox na Ubuntu 20.04 wraz z Nginx
Sama aplikacja na pierwszy rzut oka może wydawać się dla niektórych niepotrzebna ze względu iż główne zastosowanie to duże data center i szafy rack. Zapewniam iż aplikacja daje takie możliwości że nawet w domowej sieci nada się doskonale do dokumentacji połączeń kabli, adresów IP oraz przypisanie portów wirtualnych maszyn do odpowiedniego gniazda, może służyć jako dokumentacja komputerów znajdujących się w sieci, zastosowań masa. Moim zdaniem aplikacja niezbędna dla każdego kto posiada mały homelab – router, switch, mały serwer z kilkoma VM’kami czy też mase kontenerów, nie wspominając o tych osobach co posiadają szafy.
Ok dość tego pisania, przechodzimy do instalacji
(1) Krok pierwszy aktualizacja repozytoriów
sudo apt update
(2) Instalacja oraz konfiguracja Postgresql
- zwróć uwagę że
postgres=#
nie kopiujemy, podałem go jako prompt dla postgresql - wielkość liter ma znaczenie
- musisz użyć
;
na końcu linijki \q
wychodzimy z wiersza poleceń Postgresql
sudo apt-get install -y postgresql libpq-dev sudo -u postgres psql postgres=# CREATE DATABASE netbox; postgres=# CREATE USER netbox WITH PASSWORD 'ENTER YOUR PASSWORD'; postgres=# GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox; postgres=# \q
(3) Instalacja wymaganych aplikacji do działania Netbox
sudo apt-get install -y python3 python3-pip python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev libpq-dev libssl-dev redis-server zlib1g-dev
(4) Instalacja Netbox używając Git
Tworzymy katalog Netbox oraz przechodzimy do niego /opt/netbox
następnie instalacja Git oraz klonowanie repozytorium Netbox
sudo mkdir -p /opt/netbox/ && cd /opt/netbox/ sudo apt-get install -y git sudo git clone -b master https://github.com/netbox-community/netbox.git .
(5) Jako root zainstaluj dodatkowe wymagane aplikacje oraz gunicorn
sudo su - root pip3 install -r /opt/netbox/requirements.txt pip3 install gunicorn exit
(6) Konfiguracja oraz modyfikacja pliku konfiguracyjnego
Przechodzimy do katalogu Netbox, zmieniamy nazwę pliku configuration.example.py
na configuration.py
oraz edytujemy go.
cd /opt/netbox/netbox/netbox sudo cp configuration.example.py configuration.py sudo nano configuration.py
w pliku znajdziemy różne parametry, tych które szukamy to:
ALLOWED_HOSTS = ['Enter your Server IP/Hostname'] USER 'your_username' PASSWORD 'your_password' SECRET_KEY - 'a minimum 50 char alphanumeric string of your choice'
(7) Instalacja oraz konfiguracja serwera Nginx
Instalacja serwera web Nginx oraz edytujemy plik konfiguracyjny według własnych potrzeb pamiętając żeby zmienić adres IP/hostname (server_name
)
sudo apt install -y nginx sudo nano /etc/nginx/sites-available/netbox
server { listen 80; server_name 10.10.10.1; client_max_body_size 25m; location /static/ { alias /opt/netbox/netbox/static/; } location / { proxy_pass http://127.0.0.1:8001; proxy_set_header X-Forwarded-Host $server_name; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"'; } }
(9) Usuwamy oryginalny plik konfiguracyjny i tworzymy link z naszym plikiem
cd /etc/nginx/sites-enabled/ sudo rm /etc/nginx/sites-enabled/default sudo ln -s /etc/nginx/sites-available/netbox
(10) Konfiguracja Gunicorn
sudo nano /opt/netbox/gunicorn_config.py
Skopiuj i wklej poniższy kod do pliku gunicorn_config.py
command = '/usr/bin/gunicorn' pythonpath = '/opt/netbox/netbox' bind = '127.0.0.1:8001' workers = 3 user = 'www-data'
(11) Instalacja oraz konfiguracja Supervisor
sudo apt install -y supervisor sudo nano /etc/supervisor/conf.d/netbox.conf
Kopiujemy i wklejamy poniższy kod do pliku netbox.conf
[program:netbox] command = gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi directory = /opt/netbox/netbox/ user = www-data [program:netbox-rqworker] command = python3 /opt/netbox/netbox/manage.py rqworker directory = /opt/netbox/netbox/ user = www-data
(12) Restart usług i logowanie na stronie
service nginx restart service supervisor restart
Możemy zalogować się na stronie http://10.10.10.1