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

NetBoxの目的
NetBoxは、複雑なITインフラを一元管理するために作られたアプリケーションで、特に以下のような用途を持ちます:
- データセンター管理
- ネットワーク配線やIPアドレスの管理
- 機器の物理・論理構造の可視化
- ラック・デバイス・インターフェイスなどの構成情報の一元管理
開発元は、クラウドサービス会社「DigitalOcean」です。Python+Djangoで構築されており、カスタマイズや自動化がしやすいのも特徴です。
主な機能
| IPAM | IPアドレス管理、サブネット、VLAN、VRF |
| DCIM | ラック、デバイス、インターフェイス、配線、電源経路 |
| 機器管理 | ルーター、スイッチ、サーバ、仮想マシンなどの情報整理 |
| ドキュメント管理 | タグ付け、コメント、カスタムフィールド、カスタムリンク |
| 自動化API | REST APIやGraphQLで自動化ツールと連携可能 |
| Webhooks | 変更イベントを外部ツール(例:Slack, Ansible)へ通知 |
NetBoxが向いている場面
- 自宅ラボを構築・拡張して管理を体系化したい
- 複数のネットワーク機器やサーバのリストをスプレッドシートから卒業したい
- IPアドレスの割り当て状況を把握したい
- 本格的なネットワーク構成図(ラック図・ケーブル配線図)を可視化したい
- AnsibleやTerraformなどを使ってインフラのコード化(IaC)につなげたい
アーキテクチャ概要
| アプリ | Python(Django) |
| DB | PostgreSQL |
| キャッシュ/キュー | Redis |
| Web UI | Bootstrapベースのインターフェース |
| API | REST, 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 自動作成)
依存パッケージのインストール
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 \
cmakeRedisはサービスとして自動起動されます。
PostgreSQL セットアップ
PostgreSQLが動作していることを確認し、DBとユーザーを作成します。
sudo -u postgres psqlCREATE DATABASE netbox;
CREATE USER netbox WITH PASSWORD 'your-strong-password';
ALTER DATABASE netbox OWNER TO netbox;
GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;
\qNetBox ソース取得・配置
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 netboxPython 仮想環境構築と依存導入
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-essential や libpq-dev の不足が原因の場合があります。事前にインストール済であることを確認してください。
設定ファイル作成(configuration.py)
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以下の設定を編集します:
ALLOWED_HOSTS = ['sv06', '192.168.1.206', 'localhost']
DATABASES = {
'default': {
'NAME': 'netbox',
'USER': 'netbox',
'PASSWORD': 'your-strong-password',
'HOST': 'localhost',
'PORT': '',
}
}
SECRET_KEY = 'ランダムな文字列をここに設定'ディレクトリ権限調整
sudo chown -R netbox:netbox /opt/netbox/DB マイグレーション・スーパーユーザー作成・静的ファイル収集
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-inputsystemd サービスユニット作成
NetBox アプリケーション(gunicorn)設定
sudo vi /etc/systemd/system/netbox.service以下の設定を編集します:
[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.targetNetBox RQ ワーカー設定
sudo vi /etc/systemd/system/netbox-rq.service以下の設定を編集します:
[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サービス有効化・起動
sudo systemctl daemon-reload
sudo systemctl enable --now netbox netbox-rq
sudo systemctl status netboxnginx でリバースプロキシ設定
sudo apt install -y nginx
sudo vi /etc/nginx/sites-available/netbox以下の設定を編集します:
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;
}
}リンク設定、反映
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 の順で作業
