Установка и запуск Netbox на Linux Ubuntu

Обновлено и опубликовано Опубликовано:

Используемые термины: NetBoxPostgreSQLRedisNginx, Python.

NetBox используется сетевыми инженерами и системными администраторами как единый источник правды о состоянии сети. В этой инструкции установим NetBox на Ubuntu вместе с PostgreSQL, Redis и nginx.

Системные требования

На момент обновления инструкции для запуска Netbox необходимо было установить следующие компоненты:

  • Redis.
  • PostgreSQL.
  • HTTP server.
  • NetBox components.
  • Gunicorn или uWSGI.

А также Python версии 3.12 / 3.13 / 3.14.

Актуальный список требований можно посмотреть на официальном сайте NetBox, в документации (раздел Installation).

PostgreSQL

Смотрим, какая версия PostgreSQL будет установлена из встроенного репозитория:

apt search --names-only '^postgresql$'

Если версия соответствует требованиям, устанавливаем:

apt install postgresql postgresql-contrib

Если у нас старая система и версия PostgreSQL не подходит, смотрите подробный разбор установки и первичной настройки PostgreSQL в отдельной инструкции.

Убедимся, что в системе есть русская локаль — она понадобится при создании и корректной работы базы данных NetBox:

locale-gen ru_RU.UTF-8

Перезапускаем PostgreSQL, чтобы локаль подхватилась:

systemctl restart postgresql

Заходим в psql от аккаунта postgres:

sudo -iu postgres psql

Создаём пользователя, базу данных netbox и выдаём права на схему:

> CREATE USER netbox WITH PASSWORD 'netbox_123';

> CREATE DATABASE netbox WITH OWNER netbox ENCODING 'UTF8' LC_COLLATE = 'ru_RU.UTF-8' LC_CTYPE = 'ru_RU.UTF-8' TEMPLATE = 'template0';

> GRANT CREATE ON SCHEMA public TO netbox;

> quit

* netbox_123 — в реальном окружении замените на свой.

База данных готова.

Redis

Устанавливаем Redis:

apt install redis-server

Открываем конфигурационный файл:

vi /etc/redis/redis.conf

Меняем значение для директивы supervised:

supervised systemd

* данная настройка позволит инициализировать запуск Redis как службы. В соответствии с официальной документацией, это позволит нам получить больше контроля над базой данных.

Перезапускаем redis-server:

systemctl restart redis-server

Проверяем, что служба отвечает:

redis-cli ping

PONG

Наш сервер готов к работе.

Netbox

Для удобства, разобьем процесс на стадии.

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

Проверяем, какие версии Python доступны в репозитории:

apt search --names-only '^python[.0-9]{3,4}$'

Выбираем нужную версию и сохраняем в переменную:

PY_VER=3.12

* переменная PY_VER будет подставляться в команды ниже — укажите версию, которую нашли на предыдущем шаге.

Если в нашей системе нет подходящей под требования версии Python, выполняем установку по инструкции Установка и использование Python на Ubuntu.

Устанавливаем Python и модуль для виртуального окружения:

apt install python${PY_VER}-venv python${PY_VER}-dev

Ставим системные зависимости, необходимые для сборки Python-пакетов NetBox:

apt install build-essential libxml2-dev libxslt1-dev libffi-dev libpq-dev libssl-dev zlib1g-dev curl

Зависимости установлены.

Скачивание NetBox

Актуальный релиз можно посмотреть на странице проекта на GitHub.

Для удобства, определяем номер последней версии с помощью команды и сохраняем ее в переменную:

NB_VER=$(curl -s https://api.github.com/repos/netbox-community/netbox/releases/latest | grep 'tag_name' | cut -d\" -f4)

* NB_VER подставится в команды скачивания и распаковки архива ниже.
** при необходимости, можно не выполнять команду curl, а подставить свое значение версии.

Скачиваем архив с исходниками NetBox:

curl -sLO https://github.com/netbox-community/netbox/archive/refs/tags/${NB_VER}.tar.gz

Создаём каталог для установки:

mkdir -p /opt/netbox

Распаковываем архив в него:

tar -xzf ${NB_VER}.tar.gz -C /opt/netbox --strip-components 1

Заводим системного пользователя, от имени которого будет работать NetBox:

useradd netbox -r

Отдаём каталог во владение этому пользователю:

chown -R netbox:netbox /opt/netbox

NetBox скачан и распакован.

Настройка конфигурационного файла

Переходим в каталог с конфигурацией:

cd /opt/netbox/netbox/netbox

Копируем пример конфигурационного файла:

cp configuration_example.py configuration.py

Генерируем секретный ключ приложения:

python3 ../generate_secret_key.py

Мы получим что-то на подобие: 

v0w(mr8B0IC$RK*sn^hYnQHjItfDA-TnzI0#AaTE1ji9KbzoIO

Фиксируем его. После открываем конфигурационный файл:

vi configuration.py

Прописываем разрешённые хосты, параметры подключения к базе данных и полученный секретный ключ:

ALLOWED_HOSTS = ['netbox.dmosk.ru', '192.168.1.10', '127.0.0.1']
...
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'netbox',
        'USER': 'netbox',
        'PASSWORD': 'netbox_123',
        'HOST': 'localhost',
        'PORT': '',
        'CONN_MAX_AGE': 300,
    }
}
...
SECRET_KEY = 'v0w(mr8B0IC$RK*sn^hYnQHjItfDA-TnzI0#AaTE1ji9KbzoIO'

* где заменяем значения для:

  • ALLOWED_HOSTS — перечисляем узлы, которые будут идентифицировать сервере: доменное имя для входа на netbox, IP-адрес сервера, локальный адрес.
  • PASSWORD — наш пароль для подключения к базе данных.
  • SECRET_KEY — серет, который мы сформировали выше.

Конфигурация готова.

Инициализация приложения и миграция базы

Запускаем скрипт upgrade.sh — он создаст виртуальное окружение, установит python-зависимости и выполнит миграции базы данных:

PYTHON=/usr/bin/python${PY_VER} /opt/netbox/upgrade.sh

* процесс может занять несколько минут — скрипт скачивает и собирает все python-пакеты.

Зависимости установлены, база данных проинициализирована.

Создание суперпользователя

Активируем виртуальное окружение:

source /opt/netbox/venv/bin/activate

Переходим в каталог с manage.py:

cd /opt/netbox/netbox

Создаём учётную запись администратора:

python3 manage.py createsuperuser

Отвечаем на вопросы мастера, например: 

Username: admin
Email address: admin@dmosk.ru
Password:
Password (again):
Superuser created successfully.

Выходим из виртуального окружения:

deactivate

Администратор создан.

Автоматическая очистка

NetBox поставляется со скриптом ежедневной очистки — он удаляет устаревшие сессии, истёкшие изменения и прочий накопленный мусор. Подключаем его через cron простой командой:

ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping

Установка завершена. Можно запускать и пользоваться.

Настройка запуска Netbox

Рассмотрим процесс запуска, также, по шагам.

Проверка запуска

Прежде чем настраивать systemd и nginx, проверим, что приложение стартует. Запускаем тестовый сервер:

sudo -u netbox /opt/netbox/venv/bin/python /opt/netbox/netbox/manage.py runserver 0.0.0.0:8000 --insecure

В отдельном терминале проверяем, что страница логина отдаётся:

curl http://127.0.0.1:8000/login/

* runserver не предназначен для продакшена — используем его только для проверки, после теста останавливаем сочетанием Ctrl+C.

Настройка службы для автозапуска (systemd)

Копируем конфигурацию Gunicorn:

cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py

Копируем unit-файлы systemd для NetBox и очереди фоновых задач:

cp /opt/netbox/contrib/*.service /etc/systemd/system/

Включаем автозапуск и запускаем оба сервиса:

systemctl enable --now netbox netbox-rq

Проверяем статус:

systemctl status netbox netbox-rq

Убеждаемся, что Gunicorn отвечает на своём порту:

curl http://127.0.0.1:8001/login/

* порт 8001 задан в скопированном gunicorn.py — при необходимости меняем его там же.

NetBox запущен как служба.

Настройка Nginx

Для использования красивого адреса, а также настройки https, удобнее всего использовать обратный прокси. В качестве такого revers-proxy будем использовать nginx.

Устанавливаем его:

apt install nginx

Копируем готовый конфиг NetBox для nginx:

cp /opt/netbox/contrib/nginx.conf /etc/nginx/sites-enabled/netbox.conf

Удаляем дефолтный конфиг, чтобы он не конфликтовал:

rm -f /etc/nginx/sites-enabled/default

Создаём SSL-сертификат:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/netbox.key -out /etc/ssl/certs/netbox.crt -subj "/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=netbox.dmosk.ru" -addext "subjectAltName=DNS:netbox.dmosk.ru,IP:192.168.1.10,IP:127.0.0.1"

* сертификат самоподписанный — подходит для теста. Для продакшена используем сертификат от доверенного удостоверяющего центра, например, бесплатного от Let's Encrypt.

Проверяем конфигурацию и перезапускаем nginx:

nginx -t && nginx -s reload

NetBox полностью готов к работе.

Открываем в браузер и переходим по адресу https://<доменное имя>. Заходим под учётной записью admin, которую создали на шаге создания суперпользователя. Дальше в интерфейсе NetBox добавляем сайты, стойки и оборудование, ведём IP-адресацию и строим карту сети — но это уже тема для отдельной инструкции по работе с NetBox.

# Ubuntu # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет

Дмитрий Моск
— IT-специалист.
Настройка серверов, услуги DevOps.

Нужна бесплатная консультация?

Мини-инструкции

Установка и настройка кластера Ceph на Ubuntu для организации дискового хранилища

Настройка Dovecot Solr для ускорения поиска по почте

Установка и настройка Signaling Server (High-performance backend) для Nextcloud Talk на Ubuntu Server

Как установить и настроить Netbox на Linux Ubuntu

Как установить и настроить сервис S3 на базе Minio на Linux

Организация сервиса календаря и адресной книги Baikal на Linux Debian

Установка и запуск Aptly API, а также примеры работы с ним

Другие инструкции

Все статьи

Нужна помощь? Пишите:






Реклама