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‘, чтобы подтвердить установку.
После завершения установки выполните приведенную ниже команду ‘systemctl’, чтобы проверить состояние веб-сервера Apache.
sudo systemctl is-enabled apache2 sudo systemctl status apache2
В следующем выводе видно, что Apache запущен и включен.
И наконец, проверьте состояние сервера PostgreSQL с помощью следующей команды:
sudo systemctl is-enabled postgresql sudo systemctl status postgresql
В приведенном ниже выводе видно, что PostgreSQL включен и запущен со статусом exited (systemd не может найти службу для мониторинга).
Настройка 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.
А ниже, когда ‘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-rq‘, вы должны получить результат, подобный этому:
И наконец, в качестве параметра ‘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.
Заключение
Поздравляем! Вы завершили установку Netbox IRM на сервер Ubuntu 24.04. Вы запустили Netbox с PostgreSQL в качестве сервера баз данных и Apache в качестве обратного прокси. Вы также обеспечили безопасность Netbox с помощью HTTPS через Certbot.