NetBox. Установка
Установка NetBox.
Содержание
1 Системные требования
2 Предварительная подготовка
- Будем устанавливать на отдельную операционную систему.
- Rocky Linux. Установка сервера
3 Установка компонент
3.1 Python
- Установим python-3.12:
1dnf -y install python3.12 python3.12-devel
- Добавим варианты python в список альтернатив:
- Выберем необходимую версию python:
1alternatives --config python
3.2 Postgres
- Версии, которая идёт в комплекте с дистрибутивом, достаточно.
- Но лучше установить версию поновее.
- Смотрим, какие версии в наличии:
1dnf module list postgresql
- Установим postgresql-16:
1dnf module -y install postgresql:16
- Проверьте установленную версию:
1postgres -V
- Инициализируем базу данных:
1postgresql-setup --initdb --unit postgresql
- Проверим, что в
/var/lib/pgsql/data/postgresql.conf
установлен алгоритм шифрования:1password_encryption = scram-sha-256
- Замените параметры внутреннего подключения:
1sed -i -e 's/^\(host[ ]*all.*\)ident/\1scram-sha-256/' /var/lib/pgsql/data/pg_hba.conf
- Запустим postgres:
1systemctl enable --now postgresql
- Подключимся к базе данных:
1sudo -u postgres psql
- Создадим базу данных (укажите необходимый пароль):
- Проверьте подключение к базе данных:
1psql --username netbox --password --host localhost netbox
- После подключения посмотрите параметры соединения:
3.3 Redis
Redis — быстрое хранилище данных типа ключ‑значение в памяти.
С 2024 года сменила лицензию на SSPL (закрытую).
Установим redis:
1dnf -y install redis
Запустим redis:
1systemctl enable --now redis
Проверим, что сервер работает:
1redis-cli ping
- В качестве ответа должен быть
PONG
.
- В качестве ответа должен быть
3.4 NetBox
3.4.1 Предварительная установка NetBox
- Установим необходимое программное обеспечение:
1dnf -y install gcc libxml2-devel libxslt-devel libffi-devel libpq-devel openssl-devel redhat-rpm-config git
- Клонируем репозиторий:
- Создадим нового системного пользователя:
3.4.2 Конфигурация Netbox
- Создадим файл конфигурации:
- Сконфигурим необходимые параметры.
ALLOWED_HOSTS
- Список допустимых имен хостов и IP-адресов, по которым можно связаться с этим сервером (имя вашего сервера).
- Необходимо указать хотя бы одно имя или IP-адрес, например:
1ALLOWED_HOSTS = ['netbox.example.com', '192.0.2.123']
- Если вы еще не уверены, каким будет доменное имя и/или IP-адрес установки NetBox, вы можете установить подстановочный знак (звездочку), чтобы разрешить все значения хоста:
1ALLOWED_HOSTS = ['*']
DATABASE
- Сведения о конфигурации базы данных.
- Нужно задать имя пользователя и пароль, используемые при настройке PostgreSQL.
- Если служба запущена на удалённом хосте, обновите параметры HOST и PORT:
1DATABASE = { 2 'NAME': 'netbox', # Database name 3 'USER': 'netbox', # PostgreSQL username 4 'PASSWORD': '<password>', # PostgreSQL password 5 'HOST': 'localhost', # Database server 6 'PORT': '', # Database port (leave blank for default) 7 'CONN_MAX_AGE': 300, # Max database connection age (seconds) 8}
REDIS
- NetBox требует указания двух отдельных баз данных Redis:
tasks
иcaching
. - Обе они могут предоставляться одной и той же службой Redis, однако каждый из них должен иметь уникальный числовой идентификатор базы данных.
1REDIS = { 2 'tasks': { 3 'HOST': 'localhost', # Redis server 4 'PORT': 6379, # Redis port 5 'PASSWORD': '', # Redis password (optional) 6 'DATABASE': 0, # Database ID 7 'SSL': False, # Use SSL (optional) 8 }, 9 'caching': { 10 'HOST': 'localhost', 11 'PORT': 6379, 12 'PASSWORD': '', 13 'DATABASE': 1, # Unique ID for second database 14 'SSL': False, 15 } 16}
- NetBox требует указания двух отдельных баз данных Redis:
SECRET_KEY
- Этому параметру должен быть назначен случайно сгенерированный ключ, используемый в качестве соли для хеширования и связанных с ним криптографических функций.
- Этот ключ должен быть уникальным для данной установки, и его рекомендуется иметь длину не менее 50 символов. Его не следует использовать за пределами локальной системы.
- Простой скрипт Python с именем
generate_secret_key.py
предоставляется в родительском каталоге для помощи в создании подходящего ключа:1python3 ../generate_secret_key.py
- В случае высокодоступной установки с несколькими веб-серверами
SECRET_KEY
должен быть одинаковым на всех серверах, чтобы поддерживать постоянное состояние сеанса пользователя.
3.4.3 Развёртывание NetBox
- Скрипт обновления выполнит следующие действия:
- создание виртуального окружения Python;
- установка необходимых пакетов Python;
- запуск миграции схемы базы данных;
- создание локальной документации;
- объединение статических файлов ресурсов на диске.
- Запускаем скрипт установки Netbox:
1sudo -u netbox PYTHON=/usr/bin/python3.12 /opt/netbox/upgrade.sh
3.4.4 Суперпользователь
- NetBox не имеет предустановленных учётных записей пользователей.
- Необходимо создать суперпользователя (административную учетную запись), чтобы иметь возможность войти в NetBox.
- Войдём в виртуальную среду Python:
1source /opt/netbox/venv/bin/activate
- Создадим учётную запись суперпользователя:
- Указывать адрес электронной почты пользователя не обязательно.
3.4.5 Планирование очистки рабочей среды
- NetBox включает в себя скрипт
housekeeping
, который выполняет повторяющиеся задачи очистки (очистка старых сеансов и записей об изменениях с истекшим сроком действия). - Установим его:
1sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping
3.4.6 Брандмауэр
- Настроим брандмауэр:
3.5 Gunicorn
- NetBox работает как приложение WSGI для HTTP-сервера.
- Можно использовать Gunicorn или uWSGI.
- Скопируем файл конфигурации:
1sudo -u netbox cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
- Установим скрипты для systemd:
- Запустим сервисы
netbox
иnetbox-rq
:1systemctl enable --now netbox netbox-rq
3.6 HTTP-сервер
3.6.1 Nginx
- Установим nginx.
- Выберем нужный модуль:
- Скопируем шаблон файла конфигурации:
1cp /opt/netbox/contrib/nginx.conf /etc/nginx/conf.d/netbox.conf
- Замените
netbox.example.com
именем домена или IP-адресом сервера.
3.6.2 SSL-сертификат
- Сгенерим самоподписанный SSL-сертификат в качестве заглушки:
- Потом заменим его на нормальный.
3.6.3 SELinux
- Настройте политики SELinux:
3.6.4 Брандмауэр
- Настроим брандмауэр:
3.6.5 Запуск http-сервера
- Запустим nginx:
1systemctl enable --now nginx
3.7 Установка https-сертификата LetsEncrypt
3.7.1 Установка certbot
- Проверьте, что установлен репозитории EPEL:
1dnf -y install epel-release
- Установите certbot:
1dnf -y install certbot
- Для веб-сервера Apache:
1dnf -y install python3-certbot-apache
- Для веб-сервера Nginx:
1dnf -y install python3-certbot-nginx
3.7.2 Сервер Nginx
- Плагин
certbot-nginx
предоставляет автоматическую настройку Nginx HTTP Server. - Он пытается найти конфигурацию каждого домена, а также добавляет рекомендованные для безопасности параметры, настройки использования сертификатов и пути к сертификатам Let’s Encrypt.
- Первоначальная настройка виртуальных хостов:
1certbot --nginx
- Обновление сертификатов:
1certbot renew
- Изменение сертификатов без изменения файлов конфигурации nginx:
1certbot --nginx certonly
3.7.3 Конфигурационный файл Nginx
- В файле
/etc/nginx/conf.d/netbox.conf
должны быть следующие записи: