NetBox — ведущее решение для моделирования и документирования современных сетей. Объединив традиционные дисциплины управления IP-адресами (IPAM) и управления инфраструктурой центра обработки данных (DCIM) с мощными API и расширениями, NetBox представляет собой идеальный «источник истины» для автоматизации сети.
Ниже приведен упрощенный обзор стека приложений NetBox для справки:
Официальная инструкция предназаначена для Ubuntu, но я проверил работу ну Debian 12.
Для установки СУБД Postgresql используем компанды, приведенные ниже:
sudo apt update
sudo apt install -y postgresql
Усли у Вас уже имеется установленная СУБД, пропустите этот шаг.
После успешной установки убедимся, что Psotgresql работает, проверив его версию:
psql -V
Как минимум, нам нужно создать базу данных для NetBox и присвоить ей логин и пароль для аутентификации. Вызовем оболочку PostgreSQL от имени системного пользователя Postgres:
sudo -u postgres psql
Далее приведены команды для создания базы, пользователя и назначения всех нужных прав:
CREATE DATABASE netbox;
CREATE USER netbox WITH PASSWORD 'J5brHrAXFLQSif0K';
ALTER DATABASE netbox OWNER TO netbox;
-- the next two commands are needed on PostgreSQL 15 and later
\connect netbox;
GRANT CREATE ON SCHEMA public TO netbox;
Не используйте пароль из примера. Выберите надежный случайный пароль, чтобы обеспечить безопасную аутентификацию базы данных для установки NetBox.
После завершения введите enter, чтобы выйти из оболочки PostgreSQL.\q
Вы можете убедиться в том, что проверка подлинности работает, выполнив команду и передав настроенные имя пользователя и пароль.
$ psql --username netbox --password --host localhost netbox
Password for user netbox:
psql (12.5 (Ubuntu 12.5-0ubuntu0.20.04.1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.
netbox=> \conninfo
You are connected to database "netbox" as user "netbox" on host "localhost" (address "127.0.0.1") at port "5432".
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
netbox=> \q
В случае успеха вы введете приглашение. Введите пароль, что создали раньше, для подтверждения подключения или введите \q для выхода.
Redis — это хранилище пар «ключ-значение» в памяти, которое NetBox использует для кэширования и постановки в очередь. Этот раздел включает в себя установку и настройку локального экземпляра Redis.
sudo apt install -y redis-server
Проверим, что Redis установлен и его версия не ниже 4.0:
redis-server -v
Давайте убедимся, что служба Redis работает:
redis-cli ping
В случае успеха вы должны получить ответ от сервера PONG
Начните с установки всех системных пакетов, необходимых для NetBox и его зависимостей.
Для NetBox требуется Python 3.8, 3.9, 3.10 или 3.11
sudo apt install -y python3 python3-pip python3-venv python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev libpq-dev libssl-dev zlib1g-dev
Прежде чем продолжить, убедитесь, что у вас установлена версия Python не ниже 3.8:
python3 -V
Загрузите последнюю стабильную версию с GitHub в виде tar-архива или ZIP-архива и распакуйте егов удобную директорию. В этом примере мы будем использовать /opt/netbox
sudo wget https://github.com/netbox-community/netbox/archive/refs/tags/vX.Y.Z.tar.gz
sudo tar -xzf vX.Y.Z.tar.gz -C /opt
sudo ln -s /opt/netbox-X.Y.Z/ /opt/netbox
Рекомендуется устанавливать NetBox в каталог, названный по номеру версии. Например, NetBox v3.0.0 будет установлен в одноименный каталог, и символическая ссылка из будет указывать на это расположение. Это позволяет устанавливать будущие выпуски параллельно, не прерывая текущую установку. При переходе на новую версию необходимо обновить только символическую ссылку./opt/netbox-3.0.0/opt/netbox/ls -l /opt | grep netbox
Создайте учетную запись системного пользователя с именем netbox. Мы настроим службы WSGI и HTTP для работы под этой учетной записью. Мы также назначим этому пользователю права владельца на каталог media. Это гарантирует, что NetBox сможет сохранять загруженные файлы.
sudo adduser --system --group netbox
sudo chown --recursive netbox /opt/netbox/netbox/media/
sudo chown --recursive netbox /opt/netbox/netbox/reports/
sudo chown --recursive netbox /opt/netbox/netbox/scripts/
Перейдите в каталог конфигурации NetBox и скопируйте рабочий файл конфигурации из обраца:
cd /opt/netbox/netbox/netbox/
sudo cp configuration_example.py configuration.py
Откройте с помощью предпочитаемого редактора, чтобы начать настройку NetBox. NetBox предлагает множество конфигурационных параметров (дополнительно читайте https://docs.netbox.dev/en/stable/configuration/), но для новых установок требуются только следующие четыре:
ALLOWED_HOSTS
Это список допустимых имен хостов и IP-адресов, по которым можно связаться с этим сервером по HTTP. Необходимо указать хотя бы одно имя или IP-адрес.
ALLOWED_HOSTS = ['netbox.example.com', '192.0.2.123']
Если вы еще не уверены в том, каким будет доменное имя и/или IP-адрес установки NetBox, вы можете установить для него звездочку, чтобы разрешить все значения хоста:
ALLOWED_HOSTS = ['*']
DATABASE
Этот параметр содержит сведения о конфигурации базы данных. Необходимо определить имя пользователя и пароль, которые использовались при настройке PostgreSQL.
DATABASE = {
'NAME': 'netbox', # Database name
'USER': 'netbox', # PostgreSQL username
'PASSWORD': 'J5brHrAXFLQSif0K', # PostgreSQL password
'HOST': 'localhost', # Database server
'PORT': '', # Database port (leave blank for default)
'CONN_MAX_AGE': 300, # Max database connection age (seconds)
}
REDIS
Redis — это хранилище пар «ключ-значение» в памяти, используемое NetBox для кэширования и организации очередей фоновых задач. Redis обычно требует минимальной настройки; Приведенных ниже значений должно быть достаточно для большинства установок.
Обратите внимание, что для NetBox требуется спецификация двух отдельных баз данных Redis. Они могут предоставляться одной и той же службой Redis, однако каждый из них должен иметь уникальный числовой идентификатор базы данных tasks и caching
REDIS = {
'tasks': {
'HOST': 'localhost', # Redis server
'PORT': 6379, # Redis port
'PASSWORD': '', # Redis password (optional)
'DATABASE': 0, # Database ID
'SSL': False, # Use SSL (optional)
},
'caching': {
'HOST': 'localhost',
'PORT': 6379,
'PASSWORD': '',
'DATABASE': 1, # Unique ID for second database
'SSL': False,
}
}
SECRET_KEY
Этому параметру должен быть присвоен случайно сгенерированный ключ, используемый для хеширования и связанных с ним криптографических функций. (Заметьте, однако, что он никогда напрямую не используется при шифровании секретных данных.) Этот ключ должен быть уникальным для данной установки и должен содержать не менее 50 символов. Он не должен распространяться за пределами локальной системы.
Простой скрипт Python с именем предоставляется в родительском каталоге, чтобы помочь в создании подходящего ключа: generate_secret_key.py
python3 ../generate_secret_key.py
После того, как файл конфигурации готов, выполним процедуру установки приложения, или обновления, как называют этот процесс сами разработчики. В результате выполнения данный процедуры произойдет следующее:
sudo /opt/netbox/upgrade.sh
NetBox не поставляется с какими-либо предопределенными учетными записями пользователей. Чтобы войти в NetBox, необходимо создать учетную запись администратора. Для этого войдите в виртуальную среду Python, созданную скриптом обновления:
source /opt/netbox/venv/bin/activate
Об успешном входи в виртуальную среду скажет приписка venv перед именеме пользователя в командной строке. Теперь мы создадим учетную запись администраторв используя специальный скрипт:
cd /opt/netbox/netbox
python3 manage.py createsuperuser
Добавлять адрес электронной почты не обязательно, а вот пароль лучше сделать надежным.
Как и большинство приложений Django, NetBox работает как WSGI-приложение за HTTP-сервером. NetBox поставляется с конфигурационным файлом по умолчанию для gunicorn. Чтобы использовать его, скопируйте из образца.
sudo cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
Мы будем использовать systemd для управления как gunicorn, так и фоновым рабочим процессом NetBox. Во-первых, скопируйте и в каталог и перезагрузите демона systemd.
sudo cp -v /opt/netbox/contrib/*.service /etc/systemd/system/
sudo systemctl daemon-reload
Затем запустите службы and и включите их запуск во время загрузки:
sudo systemctl enable --now netbox netbox-rq
Убедимся, что служба запущена:
systemctl status netbox.service
Чтобы разрешить доступ к NetBox по протоколу HTTPS, вам потребуется действительный SSL-сертификат. Вы можете приобрести его у надежного коммерческого поставщика, получить бесплатно в Let’s Encrypt или создать свой. Приведенную ниже команду можно использовать для создания самозаверяющего сертификата в целях тестирования, однако настоятельно рекомендуется использовать в рабочей среде сертификат из доверенного центра.
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/netbox.key \
-out /etc/ssl/certs/netbox.crt
Теперь перейдем к установке nginx:
sudo apt install -y nginx
После установки nginx скопируйте файл конфигурации nginx, предоставленный NetBox. Обязательно замените доменное имя или IP
адрес вашей установки.
sudo cp /opt/netbox/contrib/nginx.conf /etc/nginx/sites-available/netbox
Затем удалите и создайте символическую ссылку в каталоге на только что созданный конфигурационный файл для /etc/nginx/sites-enabled/defaultsites-enabled
sudo rm /etc/nginx/sites-enabled/default
sudo ln -s /etc/nginx/sites-available/netbox /etc/nginx/sites-enabled/netbox
Наконец, перезапустите службу, чтобы использовать новую конфигурацию.nginx
sudo systemctl restart nginx
Вот и все! Доступ к Netbox по https://ip-adress-you-server
Для конфигурации HTTP файл виртуального хостинга Nginx используй такой:
server {
listen 80;
server_name ИЗМЕНИ ИМЯ;
client_max_body_size 25m;
location /static/ {
alias /opt/netbox/netbox/static/;
}
location / {
proxy_pass http://127.0.0.1:8001;
}
}
При последней проверке данной инструкции после установки сервиса при авториазции возникала ошибка типа:
Origin checking failed - http://127.0.0.1:5003 does not match any trusted origins.
Только у меня адрес был другой. Оказалось, для ее решения нужно в файле /opt/netbox/netbox/netbox/settings.py добавить ip-адрес с которого идет подключение к сервису через Nginx исключение в формате (у меня на тестовой среде был такой адрес) „http://10.0.0.95“
nano /opt/netbox/netbox/netbox/settings.py
Строка:
CSRF_TRUSTED_ORIGINS = getattr(configuration, 'CSRF_TRUSTED_ORIGINS', ['http://10.0.0.95'])
Для запуска Netbox в контейнере:
docker pull linuxserver/netbox
git clone -b release https://github.com/netbox-community/netbox-docker.git
cd netbox-docker
tee docker-compose.override.yml <<EOF
version: '3.4'
services:
netbox:
ports:
- 8000:8080
EOF
docker compose pull
docker compose up
Для тонкой настройки Docker и Netbox https://hub.docker.com/r/linuxserver/netbox