Установка NetBox IRM на 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.
- Установите сервер PostgreSQL:
sudo dnf install postgresql-server(Подтвердите установку, введите y при запросе.)

- Инициализируйте базу данных:
sudo postgresql-setup --initdbОжидаемый вывод: “Initializing database in …”.

- Включите шифрование паролей по умолчанию (SCRAM). Откройте /var/lib/pgsql/data/postgresql.conf:
sudo nano /var/lib/pgsql/data/postgresql.confНайдите и измените:
password_encryption = scram-sha-256Сохраните файл.
- Настройте метод аутентификации в /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:
sudo systemctl start postgresql
sudo systemctl enable postgresql
sudo systemctl status postgresqlПроверьте, что сервис запущен и включён.

- Задайте пароль для системного пользователя 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
Примечание: если вы планируете внешний доступ к БД, настройте соответствующие правила доступа/брандмауэр и ограничьте подключение по сети.
2. Установка и настройка Redis
Redis используется для кэша и очередей (tasks, RQ). Репозиторий Rocky Linux 9 содержит Redis v6.
- Установите Redis:
sudo dnf install redis
- Откройте конфиг /etc/redis/redis.conf и задайте пароль:
sudo nano /etc/redis/redis.confИзмените или добавьте строку:
requirepass RedisPasswordNetBoxСохраните файл.
- Запустите и включите Redis:
sudo systemctl start redis
sudo systemctl enable redis
sudo systemctl status redis
- Проверьте работу через redis-cli:
redis-cli
ping
# Вернёт: (error) NOAUTH authentication required
AUTH RedisPasswordNetBox
# Вернёт: OK
ping
# Вернёт: PONG
Примечание: хранение пароля в открытом виде в конфигурациях — простой вариант для небольших установок, но в продакшене рекомендуется использовать менеджер секретов и доступ по ACL.
3. Установка NetBox
NetBox поддерживает Python 3.8—3.11; Rocky Linux 9 включает Python 3.9.
- Установите системные зависимости:
sudo dnf install gcc libxml2-devel libxslt-devel libffi-devel libpq-devel openssl-devel redhat-rpm-config git
- Создайте системного пользователя 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- Скопируйте пример конфигурации и сгенерируйте SECRET_KEY:
sudo -u netbox cp configuration_example.py configuration.py
sudo -u netbox python3 ../generate_secret_key.pyСкопируйте сгенерированный SECRET_KEY и вставьте в configuration.py.

- Отредактируйте 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*'Сохраните изменения.
- Запустите скрипт обновления/установки NetBox (создаёт виртуальное окружение, устанавливает зависимости, выполняет миграции и собирает статику):
sudo -u netbox /opt/netbox/upgrade.sh
Ожидаемый финал: установка успешно завершена.

4. Конфигурация NetBox: пользователь, cron, systemd
- Активируйте виртуальное окружение и создайте суперпользователя Django:
source /opt/netbox/venv/bin/activate
cd /opt/netbox/netbox
python3 manage.py createsuperuserВведите имя пользователя, email и пароль. Ожидаемый вывод: “Superuser created successfully.”

- Настройте ежедневную уборку (housekeeping):
sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping- Настройка 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'Сохраните.

- Скопируйте 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Проверьте, что оба сервиса запущены.


5. Настройка httpd как обратного прокси (reverse proxy)
- Установите httpd:
sudo dnf install httpd
- Создайте виртуальный хост /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; убедитесь, что нужные модули загружены (обычно включены в дистрибутиве).
- Проверьте конфигурацию:
sudo apachectl configtestВы должны увидеть: “Syntax OK”.

- Запустите и включите httpd:
sudo systemctl start httpd
sudo systemctl enable httpd
sudo systemctl status httpd
- Откройте порты HTTP/HTTPS в firewalld:
sudo firewall-cmd --add-servic={http,https} --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
6. Получение SSL‑сертификата через Certbot и Let’s Encrypt
- Установите Certbot и плагин для Apache:
sudo dnf install certbot python3-certbot-apache
- Запросите сертификат (замените email и домен):
sudo certbot --apache2 --agree-tos --redirect --hsts --staple-ocsp --email your-email@example.com -d netbox.howtoforge.localCertbot автоматически обновит конфигурацию httpd, включит перенаправление с HTTP на HTTPS и создаст сертификаты в /etc/letsencrypt/live/your-domain/.
Примечание: проверьте доступность домена по HTTP до запроса, иначе проверка Let’s Encrypt не выполнится.
7. Вход в NetBox и базовая проверка
Откройте браузер и перейдите по HTTPS на ваш домен, например: https://netbox.howtoforge.local/
Вы увидите главную страницу NetBox.

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

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

Рекомендации по безопасности и эксплуатации
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 выполнена и восстановлена в тестовой среде.
Тест‑кейсы и приёмочные проверки
- Тест подключения к БД: psql –username netbox –host localhost netboxdb (ожидается подключение).
- Тест Redis: AUTH ваш_пароль; PING → PONG.
- Тест HTTP→HTTPS: curl -I http://netbox.howtoforge.local → 301 редирект на https.
- Тест UI: создание устройства, проверка поиска и API (GET /api/).
- Тест обновления: выполнить 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?
- Остановите сервис netbox и netbox-rq.
- Восстановите бэкап PostgreSQL (pg_restore/pg_basebackup).
- Запустите сервисы и проверьте логи.
Можно ли использовать Nginx вместо Apache?
Да. Nginx широко используется как reverse‑proxy и статический сервер для NetBox. В конфиге нужно настроить proxy_pass на 127.0.0.1:8001 и раздачу /static.
Как обновлять NetBox безопасно?
- Создайте тестовую среду.
- Выполните upgrade.sh и проверьте миграции в тестовой среде.
- Сделайте бэкап БД и конфигов перед обновлением продакшен.
Короткий план действий (SOP) — 10 шагов
- Подготовить сервер и DNS.
- Установить PostgreSQL, инициализировать и включить SCRAM.
- Создать БД netboxdb и пользователя netbox.
- Установить Redis и задать пароль.
- Установить системные зависимости и git.
- Склонировать NetBox в /opt/netbox и настроить configuration.py.
- Запустить /opt/netbox/upgrade.sh.
- Создать суперпользователя, настроить cron и systemd.
- Настроить httpd/nginx как reverse proxy.
- Получить 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), я могу подготовить готовые плейбуки и примеры конфигураций.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента