MAATRIX / Блог / NetBox на Ubuntu 24.04: пошаговая установка

NetBox на Ubuntu 24.04: пошаговая установка

MAATRIX

Учёт IP-адресов в экселе живёт ровно до момента, когда два инженера в разное время выдают один и тот же диапазон разным клиентам, а найти, какие порты свитча на дальней стойке ещё свободны, можно только созвонившись с тем, кто «точно помнит». NetBox — открытая система IPAM/DCIM, которая держит модель сети, стоек, устройств и адресов в одном месте, с API, историей изменений и правами доступа. Ниже — пошаговая установка на чистый Ubuntu 24.04: от системных пакетов до рабочего интерфейса по HTTPS.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Что понадобится и как распределить ресурсы

NetBox — приложение на Django, поэтому по железу он не требователен: для тестового стенда и небольшой инфраструктуры (до нескольких сотен устройств и префиксов) достаточно 2 vCPU и 4 ГБ RAM. Если вы планируете держать в NetBox тысячи объектов, активно пользоваться API и подключить несколько плагинов — закладывайте 4 vCPU и 8 ГБ RAM с запасом. Диск — от 20 ГБ, основной расход тут не сам NetBox, а PostgreSQL по мере роста базы и логов.

СценарийvCPURAMДиск
Тест / небольшая сеть24 ГБ20 ГБ
Продакшн, средняя инфраструктура48 ГБ40 ГБ
Крупная инсталляция, плагины, много API-запросов6-816 ГБ60+ ГБ

Понадобятся открытые порты 80 и 443 (веб) и, если PostgreSQL и Redis стоят на этой же машине, доступ к ним ограничивайте localhost — наружу их светить не нужно. Домен для сервиса не обязателен, но с ним удобнее выпускать сертификат и не мучиться с самоподписанными.

Перед установкой обновите систему и поставьте базовые зависимости для сборки Python-пакетов:

sudo apt update && sudo apt -y upgrade
sudo apt install -y python3 python3-venv python3-dev python3-pip \
  build-essential libxml2-dev libxslt1-dev libffi-dev libpq-dev \
  libssl-dev zlib1g-dev git curl redis-tools

Ubuntu 24.04 несёт Python 3.12 из коробки — это входит в диапазон версий, которые поддерживает актуальная ветка NetBox 4.x, так что отдельно ставить другой Python не придётся. Точный минимум версии Python и PostgreSQL для вашего релиза NetBox всегда сверяйте с файлом requirements.txt и документацией на странице релиза — требования между минорными версиями иногда двигаются.

Устанавливаем PostgreSQL и создаём базу

NetBox хранит все данные в PostgreSQL, MySQL официально не поддерживается. Ставим сервер из репозитория Ubuntu — версии 16 в 24.04 более чем достаточно:

sudo apt install -y postgresql postgresql-contrib
sudo systemctl enable --now postgresql

Создаём пользователя и базу отдельно под NetBox, с явной кодировкой UTF8 — это важно, при другой локали/кодировке миграции могут падать:

sudo -u postgres psql <<'EOF'
CREATE DATABASE netbox;
CREATE USER netbox WITH PASSWORD 'замените_на_надёжный_пароль';
ALTER DATABASE netbox OWNER TO netbox;
GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;
\c netbox
GRANT CREATE ON SCHEMA public TO netbox;
EOF

Проверьте подключение до того, как переходить дальше — это экономит время на диагностике потом:

psql --host=localhost --username=netbox --password --dbname=netbox

Если база на удалённом сервере или вы хотите позже разнести компоненты по разным машинам, а не держать всё на одной — почитайте про настройку PostgreSQL на Ubuntu 24.04 отдельно: там подробнее про pg_hba.conf, права и базовую настройку под продакшн-нагрузку.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Redis для очередей, кеша и вебхуков

Redis в NetBox используется под две разные задачи, и это стоит понимать до правки конфига: очередь фоновых заданий (RQ — импорт, синхронизация, отправка вебхуков) и кеширование. В конфигурации они разведены на два логических инстанса, обычно через разные номера БД одного и того же Redis:

sudo apt install -y redis-server
sudo systemctl enable --now redis-server
redis-cli ping

По умолчанию Redis слушает только localhost без пароля — для одиночного сервера это приемлемо, но если он открыт наружу или стоит на отдельной машине, обязательно включите requirepass в /etc/redis/redis.conf и укажите пароль в конфиге NetBox. Без Redis NetBox не запустится: фоновые задачи и вебхуки завязаны именно на очередь RQ, а не на встроенный планировщик.

Разворачиваем код NetBox и Python-окружение

Заводим отдельного системного пользователя — от root NetBox запускать не нужно:

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

Клонируем репозиторий и переключаемся на актуальный стабильный тег. Версию заранее не фиксирую — на конец августа 2026 ветка 4.x активно развивается, и правильный номер релиза стоит смотреть непосредственно на странице github.com/netbox-community/netbox/releases, а не полагаться на цифры из старых статей:

cd /opt
sudo git clone -b master --single-branch https://github.com/netbox-community/netbox.git
cd netbox
sudo git checkout <актуальный_тег_релиза>   # например v4.2.x — смотрите Releases

Копируем пример конфига и правим под себя:

sudo cp netbox/netbox/configuration_example.py netbox/netbox/configuration.py

Ключевые параметры в configuration.py:

ALLOWED_HOSTS = ['netbox.example.com', '203.0.113.10']

DATABASE = {
    'NAME': 'netbox',
    'USER': 'netbox',
    'PASSWORD': 'замените_на_надёжный_пароль',
    'HOST': 'localhost',
    'PORT': '',
    'CONN_MAX_AGE': 300,
}

REDIS = {
    'tasks': {
        'HOST': 'localhost',
        'PORT': 6379,
        'PASSWORD': '',
        'DATABASE': 0,
        'SSL': False,
    },
    'caching': {
        'HOST': 'localhost',
        'PORT': 6379,
        'PASSWORD': '',
        'DATABASE': 1,
        'SSL': False,
    },
}

SECRET_KEY = ''  # сгенерируем ниже

SECRET_KEY в комплекте есть готовый скрипт-генератор — не придумывайте строку руками:

python3 /opt/netbox/netbox/generate_secret_key.py

Полученную строку вставьте в SECRET_KEY. Дальше запускаем upgrade.sh — этот скрипт из репозитория сам создаёт виртуальное окружение, ставит зависимости из requirements.txt, прогоняет миграции базы, собирает статику и чистит устаревшие типы контента:

cd /opt/netbox
sudo ./upgrade.sh

Скрипт идемпотентен: его же вы будете запускать при каждом будущем обновлении NetBox, просто предварительно сделав git pull и git checkout на новый тег.

Суперпользователь и systemd-сервисы

Создаём администратора для входа в веб-интерфейс:

cd /opt/netbox
source venv/bin/activate
python3 netbox/manage.py createsuperuser
deactivate

NetBox работает как два процесса под systemd: сам веб-сервис (gunicorn) и воркер очереди RQ. Готовые unit-файлы лежат в репозитории — копируем их и подставляем свои пути, если клонировали не в /opt/netbox:

sudo cp /opt/netbox/contrib/netbox.service /etc/systemd/system/
sudo cp /opt/netbox/contrib/netbox-rq.service /etc/systemd/system/
sudo mkdir -p /etc/systemd/system/netbox.service.d
sudo cp /opt/netbox/contrib/netbox.env /etc/systemd/system/netbox.service.d/netbox.env 2>/dev/null || true

sudo chown --recursive netbox /opt/netbox
sudo systemctl daemon-reload
sudo systemctl enable --now netbox netbox-rq

Проверяем, что оба сервиса реально поднялись, а не просто «запустились и упали»:

sudo systemctl status netbox netbox-rq
sudo journalctl -u netbox -n 50 --no-pager

Типичная причина падения на этом шаге — опечатка в DATABASE/REDIS в configuration.py или права на каталог /opt/netbox, если не выполнили chown перед стартом. Второй частый случай — не хватает памяти под воркеры gunicorn на VPS с 1-2 ГБ RAM; количество воркеров задаётся в contrib/gunicorn.py, при нехватке ресурсов уменьшите workers до 2-3.

Reverse-proxy с SSL и firewall

Сам NetBox слушает по умолчанию 127.0.0.1:8001 и наружу торчать не должен — перед ним нужен reverse-proxy, который отдаст HTTPS и статику. Вариантов два: Nginx с ручным Certbot или Caddy, который сам выпускает и продлевает сертификат. Если у вас уже есть привычная связка Nginx — используйте её; если разворачиваете с нуля и хочется меньше ручной возни, Caddy закрывает вопрос сертификата одной строкой в конфиге — подробный разбор есть в статье про Caddy с авто-SSL на Ubuntu 24.04.

Минимальный Caddyfile для NetBox:

netbox.example.com {
    reverse_proxy 127.0.0.1:8001
    encode gzip
}

Если выбираете Nginx, обязательно пропишите отдачу статики напрямую из каталога /opt/netbox/netbox/static/ — иначе интерфейс будет работать, но без стилей и JS:

server {
    listen 443 ssl;
    server_name netbox.example.com;

    location /static/ {
        alias /opt/netbox/netbox/static/;
    }

    location / {
        proxy_pass http://127.0.0.1:8001;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Закройте firewall всё, кроме SSH, 80 и 443 — 8001-й наружу открывать не нужно ни при каком раскладе. Быстрая настройка UFW под это описана в статье про firewall UFW на Ubuntu 24.04:

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

После этого открывайте https://netbox.example.com, входите под созданным суперпользователем — и можно заводить первый сайт (Site), стойки (Racks), типы устройств и IP-префиксы. Начинать разумно с малого: один сайт, несколько устройств руками, чтобы прочувствовать модель данных, а импорт больших списков через API или CSV подключать уже после того, как структура ролей и статусов устоялась под вашу сеть.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

Частые вопросы

Обязателен ли Redis, можно ли обойтись без него?

Нет, без Redis NetBox не запустится — на нём завязаны и фоновые задачи (RQ), и часть кеша. Ставить его отдельно от базы смысла обычно нет, если это не крупная инсталляция с несколькими веб-нодами.

Можно ли поставить NetBox через Docker вместо ручной установки?

Да, у проекта есть официальный netbox-docker репозиторий, это часто более быстрый путь для тестового стенда. Ручная установка, описанная здесь, даёт больше контроля над версиями компонентов и удобнее, если вы уже управляете PostgreSQL/Redis вне контейнеров как общей инфраструктурой.

Как обновлять NetBox без риска сломать данные?

Сначала бэкап базы (pg_dump), затем git fetch, git checkout на новый тег и запуск upgrade.sh — он сам прогонит миграции. Перед мажорным обновлением (например, между крупными релизными ветками) обязательно читайте UPGRADING.md в репозитории — там перечисляют breaking changes конкретного перехода.

Нужен ли для NetBox отдельный сервер, или можно на одной машине с другими сервисами?

Для небольшой команды вполне можно держать NetBox рядом с другими лёгкими сервисами на одном VPS — он не прожорлив. Если планируете растить базу устройств и активно дёргать API из внешних систем (автоматизация, мониторинг), лучше выделить отдельный инстанс, чтобы пиковая нагрузка на PostgreSQL не задевала соседей.

Поддерживает ли NetBox LDAP или SSO для входа сотрудников?

Да, через дополнительные бэкенды аутентификации (LDAP, SAML, OAuth2/OIDC) — это настраивается отдельно в configuration.py и требует дополнительных Python-пакетов помимо базового набора. В этой статье не рассматривали, чтобы не растягивать установку — в актуальной документации проекта это отдельный раздел.

Что делать, если после обновления Ubuntu или Python перестал работать venv?

Пересоздайте виртуальное окружение: удалите каталог venv внутри /opt/netbox и заново запустите upgrade.sh — он создаст его с нуля под текущий системный Python и переустановит зависимости из requirements.txt.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →