NetBox — веб-приложение для документирования/учета и управления компьютерных сетей.
При большом количестве сетей, устройств, позволяет визуально разместить его в стойках, вести базу банных и т.д.
Для примера выполню тестовую установку NetBox в Ubuntu 18.04.
Переключимся на root пользователя:
sudo -i
Установим сервер баз данных PostgreSQL:
apt update
apt install postgresql libpq-dev
systemctl status postgresql
systemctl is-enabled postgresql
systemctl enable postgresql
systemctl restart postgresql
Создадим базу данных и пользователя:
sudo -u postgres psql
CREATE DATABASE netbox;
CREATE USER netbox WITH PASSWORD 'ixnfo.com';
GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;
\q
Сделаем тестовое подключение к базе данных и отключимся:
psql -U netbox -W -h localhost netbox
\q
Установим Redis:
apt install redis-server
systemctl is-enabled redis
systemctl enable redis
systemctl restart redis
systemctl status redis
Проверим (в ответ должно отобразится «PONG»):
redis-cli ping
Установим прочие необходимые компоненты:
apt install python3.7 python3-pip python3.7-venv python3.7-dev build-essential libxml2-dev libxslt1-dev libffi-dev libpq-dev libssl-dev zlib1g-dev supervisor
Скопируем ссылку на последнюю версию NetBox тут https://github.com/netbox-community/netbox/releases и скачаем, например:
cd /opt/
wget https://github.com/netbox-community/netbox/archive/v3.0.2.tar.gz
tar -xzf v3.0.2.tar.gz -C /opt
ln -s netbox-3.0.2/ netbox
ls -l /opt | grep netbox
cd /opt/netbox/
Создадим системного пользователя:
adduser --system --group netbox
chown --recursive netbox /opt/netbox/netbox/media/
Установим зависимости Netbox:
python3.7 -m pip install -r /opt/netbox/requirements.txt
python3.7 -m pip install django psycopg2
Создадим файл конфигурации из примера:
cd /opt/netbox/netbox/netbox/
cp configuration.example.py configuration.py
nano /opt/netbox/netbox/netbox/configuration.py
Укажем ранее созданного пользователя для доступа к базе данных, в ALLOWED_HOSTS укажем домен вашего сервера или все *:
DATABASE = {
'NAME': 'netbox',
'USER': 'netbox',
'PASSWORD': 'ixnfo.com',
...
ALLOWED_HOSTS = ['ixnfo.com', 'test.ixnfo.com']
#ALLOWED_HOSTS = ['*']
Генерируем секретный ключ:
python3 -V
cd /opt/netbox/netbox/
python3.7 ./generate_secret_key.py
Укажем его в файле конфигурации, например:
nano /opt/netbox/netbox/netbox/configuration.py
SECRET_KEY = 'XeV@7#NzCRRw-SPjI6JJi3Rh##qqcU2JpOA%z0b_PY1-So7X5Q'
Настроим gunicorn:
pip3 install gunicorn
nano /opt/netbox/gunicorn_config.py
command = '/usr/local/bin/gunicorn'
pythonpath = '/opt/netbox/netbox'
bind = '192.168.24.73:8001'
workers = 3
user = 'www-data'
Создадим файл конфигурации супервизора:
nano /etc/supervisor/conf.d/netbox.conf
[program:netbox]
command = gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
directory = /opt/netbox/netbox/
user = www-data
systemctl restart supervisor.service
systemctl is-enabled supervisor.service
systemctl enable supervisor.service
systemctl status supervisor.service
Перенесем данные в базу данных и статические файлы:
cd /opt/netbox/netbox/
python3.7 manage.py migrate
python3.7 manage.py collectstatic
python3.7 manage.py loaddata initial_data
Создадим администратора:
python3.7 manage.py createsuperuser
Обновим:
/opt/netbox/upgrade.sh
Настроим веб конфигурацию, например:
nano /etc/nginx/conf.d/netbox.conf
server {
listen 80;
server_name test.ixnfo.com;
client_max_body_size 25m;
location /static/ {
alias /opt/netbox/netbox/static/;
}
location / {
proxy_pass http://192.168.24.73:8001;
}
}
Проверим веб конфигурацию nginx и перезапустим его:
nginx -t
systemctl restart nginx
После этого можно открыть NetBox в браузере и войти под ранее созданным администратором.