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

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

• 8 min read • Инфраструктура • Обновлено 25 Nov 2025
Установка NetBox на Debian 11
Установка NetBox на Debian 11

Схема архитектуры NetBox и связанных сервисов

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 для небольшой установки; больше для продакшена
  • Резервное копирование конфигураций и баз данных

План установки (коротко)

  1. Установить PostgreSQL и создать базу и пользователя
  2. Установить Redis и настроить аутентификацию
  3. Создать пользователя netbox и склонировать проект
  4. Настроить configuration.py: база данных, Redis, SECRET_KEY, ALLOWED_HOSTS
  5. Запустить upgrade.sh для установки зависимостей и миграций
  6. Создать Django-суперпользователя
  7. Настроить systemd и Gunicorn
  8. Настроить Apache2 как обратный прокси с SSL
  9. Проверить и настроить бэкапы и безопасность

Установка PostgreSQL

Пояснение: NetBox официально поддерживает только PostgreSQL. На Debian 11 в репозитории доступна PostgreSQL v13 (нужно >= v10).

Обновите индекс пакетов:

sudo apt update

Установите сервер PostgreSQL:

sudo apt install postgresql postgresql-common

Установка PostgreSQL

Проверьте статус сервиса PostgreSQL:

sudo systemctl is-enabled postgresql
sudo systemctl status postgresql

Проверка статуса PostgreSQL

Создайте базу данных и пользователя (пример):

sudo -u postgres psql

CREATE DATABASE netboxdb;
CREATE USER netbox WITH ENCRYPTED PASSWORD 'NetBoxRocks';
GRANT ALL PRIVILEGES ON DATABASE netboxdb TO netbox;
\q

Создание базы и пользователя PostgreSQL

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

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

# В консоли psql выполните:
\conninfo

# затем Ctrl+D или \q

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

Подсказки и рекомендации по 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

Установка Redis

Проверьте статус:

sudo systemctl is-enabled redis-server
sudo systemctl status redis-server

Проверка статуса Redis

Настройка аутентификации 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

  • Разделяйте базы 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

Загрузка кода 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 начата

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

Создание администратора 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

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

Локальный тест приложения (временно)

Проверьте, что приложение стартует:

python3 manage.py runserver 0.0.0.0:8000 --insecure

Откройте http://SERVER_IP:8000/ — вы должны увидеть страницу NetBox.

Проверка установки 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

Настройка systemd для NetBox

Статус сервиса netbox

Статус сервиса netbox-rq

Настройка Apache2 как обратного прокси и SSL

Установите Apache2 и включите модули:

sudo apt install apache2
sudo a2enmod ssl proxy proxy_http headers

Установка Apache2

Скопируйте шаблон виртуального хоста и отредактируйте его:

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

Настройка Apache2 как обратного прокси

Проверьте в браузере: https://YOUR_DOMAIN/ — должна открыться страница входа NetBox. Введите учётные данные администратора.

Страница входа NetBox

Форма входа NetBox

Панель управления 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

  1. Сделайте бэкап базы и конфигурации
  2. Перейдите в /opt/netbox и выполните git pull (или переключитесь на нужный тег/ветку)
  3. Выполните sudo -u netbox /opt/netbox/upgrade.sh
  4. Перезапустите 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.sql

Mini-методология при обновлении

  1. Отключите плановые задачи и cron-скрипты
  2. Сделайте горячий бэкап базы
  3. Примените обновления в тестовой среде
  4. Запустите миграции в офлайне в окне обслуживания
  5. Проверите функциональные тесты и верните сервис в прод

Критерии приёмки

  • Веб-интерфейс доступен и скорость отклика в пределах ожидаемых значений
  • Администратор может зайти и просмотреть/создать записи
  • Резервное копирование прошло успешно и восстановление протестировано

Короткий словарь терминов

  • 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.

Дополнительные ресурсы

Поделиться: 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 быстро