Как установить NetBox IRM (Infrastructure Resource Modelling Tool) на сервер Ubuntu 24.04

NetBox – это инструмент моделирования инфраструктурных ресурсов (IRM), предназначенный для автоматизации сетей и проектирования инфраструктуры. Изначально он был создан командой DigitalOcean, а теперь стал проектом с открытым исходным кодом, выпущенным под лицензией Apache 2.

NetBox был создан в веб-фреймворке Python Django с PostgreSQL в качестве базы данных по умолчанию, и установка NetBox довольно похожа на другие веб-приложения Python Django.

В этом руководстве мы покажем вам, как установить Netbox IRM на сервер Ubuntu 24.04 с PostgreSQL в качестве базы данных и Apache в качестве обратного прокси. Вы также защитите Netbox с помощью HTTPS через Certbot и Letsencrypt.

Установка зависимостей

Чтобы установить Netbox, необходимо убедиться, что на вашем сервере Ubuntu установлены зависимости. К ним относятся Python3, сервер PostgreSQL, веб-сервер Apache, Redis и системные библиотеки. В этом разделе вы установите эти пакеты с помощью менеджера пакетов APT.

Сначала выполните следующую команду, чтобы обновить индекс пакетов Ubuntu.

sudo apt update

После обновления установите зависимости для Netbox с помощью следующей команды. В этом примере вы установите PostgreSQL, Apache, Python, Redis, Certbot, зависимости для сборки и некоторые библиотеки.

sudo apt install apache2 postgresql postgresql-common libpq-dev redis-server git certbot python3 python3-pip python3-venv python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev libssl-dev zlib1g-dev

Введите ‘Y‘, чтобы подтвердить установку.

установить deps

После завершения установки выполните приведенную ниже команду ‘systemctl’, чтобы проверить состояние веб-сервера Apache.

sudo systemctl is-enabled apache2
sudo systemctl status apache2

В следующем выводе видно, что Apache запущен и включен.

проверить apache2

И наконец, проверьте состояние сервера PostgreSQL с помощью следующей команды:

sudo systemctl is-enabled postgresql
sudo systemctl status postgresql

В приведенном ниже выводе видно, что PostgreSQL включен и запущен со статусом exited (systemd не может найти службу для мониторинга).

проверить службу postgresql

Настройка PostgreSQL

После установки зависимостей необходимо настроить сервер PostgreSQL, создав нового пользователя и базу данных, которую будет использовать Netbox.

Войдите на сервер PostgreSQL с помощью следующей команды.

sudo -u postgres psql

Теперь выполните следующие запросы для создания нового пользователя ‘netbox‘ с паролем ‘netboxpassword‘ и новая база данных ‘netboxdb‘.

CREATE USER netbox LOGIN CREATEDB PASSWORD 'netboxpassword';
CREATE DATABASE netboxdb OWNER netbox;

После создания базы данных и пользователя проверьте список баз данных и пользователей в PostgreSQL, выполнив следующие действия.

\l
\du

Вы можете увидеть ниже базу данных ‘netboxdb‘ и пользователь ‘netbox‘ создан.

Введите ‘выйти из игры‘ для выхода из сервера PostgreSQL.

список баз данных

пользователи списков

Загрузка Настройка Netbox

Теперь, когда база данных PostgreSQL готова, вы загрузите и установите Netbox на свою машину Ubuntu. Вы настроите доменное имя, секретный ключ и базу данных для Netbox.

Сначала выполните приведенную ниже команду, чтобы создать нового пользователя ‘netbox’ на вашей машине Ubuntu.

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

Теперь выполните приведенную ниже команду, чтобы загрузить исходный код Netbox с помощью ‘git‘, и измените право собственности на ‘netbox‘ пользователь.

sudo git clone -b master --depth 1 https://github.com/netbox-community/netbox.git /opt/netbox
sudo chown -R netbox:netbox /opt/netbox

Перейти к ‘/opt/netbox/netbox/netbox‘ каталог и выполните команду ‘generate_secret_key.py‘ файл. Скопируйте секретный ключ в свой блокнот.

cd /opt/netbox/netbox/netbox
sudo -u netbox python3 ../generate_secret_key.py

Затем скопируйте файл ‘configuration.py‘ файл и измените его с помощью команды ‘nano‘ редактор.

sudo -u netbox cp configuration_example.py configuration.py
sudo -u netbox nano configuration.py

Добавьте локальный IP-адрес и доменное имя в ‘ALLOWED_HOSTS‘.

ALLOWED_HOSTS = ['netbox.local', '192.168.10.60']

Введите имя базы данных PostgreSQL, пользователя и пароль в поле ‘DATABASE‘ раздел.

# database configuration
DATABASE = {
'NAME': 'netboxdb', # Database name
'USER': 'netbox', # PostgreSQL username
'PASSWORD': 'netboxpassword', # PostgreSQL password
'HOST': 'localhost', # Database server
'PORT': '', # Database port (leave blank for default)
'CONN_MAX_AGE': 300, # Max database connection age (seconds)
}

Вставьте свой секретный ключ в раздел ‘SECRET_KEY‘ раздел.

SECRET_KEY = '98%D9uh8S%)T0QhQ@Z3zYf%Hik^CqWJ)Uwz%0J7TZUztmNiitG'

Сохраните файл и выйдите из редактора после завершения работы.

Перенос Netbox и настройка администратора

Теперь, когда вы настроили Netbox с сервером PostgreSQL, вы готовы перенести базу данных и создать пользователя-администратора для установки Netbox.

Выполните команду ‘upgrade.sh‘ сценарий с помощью команды ниже. Это создаст окружение Python, установит зависимости для Netbox, перенесет базу данных Netbox, подключится к Redis, а затем сгенерирует статические файлы.

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

netbox configure

Ниже показан перенос базы данных для Netbox.

мигрировать

А ниже, когда ‘manage.py‘ генерирует статические файлы.

После завершения процесса вам нужно создать нового пользователя-администратора для Netbox через ‘manage.py‘ сценарий.

статические файлы

Выполните следующую команду, чтобы активировать виртуальную среду Netbox. После активации ваша оболочка станет такой, как ‘(venv) user@hostname‘.

source /opt/netbox/venv/bin/activate

Перейти на страницу ‘/opt/netbox/netbox‘ каталог и выполните команду ‘manage.py‘ сценарий, подобный следующему:

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

Введите имя пользователя, адрес электронной почты и пароль администратора Netbox.

создать администратора

После завершения выполните команду ‘деактивировать‘ команда для выхода из виртуальной среды Netbox.

Запуск Netbox в качестве службы

В этом разделе вы скопируете конфигурации Netbox, которые будут использоваться для запуска Netbox в качестве службы systemd. Вам нужно убедиться, что Netbox работает под управлением Gunicorn, а затем скопировать файлы службы Netbox в папку ‘/etc/systemd/system‘ директория.

Сначала скопируйте каталог ‘gunicorn.py‘ сценарий в ‘/opt/netbox‘ директория. Этот скрипт содержит конфигурацию для запуска Netbox под управлением WSGI-сервера Python.

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

Теперь выполните приведенную ниже команду, чтобы скопировать служебные файлы для Netbox в каталог ‘/etc/systemd/system‘ каталог и перезагрузите менеджер systemd.

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

После того как systemd будет перезагружен, запустите команду ‘systemctl‘ введите команду ниже, чтобы запустить и включить службы Netbox.

sudo systemctl enable --now netbox netbox-rq netbox-housekeeping

запуск и включение

И наконец, проверьте работу служб Netbox, выполнив следующую команду.

sudo systemctl status netbox netbox-rq netbox-housekeeping

В следующем выводе вы можете увидеть символ ‘netbox‘ служба запущена и включена.

netbox

Для ‘netbox-rq‘, вы должны получить результат, подобный этому:

netbox-rq

И наконец, в качестве параметра ‘netbox-housekeeping‘ со статусом ‘мертв‘, потому что он будет работать как таймер.

netbox-housekeeping

Настройка Apache в качестве обратного прокси

На данный момент Netbox работает в фоновом режиме как служба под WSGI-сервером Python. Чтобы сделать его доступным извне, необходимо настроить Apache в качестве обратного прокси. Перед этим также необходимо сгенерировать SSL-сертификаты для защиты установки Netbox.

Сначала выполните следующую команду, чтобы остановить ‘apache2‘ сервис.

sudo systemctl stop apache2

Теперь сгенерируйте SSL сертификаты от Letsencrypt с помощью ‘certbot‘ команду ниже. Не забудьте изменить доменное имя и адрес электронной почты на свои данные.

sudo certbot certonly --standalone --preferred-challenges http -d netbox.local

После завершения процесса ваши SSL-сертификаты будут доступны в ‘/etc/letsencrypt/live/domain.com‘ директория.

Далее скопируйте конфигурацию Apache для Netbox в директорию ‘/etc/apache2/sites-available/netbox.conf‘ файл и измените его с помощью команды ‘nano‘ редактор.

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

Замените доменное имя в ‘ServerName‘ и измените путь к вашим SSL-сертификатам.

# CHANGE THIS TO YOUR SERVER'S NAME
ServerName netbox.local

ProxyPreserveHost On

# CHANGE THIS TO YOUR SERVER’S NAME
ServerName netbox.local

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

Сохраните файл и выйдите из редактора после завершения работы.

Теперь выполните приведенную ниже команду для активации модулей Apache и файла виртуального хоста ‘netbox.conf‘.

sudo a2enmod ssl proxy proxy_http headers rewrite
sudo a2ensite netbox.conf

После активации виртуального хоста выполните следующую команду, чтобы перезапустить Apache и применить изменения. После этого ваша установка Netbox должна работать под обратным прокси Apache с включенным HTTPS.

sudo systemctl restart apache2

Наконец, зайдите на сайт https://netbox.local/ с помощью веб-браузера, и вы будете перенаправлены на страницу входа в Netbox. Введите имя пользователя и пароль администратора, затем нажмите кнопку Войти.

вход

Если у вас есть соответствующие учетные данные администратора, вы увидите следующую панель Netbox.

приборная панель

Нажмите на кнопку Админ > Система меню, чтобы увидеть информацию об установке Netbox. В следующем выводе видно, что Netbox v4.1.7 установлен с базой данных PostgreSQL.

dashboard

Заключение

Поздравляем! Вы завершили установку Netbox IRM на сервер Ubuntu 24.04. Вы запустили Netbox с PostgreSQL в качестве сервера баз данных и Apache в качестве обратного прокси. Вы также обеспечили безопасность Netbox с помощью HTTPS через Certbot.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *