Гид по технологиям

Установка NetBox IRM на Rocky Linux 9 — пошаговое руководство

• 8 min read • DevOps • Обновлено 21 Nov 2025
Установка NetBox на Rocky Linux 9
Установка NetBox на Rocky Linux 9

Что такое NetBox — кратко

NetBox — это веб-приложение для моделирования инфраструктуры (IRM), которое помогает вести учёт устройств, стоек, сетей, IP-адресов, цепочек соединений, виртуализации и секретов. Простыми словами: это источник правды (single source of truth) для сетевой и инфраструктурной команды.

Важно: NetBox написан на Python/Django и по умолчанию использует PostgreSQL и Redis.

Основные понятия (1‑строчное определение)

  • IRM: модель ресурсов инфраструктуры, хранит конфигурации и связи.
  • PostgreSQL: СУБД, где хранится основная база NetBox.
  • Redis: in‑memory key‑value хранилище, используется для кэша и очередей.
  • Gunicorn: WSGI‑сервер для запуска Django‑приложения.
  • httpd: Apache как обратный прокси для публичного доступа.

Содержание

  • Подготовка и требования
  • Установка и настройка PostgreSQL (SCRAM)
  • Установка и настройка Redis
  • Установка NetBox (виртуальное окружение, SECRET_KEY)
  • Конфигурация NetBox (пользователь, cron, systemd)
  • Настройка httpd как reverse proxy и firewall
  • Получение SSL от Let’s Encrypt с Certbot
  • Логин и базовая проверка
  • Безопасность, резервирование и тесты
  • Рекомендации для продакшена и чек‑листы
  • Часто задаваемые вопросы

Требования перед началом

  • Сервер с Rocky Linux 9 (в примерах хост «netbox-rocky»).
  • Непривилегированный пользователь с sudo.
  • SELinux в режиме permissive (или правильно настроен для сервисов).
  • Домен или поддомен, указывающие на IP сервера (в примерах netbox.howtoforge.local).
  • Доступ к интернету для установки пакетов и получения сертификатов.

Важно: операции требуют прав root/sudo. Рекомендуется выполнять установку в тестовой среде перед продакшеном.


1. Установка и настройка PostgreSQL

NetBox требует PostgreSQL >= 10; репозиторий Rocky Linux 9 поставляет v13.

  1. Установите сервер PostgreSQL:
sudo dnf install postgresql-server

(Подтвердите установку, введите y при запросе.)

Установка PostgreSQL

  1. Инициализируйте базу данных:
sudo postgresql-setup --initdb

Ожидаемый вывод: “Initializing database in …”.

Инициализация PostgreSQL

  1. Включите шифрование паролей по умолчанию (SCRAM). Откройте /var/lib/pgsql/data/postgresql.conf:
sudo nano /var/lib/pgsql/data/postgresql.conf

Найдите и измените:

password_encryption = scram-sha-256

Сохраните файл.

  1. Настройте метод аутентификации в /var/lib/pgsql/data/pg_hba.conf:
sudo nano /var/lib/pgsql/data/pg_hba.conf

Пример (локальные подключения через SCRAM):

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# 'local' — только Unix domain socket
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32          scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128               scram-sha-256

Сохраните файл.

Настройка аутентификации PostgreSQL

  1. Запустите и включите сервис PostgreSQL:
sudo systemctl start postgresql
sudo systemctl enable postgresql
sudo systemctl status postgresql

Проверьте, что сервис запущен и включён.

Проверка PostgreSQL

  1. Задайте пароль для системного пользователя postgres и создайте базу и пользователя для NetBox:

Войдите в psql под системным владельцем:

sudo -u postgres psql

В psql выполните (замените пароли на ваши):

ALTER USER postgres WITH PASSWORD 'PostgreSQLPass';
CREATE DATABASE netboxdb;
CREATE USER netbox WITH ENCRYPTED PASSWORD 'NetBoxRocks';
GRANT ALL PRIVILEGES ON DATABASE netboxdb TO netbox;

Выйдите из psql (Ctrl+D).

Установка пароля и создание БД

Проверьте подключение под пользователем netbox:

sudo -u postgres psql --username netbox --password --host localhost netboxdb
\conninfo

Проверка подключения к netboxdb

Примечание: если вы планируете внешний доступ к БД, настройте соответствующие правила доступа/брандмауэр и ограничьте подключение по сети.


2. Установка и настройка Redis

Redis используется для кэша и очередей (tasks, RQ). Репозиторий Rocky Linux 9 содержит Redis v6.

  1. Установите Redis:
sudo dnf install redis

Установка Redis

  1. Откройте конфиг /etc/redis/redis.conf и задайте пароль:
sudo nano /etc/redis/redis.conf

Измените или добавьте строку:

requirepass RedisPasswordNetBox

Сохраните файл.

  1. Запустите и включите Redis:
sudo systemctl start redis
sudo systemctl enable redis
sudo systemctl status redis

Запуск Redis

  1. Проверьте работу через redis-cli:
redis-cli
ping
# Вернёт: (error) NOAUTH authentication required
AUTH RedisPasswordNetBox
# Вернёт: OK
ping
# Вернёт: PONG

Проверка Redis PING

Примечание: хранение пароля в открытом виде в конфигурациях — простой вариант для небольших установок, но в продакшене рекомендуется использовать менеджер секретов и доступ по ACL.


3. Установка NetBox

NetBox поддерживает Python 3.8—3.11; Rocky Linux 9 включает Python 3.9.

  1. Установите системные зависимости:
sudo dnf install gcc libxml2-devel libxslt-devel libffi-devel libpq-devel openssl-devel redhat-rpm-config git

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

  1. Создайте системного пользователя netbox и каталог установки:
sudo useradd -r -d /opt/netbox -s /usr/sbin/nologin netbox
sudo mkdir -p /opt/netbox
cd /opt/netbox
sudo git clone -b master --depth 1 https://github.com/netbox-community/netbox.git .
sudo chown -R netbox:netbox /opt/netbox
cd /opt/netbox/netbox/netbox
  1. Скопируйте пример конфигурации и сгенерируйте SECRET_KEY:
sudo -u netbox cp configuration_example.py configuration.py
sudo -u netbox python3 ../generate_secret_key.py

Скопируйте сгенерированный SECRET_KEY и вставьте в configuration.py.

Генерация SECRET_KEY

  1. Отредактируйте configuration.py (под netbox):
sudo -u netbox nano configuration.py

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

# domain and IP address
ALLOWED_HOSTS = ['netbox.howtoforge.local', '192.168.5.59']

# database configuration
DATABASE = {
    'NAME': 'netboxdb',
    'USER': 'netbox',
    'PASSWORD': 'NetBoxRocks',
    'HOST': 'localhost',
    'PORT': '',
    'CONN_MAX_AGE': 300,
}

# Redis cache configuration
REDIS = {
    'tasks': {
        'HOST': 'localhost',
        'PORT': 6379,
        'PASSWORD': 'RedisPasswordNetBox',
        'DATABASE': 0,
        'SSL': False,
    },
    'caching': {
        'HOST': 'localhost',
        'PORT': 6379,
        'PASSWORD': 'RedisPasswordNetBox',
        'DATABASE': 1,
        'SSL': False,
    }
}

# Secret key
SECRET_KEY = '-K0AV#USk(!-6hAEF-8NMgweJh6ex&+j0Kb$N7bi=*jsF9TOg*'

Сохраните изменения.

  1. Запустите скрипт обновления/установки NetBox (создаёт виртуальное окружение, устанавливает зависимости, выполняет миграции и собирает статику):
sudo -u netbox /opt/netbox/upgrade.sh

Установка NetBox

Ожидаемый финал: установка успешно завершена.

Установка завершена


4. Конфигурация NetBox: пользователь, cron, systemd

  1. Активируйте виртуальное окружение и создайте суперпользователя Django:
source /opt/netbox/venv/bin/activate
cd /opt/netbox/netbox
python3 manage.py createsuperuser

Введите имя пользователя, email и пароль. Ожидаемый вывод: “Superuser created successfully.”

Создание администратора

  1. Настройте ежедневную уборку (housekeeping):
sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping
  1. Настройка Gunicorn: скопируйте и отредактируйте конфиг:
sudo -u netbox cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
sudo -u netbox nano /opt/netbox/gunicorn.py

Измените bind, чтобы приложение слушало локально:

bind = '127.0.0.1:8001'

Сохраните.

Настройка Gunicorn

  1. Скопируйте systemd‑юниты и загрузите их:
sudo cp -v /opt/netbox/contrib/*.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl start netbox netbox-rq
sudo systemctl enable netbox netbox-rq
sudo systemctl status netbox
sudo systemctl status netbox-rq

Проверьте, что оба сервиса запущены.

Статус netbox-rq

Статус netbox


5. Настройка httpd как обратного прокси (reverse proxy)

  1. Установите httpd:
sudo dnf install httpd

Установка httpd

  1. Создайте виртуальный хост /etc/httpd/conf.d/netbox.conf:
sudo nano /etc/httpd/conf.d/netbox.conf

Вставьте следующий конфиг (замените ServerName на ваш домен):


    ProxyPreserveHost On

    # ИЗМЕНИТЕ НА ВАШ СЕРВЕР
    ServerName netbox.howtoforge.local

    Alias /static /opt/netbox/netbox/static

    
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Require all granted
    

    
        ProxyPass !
    

    RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
    ProxyPass / http://127.0.0.1:8001/
    ProxyPassReverse / http://127.0.0.1:8001/

Сохраните файл.

Примечание: конфигурация использует mod_proxy и mod_headers; убедитесь, что нужные модули загружены (обычно включены в дистрибутиве).

  1. Проверьте конфигурацию:
sudo apachectl configtest

Вы должны увидеть: “Syntax OK”.

Проверка виртуального хоста

  1. Запустите и включите httpd:
sudo systemctl start httpd
sudo systemctl enable httpd
sudo systemctl status httpd

Проверка httpd

  1. Откройте порты HTTP/HTTPS в firewalld:
sudo firewall-cmd --add-servic={http,https} --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

Настройка firewalld


6. Получение SSL‑сертификата через Certbot и Let’s Encrypt

  1. Установите Certbot и плагин для Apache:
sudo dnf install certbot python3-certbot-apache

Установка Certbot

  1. Запросите сертификат (замените email и домен):
sudo certbot --apache2 --agree-tos --redirect --hsts --staple-ocsp --email your-email@example.com -d netbox.howtoforge.local

Certbot автоматически обновит конфигурацию httpd, включит перенаправление с HTTP на HTTPS и создаст сертификаты в /etc/letsencrypt/live/your-domain/.

Примечание: проверьте доступность домена по HTTP до запроса, иначе проверка Let’s Encrypt не выполнится.


7. Вход в NetBox и базовая проверка

Откройте браузер и перейдите по HTTPS на ваш домен, например: https://netbox.howtoforge.local/

Вы увидите главную страницу NetBox.

Главная NetBox

Нажмите Login и введите созданные учётные данные суперпользователя.

Экран входа NetBox

После входа вы попадёте на панель управления.

Панель NetBox


Рекомендации по безопасности и эксплуатации

Important: следующие рекомендации применимы для продакшен‑среды.

  • Храните пароли и SECRET_KEY в защищённом хранилище (Vault, HashiCorp, AWS KMS) вместо plain‑text в конфиге.
  • Используйте бэкап базы данных и регулярные тесты восстановления.
  • Настройте мониторинг процессов netbox и netbox-rq (systemd + Prometheus экспортёр).
  • Ограничьте доступ к PostgreSQL по сети, используйте TLS или VPN для удалённого администрирования.
  • Обновляйте систему и зависимости, проверяйте совместимость версий NetBox и библиотек.
  • Включите SELinux в enforcing после дополнительных проверок и правил для httpd и Gunicorn, либо документируйте исключения.

Жёсткие меры безопасности (повысить уровень защиты)

  • Разверните NetBox за WAF/NGINX с rate limiting и фильтрацией.
  • Настройте двухфакторную аутентификацию (через SSO/LDAP с MFA).
  • Шифруйте резервные копии и передаваемые логи при переносе за пределы сервера.

Чек‑лист ролей (кто что должен сделать)

Администратор системы:

  • Подготовить сервер и сеть.
  • Установить PostgreSQL, Redis, httpd.
  • Настроить SELinux и firewall.

Сетевой инженер:

  • Зарезервировать IP/домен и проверить DNS.
  • Обеспечить доступы между компонентами (DB/Redis/NetBox).

DevOps/Инженер интеграций:

  • Настроить CI/CD для обновлений NetBox.
  • Интегрировать мониторинг и бэкапы.

Команда безопасности:

  • Проверить хранение секретов.
  • Настроить сканирование уязвимостей.

Модель принятия решений — выбор архитектуры

flowchart TD
  A[Нужен ли внешний доступ к NetBox?] -->|Да| B{Домен и публичный IP}
  B -->|Есть| C[Настроить httpd + Let's Encrypt]
  B -->|Нет| D[Внутренний доступ: использовать VPN/ACL]
  A -->|Нет| E[Развернуть только в LAN]
  C --> F{Требуется SSO}
  F -->|Да| G[Настроить LDAP/SSO 'Okta/AzureAD']
  F -->|Нет| H[Локальные учётные записи]

Критерии приёмки (после установки)

  • Веб‑интерфейс доступен по HTTPS с валидным сертификатом.
  • Вход под созданным суперпользователем успешен.
  • Сервисы systemd: netbox и netbox-rq активны и рестартуются корректно.
  • Записи DB создаются и читаются (тест: создать устройство и проверить отображение).
  • Резервная копия PostgreSQL выполнена и восстановлена в тестовой среде.

Тест‑кейсы и приёмочные проверки

  1. Тест подключения к БД: psql –username netbox –host localhost netboxdb (ожидается подключение).
  2. Тест Redis: AUTH ваш_пароль; PING → PONG.
  3. Тест HTTP→HTTPS: curl -I http://netbox.howtoforge.local → 301 редирект на https.
  4. Тест UI: создание устройства, проверка поиска и API (GET /api/).
  5. Тест обновления: выполнить upgrade.sh в тестовой среде и проверить миграции.

Отказа‑примеры: когда установка может не сработать

  • DNS не резолвится → Certbot не сможет выпустить сертификат.
  • Права на файлы в /opt/netbox установлены неправильно → Gunicorn/NetBox не стартуют.
  • SELinux в enforcing и отсутствуют необходимые политик → httpd или gunicorn блокируются.
  • Неправильные пароли/методы аутентификации в pg_hba.conf → ошибки подключения к БД.

Миграция и совместимость (коротко)

  • Перед апгрейдом NetBox проверьте требования конкретной версии в релиз‑нотах.
  • Рекомендуется тестировать миграции на staging‑среде.
  • При смене версии PostgreSQL выполните бэкап и тестовое восстановление.

Советы по бэкапу и восстановлению

  • Резервируйте PostgreSQL с помощью pg_dump или pg_basebackup.
  • Сохраняйте каталоги: /opt/netbox (конфиги, venv) и /var/lib/pgsql (если используете файловые бэкапы).
  • Тестируйте восстановление на отдельной машине — это ключевой пункт SOP.

Совместная интеграция и SSO

NetBox поддерживает внешние backend’ы аутентификации: LDAP, SAML/SSO (Okta, Azure AD). Для интеграции:

  • Настройте соответствующий плагин/коннектор и тестируйте вход отдельной группой пользователей.
  • Проверьте, какие атрибуты (имя, email, роль) передаются из IdP и корректно мапятся в NetBox.

Часто задаваемые вопросы

Как восстановить NetBox после сбоя PostgreSQL?

  1. Остановите сервис netbox и netbox-rq.
  2. Восстановите бэкап PostgreSQL (pg_restore/pg_basebackup).
  3. Запустите сервисы и проверьте логи.

Можно ли использовать Nginx вместо Apache?

Да. Nginx широко используется как reverse‑proxy и статический сервер для NetBox. В конфиге нужно настроить proxy_pass на 127.0.0.1:8001 и раздачу /static.

Как обновлять NetBox безопасно?

  1. Создайте тестовую среду.
  2. Выполните upgrade.sh и проверьте миграции в тестовой среде.
  3. Сделайте бэкап БД и конфигов перед обновлением продакшен.

Короткий план действий (SOP) — 10 шагов

  1. Подготовить сервер и DNS.
  2. Установить PostgreSQL, инициализировать и включить SCRAM.
  3. Создать БД netboxdb и пользователя netbox.
  4. Установить Redis и задать пароль.
  5. Установить системные зависимости и git.
  6. Склонировать NetBox в /opt/netbox и настроить configuration.py.
  7. Запустить /opt/netbox/upgrade.sh.
  8. Создать суперпользователя, настроить cron и systemd.
  9. Настроить httpd/nginx как reverse proxy.
  10. Получить SSL через Certbot и проверить вход в систему.

Примечания по локализации (для русскоязычных команд)

  • Локальные имена хостов и домены меняйте на соответствующие вашей инфраструктуре.
  • Если ваша организация требует централизованного хранения секретов — интегрируйте HashiCorp Vault или аналог.

Короткое объявление для команды (пример)

NetBox успешно установлен на сервере netbox-rocky. Доступ по HTTPS: https://netbox.howtoforge.local/. Пожалуйста, проверьте создание записей, интеграции и подтвердите, что SSO работает корректно.


Заключение

В этом руководстве описан полный цикл установки NetBox на Rocky Linux 9: от подготовки PostgreSQL с SCRAM, настройки Redis, развёртывания NetBox и его служб до настройки обратного прокси и получения SSL‑сертификата. После установки рекомендуется перевести SELinux в enforcing с корректной политикой, настроить мониторинг и регулярный бэкап данных.

Если у вас есть вопросы по конкретной части установки (например, интеграция LDAP, настройка Nginx вместо Apache или автоматизация через Ansible), я могу подготовить готовые плейбуки и примеры конфигураций.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро