NetBoxの導入および設定方法

NetBox(ネットボックス)とは

ネットワークインフラ管理のためのオープンソースツールで、「ネットワークの台帳」「構成管理データベース(CMDB)」として非常に人気があるアプリケーションです。たとえば、自宅ラボや企業ネットワークにおける次のような情報をWeb UIを使って体系的に管理できるため、オンプレサーバ、スイッチ、ルーター、AP、クラウドVMなどをひとまとめに管理できます。

NetBoxの導入および設定方法
NetBoxの導入および設定方法

NetBoxの目的

NetBoxは、複雑なITインフラを一元管理するために作られたアプリケーションで、特に以下のような用途を持ちます:

  • データセンター管理
  • ネットワーク配線やIPアドレスの管理
  • 機器の物理・論理構造の可視化
  • ラック・デバイス・インターフェイスなどの構成情報の一元管理

開発元は、クラウドサービス会社「DigitalOcean」です。Python+Djangoで構築されており、カスタマイズや自動化がしやすいのも特徴です。


主な機能

IPAMIPアドレス管理、サブネット、VLAN、VRF
DCIMラック、デバイス、インターフェイス、配線、電源経路
機器管理ルーター、スイッチ、サーバ、仮想マシンなどの情報整理
ドキュメント管理タグ付け、コメント、カスタムフィールド、カスタムリンク
自動化APIREST APIやGraphQLで自動化ツールと連携可能
Webhooks変更イベントを外部ツール(例:Slack, Ansible)へ通知

NetBoxが向いている場面

  • 自宅ラボを構築・拡張して管理を体系化したい
  • 複数のネットワーク機器やサーバのリストをスプレッドシートから卒業したい
  • IPアドレスの割り当て状況を把握したい
  • 本格的なネットワーク構成図(ラック図・ケーブル配線図)を可視化したい
  • AnsibleやTerraformなどを使ってインフラのコード化(IaC)につなげたい

アーキテクチャ概要

アプリPython(Django)
DBPostgreSQL
キャッシュ/キューRedis
Web UIBootstrapベースのインターフェース
APIREST, GraphQL
システム管理systemd + gunicorn + nginx(プロダクション構成)



導入および設定方法

前提条件

  • OS:Ubuntu Server 24.04 LTS
  • NetBox Community v4.4.5

変数

  • ホスト名:sv06
  • IPアドレス:192.168.1.206
  • NetBox ソース:/opt/netbox/netbox-src/
  • Django プロジェクト(manage.py):/opt/netbox/netbox-src/netbox/
  • 設定ファイル:/opt/netbox/netbox-src/netbox/netbox/configuration.py
  • STATIC_ROOT:/opt/netbox/netbox-src/netbox/static/
  • venv:/opt/netbox/venv
  • gunicorn PID:/run/netbox/netbox.pid(systemd の RuntimeDirectory=netbox で /run/netbox 自動作成)

依存パッケージのインストール

Bash
sudo apt update
sudo apt install -y git python3.12 python3.12-venv python3.12-dev \
  build-essential postgresql redis-server redis-tools \
  libpq-dev libffi-dev libssl-dev libjpeg-dev zlib1g-dev \
  cmake

Redisはサービスとして自動起動されます。

PostgreSQL セットアップ

PostgreSQLが動作していることを確認し、DBとユーザーを作成します。

SQL
sudo -u postgres psql
SQL
CREATE DATABASE netbox;
CREATE USER netbox WITH PASSWORD 'your-strong-password';
ALTER DATABASE netbox OWNER TO netbox;
GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;
\q

NetBox ソース取得・配置

Bash
sudo mkdir -p /opt/netbox
sudo chown $USER:$USER /opt/netbox
cd /opt/netbox
git clone -b v4.4.5 https://github.com/netbox-community/netbox.git netbox-src
sudo adduser --system --group netbox

Python 仮想環境構築と依存導入

Bash
cd /opt/netbox
python3.12 -m venv venv
source venv/bin/activate
cd netbox-src
pip install --upgrade pip
pip install -r requirements.txt

pip install 中にライブラリエラーが出た場合は、build-essentiallibpq-dev の不足が原因の場合があります。事前にインストール済であることを確認してください。

設定ファイル作成(configuration.py)

Bash
cp /opt/netbox/netbox-src/netbox/netbox/configuration_example.py \
   /opt/netbox/netbox-src/netbox/netbox/configuration.py
vi /opt/netbox/netbox-src/netbox/netbox/configuration.py

以下の設定を編集します:

Python
ALLOWED_HOSTS = ['sv06', '192.168.1.206', 'localhost']

DATABASES = {
    'default': {
        'NAME': 'netbox',
        'USER': 'netbox',
        'PASSWORD': 'your-strong-password',
        'HOST': 'localhost',
        'PORT': '',
    }
}

SECRET_KEY = 'ランダムな文字列をここに設定'

ディレクトリ権限調整

Bash
sudo chown -R netbox:netbox /opt/netbox/

DB マイグレーション・スーパーユーザー作成・静的ファイル収集

Bash
sudo -u netbox /opt/netbox/venv/bin/python3 \
  /opt/netbox/netbox-src/netbox/manage.py migrate

sudo -u netbox /opt/netbox/venv/bin/python3 \
  /opt/netbox/netbox-src/netbox/manage.py createsuperuser

sudo -u netbox /opt/netbox/venv/bin/python3 \
  /opt/netbox/netbox-src/netbox/manage.py collectstatic --no-input

systemd サービスユニット作成

NetBox アプリケーション(gunicorn)設定

Bash
sudo vi /etc/systemd/system/netbox.service

以下の設定を編集します:

ShellScript
[Unit]
Description=NetBox WSGI Service
After=network.target

[Service]
Type=simple
User=netbox
Group=netbox
WorkingDirectory=/opt/netbox/netbox-src/netbox
ExecStart=/opt/netbox/venv/bin/gunicorn --pid /run/netbox/netbox.pid \
  --bind 127.0.0.1:8001 netbox.wsgi
Restart=on-failure
RuntimeDirectory=netbox

[Install]
WantedBy=multi-user.target

NetBox RQ ワーカー設定

Bash
sudo vi /etc/systemd/system/netbox-rq.service

以下の設定を編集します:

ShellScript
[Unit]
Description=NetBox RQ Worker
After=network.target

[Service]
Type=simple
User=netbox
Group=netbox
WorkingDirectory=/opt/netbox/netbox-src/netbox
ExecStart=/opt/netbox/venv/bin/python3 manage.py rqworker
Restart=on-failure

[Install]
WantedBy=multi-user.target

サービス有効化・起動

Bash
sudo systemctl daemon-reload
sudo systemctl enable --now netbox netbox-rq
sudo systemctl status netbox

nginx でリバースプロキシ設定

Bash
sudo apt install -y nginx
sudo vi /etc/nginx/sites-available/netbox

以下の設定を編集します:

Nginx
server {
    listen 80;
    server_name sv06 192.168.1.206;

    client_max_body_size 25M;

    location /static/ {
        alias /opt/netbox/netbox-src/netbox/static/;
    }

    location / {
        proxy_pass http://127.0.0.1:8001;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

リンク設定、反映

Bash
sudo ln -s /etc/nginx/sites-available/netbox /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl restart nginx

動作確認

ブラウザで以下のURLにアクセス:

http://192.168.1.206

ログイン画面が表示されるはずです。

トラブルシューティングポイント

  • ModuleNotFoundError: No module named 'django'
    → venv がアクティブでない、または pip install 未実行
  • permission denied エラー
    /opt/netbox 以下に netbox ユーザー権限が必要
  • nginx 画面が404
    /static/ の alias 定義や collectstatic の実行漏れを確認

補足

  • セキュリティ対策として、nginx でHTTPS終端、ファイアウォール設定(ufw)などを追加することを推奨します
  • バージョンアップ時には /opt/netbox/netbox-src を git pull → pip upgrade → migrate の順で作業

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です