Установка NetBox на Debian 11 — подробное руководство

NetBox — это Open Source система для моделирования инфраструктуры (IRM): DCIM, IPAM, управление соединениями и секретами. В этом пошаговом руководстве показано, как установить NetBox на Debian 11: PostgreSQL для базы данных, Redis для кэширования и очередей, запуск через Gunicorn и развёртывание за Apache2 с HTTPS. Включены рекомендации по безопасности, бэкапам, отладке и чек-листы для ролей.
Введение
NetBox — программное обеспечение для моделирования инфраструктуры, изначально разработанное командой DigitalOcean и ныне поддерживаемое сообществом как проект с лицензией Apache 2. NetBox написан на Python (Django) и ориентирован на автоматизацию сетевой и инфраструктурной инженерии. В базовом наборе функций:
- DCIM (управление инфраструктурой ЦОД)
- IPAM (управление IP-адресами)
- Описание каналов передачи данных
- Учёт подключений (сеть, консоль, питание)
- Шкафы и стойки
- Виртуализация
- Хранение секретов
Этот документ переводит и расширяет оригинальную инструкцию по установке NetBox на Debian 11, добавляя практические советы, проверки, шаблоны конфигурации и рекомендации по безопасности и эксплуатации.
Что такое NetBox в 1 строке
Инфраструктурный реестр и API для управления ресурсами сети и ЦОД, ориентированный на интеграцию с автоматизацией.
Кому полезно это руководство
- Системным администраторам, разворачивающим сетевую CMDB
- Сетевым инженерам, управляющим IPAM и физической инфраструктурой
- DevOps-инженерам, интегрирующим NetBox в конвейеры CI/CD
Критерии приёмки
- NetBox доступен по HTTPS на вашем домене
- Веб-интерфейс возвращает страницу входа
- Службы systemd netbox и netbox-rq запущены и активны
- База данных PostgreSQL и Redis настроены и доступны
- Создан администратор Django
Требования
- Сервер Debian 11 (x86_64) с рабочей сетью и root/пользователем с sudo
- Доменное имя, указывающее на сервер (A/AAAA)
- Минимум 2 CPU, 2–4 ГБ RAM для небольшой установки; больше для продакшена
- Резервное копирование конфигураций и баз данных
План установки (коротко)
- Установить PostgreSQL и создать базу и пользователя
- Установить Redis и настроить аутентификацию
- Создать пользователя netbox и склонировать проект
- Настроить configuration.py: база данных, Redis, SECRET_KEY, ALLOWED_HOSTS
- Запустить upgrade.sh для установки зависимостей и миграций
- Создать Django-суперпользователя
- Настроить systemd и Gunicorn
- Настроить Apache2 как обратный прокси с SSL
- Проверить и настроить бэкапы и безопасность
Установка PostgreSQL
Пояснение: NetBox официально поддерживает только PostgreSQL. На Debian 11 в репозитории доступна PostgreSQL v13 (нужно >= v10).
Обновите индекс пакетов:
sudo apt updateУстановите сервер PostgreSQL:
sudo apt install postgresql postgresql-common
Проверьте статус сервиса PostgreSQL:
sudo systemctl is-enabled postgresql
sudo systemctl status postgresql
Создайте базу данных и пользователя (пример):
sudo -u postgres psql
CREATE DATABASE netboxdb;
CREATE USER netbox WITH ENCRYPTED PASSWORD 'NetBoxRocks';
GRANT ALL PRIVILEGES ON DATABASE netboxdb TO netbox;
\q
Проверка подключения под пользователем netbox:
sudo -u postgres psql --username netbox --password --host localhost netboxdb
# В консоли psql выполните:
\conninfo
# затем Ctrl+D или \q
Подсказки и рекомендации по PostgreSQL
- Производительность: в продакшене настройте shared_buffers, work_mem и maintenance_work_mem согласно объёму RAM.
- Безопасность: ограничьте доступ по pg_hba.conf, используйте локальные Unix-сокеты, при необходимости включите SSL.
- Бэкап: настроьте регулярные дампы через pg_dump или репликацию/точки восстановления (WAL).
Установка Redis
Пояснение: Redis используется для кэширования и очередей (RQ). Требуется Redis >= v4.0; Debian 11 поставляет Redis v5.x.
Установите Redis:
sudo apt install redis-server
Проверьте статус:
sudo systemctl is-enabled redis-server
sudo systemctl status redis-server
Настройка аутентификации Redis (рекомендовано для продакшена)
Отредактируйте файл /etc/redis/redis.conf и задайте requirepass:
sudo nano /etc/redis/redis.confНайдите строку requirepass и раскомментируйте её, указав пароль, например:
requirepass RedisPasswordNetBoxПерезапустите сервис:
sudo systemctl restart redis-serverПроверка авторизации:
redis-cli
AUTH RedisPasswordNetBox
# Ожидается ответ: OK
exit
Советы по Redis
- Разделяйте базы Redis (DATABASE 0 и 1) для задач и кэша, как рекомендовано NetBox.
- При публичном доступе настраивайте брандмауэр, используйте TLS-proxy (stunnel/redis-tls) и аутентификацию.
- Мониторьте память командой INFO и настраивайте maxmemory и политику вытеснения.
Установка NetBox (файловая структура и зависимостии)
Требования: Python 3.8+, git.
Создайте системного пользователя netbox и установите зависимости:
sudo useradd -r -d /opt/netbox -s /usr/sbin/nologin netbox
sudo apt install -y git python3 python3-pip python3-venv python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev libpq-dev libssl-dev zlib1g-dev
Клонируйте репозиторий NetBox в /opt/netbox:
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
Скопируйте пример конфигурации и сгенерируйте SECRET_KEY:
cd /opt/netbox/netbox/netbox
sudo -u netbox cp configuration_example.py configuration.py
sudo -u netbox python3 ../generate_secret_key.py
sudo -u netbox nano configuration.pyКлючевые параметры configuration.py
- ALLOWED_HOSTS — домен(ы) и IP сервера
- DATABASE — параметры для PostgreSQL
- REDIS — параметры для Redis (укажите пароли и номера баз)
- SECRET_KEY — секрет для Django
Пример заполненных блоков (оставьте формат сохранённым):
# domain and IP address
ALLOWED_HOSTS = ['netbox.howtoforge.local', '192.168.5.20']
# 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 = 'Slr-8H@1XMcW!22_UYNLcWw+_5=$$=8mtL#JImfOlD*-KiuI6h'Запуск скрипта установки и миграций
Скрипт upgrade.sh автоматизирует создание виртуального окружения, установку зависимостей, миграции и сбор статических файлов:
sudo -u netbox /opt/netbox/upgrade.shВо время выполнения скрипта будут установлены Python-библиотеки, выполнены миграции базы данных и собраны статические файлы.


Создание администратора NetBox
Активируйте виртуальное окружение и создайте суперпользователя Django:
source /opt/netbox/venv/bin/activate
cd /opt/netbox/netbox
python3 manage.py createsuperuserУкажите имя пользователя, email и пароль.
Настройка автоматического обслуживания (housekeeping)
Добавьте системный cron-скрипт:
sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping
Локальный тест приложения (временно)
Проверьте, что приложение стартует:
python3 manage.py runserver 0.0.0.0:8000 --insecureОткройте http://SERVER_IP:8000/ — вы должны увидеть страницу NetBox.

Systemd, Gunicorn и фоновые задачи
NetBox поставляется с примерами конфигурации Gunicorn и systemd в каталоге /opt/netbox/contrib.
Скопируйте и отредактируйте gunicorn.py:
sudo -u netbox cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
sudo -u netbox nano /opt/netbox/gunicorn.pyПо умолчанию NetBox слушает 127.0.0.1:8001:
bind = '127.0.0.1:8001'Скопируйте unit-файлы 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


Настройка Apache2 как обратного прокси и SSL
Установите Apache2 и включите модули:
sudo apt install apache2
sudo a2enmod ssl proxy proxy_http headers
Скопируйте шаблон виртуального хоста и отредактируйте его:
sudo cp /opt/netbox/contrib/apache.conf /etc/apache2/sites-available/netbox.conf
sudo nano /etc/apache2/sites-available/netbox.confПример конфигурации HTTPS (обновите ServerName и пути к сертификатам):
ProxyPreserveHost On
# CHANGE THIS TO YOUR SERVER'S NAME
ServerName netbox.howtoforge.local
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/netbox.howtoforge.local/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/netbox.howtoforge.local/privkey.pem
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/
Активируйте сайт и проверьте конфигурацию Apache:
sudo a2ensite netbox.conf
sudo apachectl configtest
sudo systemctl restart apache2
Проверьте в браузере: https://YOUR_DOMAIN/ — должна открыться страница входа NetBox. Введите учётные данные администратора.



Дополнительные темы и рекомендации
Безопасность
- Храните секреты (SECRET_KEY, пароли) в менеджере секретов (HashiCorp Vault, AWS KMS) или как шифрованные переменные в Ansible. Не храните их в Git.
- Ограничьте доступ к PostgreSQL и Redis по сети (firewall: ufw/iptables). Разрешите доступ только с локального хоста или явных хостов.
- Настройте регулярное обновление пакетов и мониторинг CVE для компонентов (Python-библиотек, OpenSSL, Apache).
Резервное копирование и восстановление
- Регулярные дампы PostgreSQL: pg_dump или pg_basebackup. Храните резервные копии вне сервера.
- Бэкап конфигурации /opt/netbox, включите список установленных зависимостей (pip freeze > requirements.txt) и файл configuration.py (соблюдая безопасность секретов).
- План восстановления: восстановление PostgreSQL, восстановление виртуального окружения, восстановление статических файлов, запуск upgrade.sh и проверка миграций.
Мониторинг и логирование
- Логи Gunicorn и systemd доступ к journalctl: journalctl -u netbox -u netbox-rq
- Метрики: интеграция с Prometheus/Grafana возможна через экспортеры Gunicorn/Prometheus client в приложении.
Производительность и масштабирование
- Для среды с высокой нагрузкой выделите отдельный сервер PostgreSQL и отдельный кластер Redis.
- Масштабируйте Gunicorn (workers, threads) в зависимости от CPU и объёма запросов.
- Раздача статических файлов через CDN или отдельный Nginx/Apache с кешированием.
Обновления NetBox
- Сделайте бэкап базы и конфигурации
- Перейдите в /opt/netbox и выполните git pull (или переключитесь на нужный тег/ветку)
- Выполните sudo -u netbox /opt/netbox/upgrade.sh
- Перезапустите systemd-сервисы
Отладка и типовые проблемы
- Ошибка подключения к БД: проверьте DATABASE в configuration.py и pg_hba.conf; убедитесь, что пользователь и пароль корректны.
- Redis не отвечает: проверьте requirepass и что REDIS.PASSWORD совпадает с конфигурацией; используйте redis-cli AUTH для теста.
- Статические файлы не загружаются: проверьте Alias /static и права на /opt/netbox/netbox/static; выполните python manage.py collectstatic.
Чек-лист перед вводом в эксплуатацию для системного администратора
- База данных и Redis настроены и защищены
- SECRET_KEY не хранится в публичном репозитории
- HTTPS настроен и сертификаты действительны
- Автоматические бэкапы настроены и протестированы
- Службы systemd работают и включены
- Логи собираются и доступны для мониторинга
Чек-лист для сетевого инженера
- Все физические устройства и стойки внесены в NetBox
- План IP-адресации внесён в IPAM
- Внутренние и внешние цепочки связей описаны
Чек-лист для ответственного за безопасность
- Доступ к NetBox ограничен по IP или интегрирован с SSO
- Настроено управление ролями и правами в NetBox
- Регулярные проверки уязвимостей и обновлений запланированы
Короткие советы по миграции с другой CMDB
- Экспортируйте данные в CSV/JSON из источника и используйте API NetBox для импорта через скрипты (pynetbox, requests).
- Разбейте миграцию на этапы: дата-центры, стойки, устройства, интерфейсы, IP-адреса.
Шаблоны и примеры команд для обслуживания
Проверить логи службы netbox:
sudo journalctl -u netbox -f --no-pagerВыполнить резервное копирование БД:
PGPASSWORD='NetBoxRocks' pg_dump -U netbox -h localhost netboxdb > /var/backups/netboxdb-$(date +%F).sqlВосстановить БД (на чистой базе):
PGPASSWORD='NetBoxRocks' psql -U netbox -h localhost -d netboxdb < /var/backups/netboxdb-2025-01-01.sqlMini-методология при обновлении
- Отключите плановые задачи и cron-скрипты
- Сделайте горячий бэкап базы
- Примените обновления в тестовой среде
- Запустите миграции в офлайне в окне обслуживания
- Проверите функциональные тесты и верните сервис в прод
Критерии приёмки
- Веб-интерфейс доступен и скорость отклика в пределах ожидаемых значений
- Администратор может зайти и просмотреть/создать записи
- Резервное копирование прошло успешно и восстановление протестировано
Короткий словарь терминов
- DCIM: управление физической инфраструктурой ЦОД
- IPAM: управление IP-адресами и префиксами
- RQ: Redis Queue — очередь задач для асинхронных операций
- Gunicorn: WSGI-сервер для запуска Django-приложений
Часто встречающиеся вопросы
FAQ
Как обновить NetBox безопасно?
Следуйте Mini-методологии: бэкап, тестирование, миграции в окне обслуживания.
Можно ли использовать другой веб-сервер вместо Apache?
Да. Часто применяют Nginx как обратный прокси. Важно корректно настроить заголовки X-Forwarded.
Что делать, если Redis падает из-за нехватки памяти?
Настройте maxmemory и политику eviction; мониторьте использование и масштабируйте память.
Заключение
Вы установили NetBox на Debian 11 с PostgreSQL, Redis, Gunicorn и Apache2 с SSL. Документ покрывает базовую установку, рекомендации по безопасности, бэкапам и эксплуатационным процедурам. Чтобы поддерживать NetBox в рабочем состоянии, заведите процессы обновления, мониторинга и резервного копирования, а также интегрируйте NetBox с автоматизацией конфигураций и CMDB-процессами.
Важно
- В примерах пароли и секреты используются только для демонстрации — замените их на безопасные значения.
- Для продакшена рассмотрите отдельные хосты/контейнеры для PostgreSQL и Redis.
Дополнительные ресурсы
- Официальный репозиторий NetBox: https://github.com/netbox-community/netbox
- Документация NetBox: https://netbox.readthedocs.io
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента