NetBox はネットワーク機器、IP アドレス、ラック、回線などを管理する DCIM / IPAM アプリケーションです。Podman で動かす場合は、NetBox 本体だけでなく PostgreSQL と Redis を合わせて扱います。
この記事では、Ubuntu 22.04 上の Podman で NetBox を検証用に起動し、PostgreSQL、Redis、Redis cache、NetBox Web、永続化、Web UI 確認、systemd 化の基本を確認します。
関連する記事
この記事で確認すること
- NetBox を Podman pod として起動する構成
- PostgreSQL、Redis、Redis cache、NetBox の役割分担
- 永続化ディレクトリと環境変数の確認
- Web UI の起動確認
- pod 単位の systemd 化
NetBox を Podman で動かす構成
NetBox は DB と Redis に依存します。Podman pod を使うと、複数コンテナを同じネットワーク名前空間で扱えます。検証では、pod 内の 127.0.0.1 を使って各コンテナを接続します。
| コンテナ | 役割 | 確認対象 |
netbox-postgres | NetBox 用 PostgreSQL | 永続化、DB 名、ユーザー |
netbox-redis | queue 用 Redis | 起動状態、接続 |
netbox-redis-cache | cache 用 Redis | 起動状態、接続 |
netbox | NetBox Web | HTTP 応答、DB / Redis 接続 |
前提を確認する
Podman が導入済みで、現在のユーザーから container を起動できる状態を前提にします。
podman --version
podman info
podman pod ps作業ディレクトリを作成する
PostgreSQL のデータをホスト側へ残すため、永続化用ディレクトリを作成します。rootless 実行では、実行ユーザーが読み書きできるようにします。
sudo install -d -m 0750 -o "$USER" -g "$USER" /opt/container/netbox
install -d /opt/container/netbox/postgresql
ls -ld /opt/container/netbox /opt/container/netbox/postgresqlPod を作成する
NetBox の Web UI をホスト側 8000 番で確認できるように pod を作成します。
podman pod create \
--name netbox-pod \
-p 8000:8080
podman pod psPostgreSQL を起動する
NetBox 用の PostgreSQL を起動します。パスワードは検証用の例なので、実運用では十分に強い値へ変更します。
podman run -d --pod netbox-pod \
--name netbox-postgres \
-e POSTGRES_DB=netbox \
-e POSTGRES_USER=netbox \
-e POSTGRES_PASSWORD='change-me' \
-v /opt/container/netbox/postgresql:/var/lib/postgresql/data:Z \
docker.io/library/postgres:15
podman logs netbox-postgresRedis を起動する
NetBox は通常の Redis と cache 用 Redis を分けて使います。検証では同じ image から 2 つのコンテナを起動します。
podman run -d --pod netbox-pod \
--name netbox-redis \
docker.io/library/redis:7-alpine
podman run -d --pod netbox-pod \
--name netbox-redis-cache \
docker.io/library/redis:7-alpine
podman logs netbox-redis
podman logs netbox-redis-cacheNetBox 本体を起動する
NetBox 本体を起動します。ここでは pod 内の localhost で PostgreSQL と Redis に接続する構成にします。実際の image tag や環境変数は、利用する NetBox image の仕様に合わせて確認します。
podman run -d --pod netbox-pod \
--name netbox \
-e DB_HOST=127.0.0.1 \
-e DB_NAME=netbox \
-e DB_USER=netbox \
-e DB_PASSWORD='change-me' \
-e REDIS_HOST=127.0.0.1 \
-e REDIS_CACHE_HOST=127.0.0.1 \
docker.io/netboxcommunity/netbox:latest
podman logs netbox起動状態を確認する
pod と各 container の状態を確認し、ホスト側 8000 番から NetBox の HTTP 応答を確認します。
podman pod ps
podman ps --pod
curl -I http://127.0.0.1:8000/ログを確認する
Web UI が表示されない場合は、NetBox、PostgreSQL、Redis のログを分けて確認します。DB 接続情報の不一致や Redis 接続失敗は、NetBox 起動時のログに出ます。
podman logs netbox
podman logs netbox-postgres
podman logs netbox-redis
podman logs netbox-redis-cache初期設定で見るポイント
NetBox は起動後に管理ユーザー、初期データ、永続化、バックアップの扱いを決めます。コンテナ起動だけで完了とせず、アプリケーションとして使える状態を確認します。
- 管理ユーザー作成の手順を確認する
- PostgreSQL データのバックアップ対象を決める
- Web UI の公開範囲を制限する
- 検証用パスワードを運用へ持ち込まない
- 利用する NetBox image の環境変数を確認する
systemd unit を生成する
継続運用する場合は、pod 単位で systemd unit を生成します。rootless 運用ではユーザー unit として管理する方法も検討します。
podman generate systemd --new --name netbox-pod > container-netbox-pod.service
sudo install -m 0644 container-netbox-pod.service /etc/systemd/system/container-netbox-pod.service
sudo systemctl daemon-reload
sudo systemctl enable --now container-netbox-pod.service
systemctl status container-netbox-pod.service --no-pager停止と削除
検証を終了する場合は、systemd unit を止めてから pod を削除します。DB データを残すか削除するかは別に判断します。
sudo systemctl disable --now container-netbox-pod.service
podman pod rm -f netbox-pod
podman pod ps
ls -ld /opt/container/netbox/postgresql運用時に見るポイント
NetBox は構成管理データを持つため、DB の永続化とバックアップが重要です。Podman で起動できることと、継続運用できることは分けて確認します。
- PostgreSQL データをバックアップ対象にする
- Redis は用途を分けて起動する
- Web UI の公開範囲と認証を確認する
- NetBox image の tag を固定する
- アップグレード時は DB マイグレーションを確認する
まとめ
Ubuntu 22.04 の Podman で NetBox を動かす場合、NetBox 本体、PostgreSQL、Redis、Redis cache を 1 つの pod にまとめると、検証環境として扱いやすくなります。
構築後は、Web UI の応答、DB 永続化、Redis 接続、systemd unit、バックアップ対象を確認します。検証用のパスワードや latest tag をそのまま運用へ持ち込まないことも重要です。

