Skip to content

Docker Compose で NetBox を起動する

NetBox を手軽に Docker で起動する手順をメモしておきます。

検証環境

対象 バージョン
Ubuntu 22.04.3LTS
NetBox 3.7-2.8.0

事前準備

netbox-docker から Clone します。 NetBox の GitHub は現時点で release ブランチと develop ブランチのふたつで運用しているようです (release ブランチがデフォルト設定)。 デフォルト設定になっていますが念の為、明示的に release ブランチを指定して Clonse します。

1
2
git clone -b release https://github.com/netbox-community/netbox-docker.git
cd netbox-docker

Clonse したファイルには docker-compose.yml が含まれていますので、すぐに Docker Compose でコンテナを開始することが出来ます。 ですが、この docker-compose.yml`` にはport` の定義が無い為、外部ネットワークからアクセスすることが出来ません。

Compose 設定をファイルとプロジェクト間で共有 に記載されていますが、Docker Compose には「docker-compose.override.yml を用意して、docker-compose.yml を部分的に上書きする」機能があります。 NetBox の GitHub には上書き用のサンプルである docker-compose.override.yml.example も用意されているので、これを docker-compose.override.yml に上書きしても良いのですが、今回は公式サイトの手順に習って「新規に docker-compose.orverride.yml を作成」することにします。 以下を実行します。

1
2
3
4
5
6
7
tee docker-compose.override.yml <<EOF
version: '3.4'
services:
  netbox:
    ports:
      - 8000:8080
EOF

あとは docker compose pull してコンテナイメージを取得し、事前準備は完了です。

1
docker compose pull

コンテナを起動する

docker compose でコンテナを起動します。

1
docker compose up -d

私の環境では netbox-docker-netbox-1 でエラーになってしまいました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# docker compose up -d
[+] Running 4/13
 ⠧ Network netbox-docker_default                   Created         91.8s
 ⠦ Volume "netbox-docker_netbox-media-files"       Created         91.6s
 ⠦ Volume "netbox-docker_netbox-reports-files"     Created         91.6s
 ⠦ Volume "netbox-docker_netbox-scripts-files"     Created         91.6s
 ⠦ Volume "netbox-docker_netbox-postgres-data"     Created         91.6s
 ⠦ Volume "netbox-docker_netbox-redis-data"        Created         91.6s
 ⠦ Volume "netbox-docker_netbox-redis-cache-data"  Created         91.6s
 ✔ Container netbox-docker-redis-cache-1           Started          0.8s
 ✔ Container netbox-docker-postgres-1              Started          0.8s
 ✔ Container netbox-docker-redis-1                 Started          0.7s
 ✘ Container netbox-docker-netbox-1                Error           91.5s
 ⠴ Container netbox-docker-netbox-housekeeping-1   Created         91.5s
 ⠴ Container netbox-docker-netbox-worker-1         Created         91.5s
dependency failed to start: container netbox-docker-netbox-1 is unhealthy

この状態で docker compose ps -a を確認すると以下のように netbox-housekeepingnetbox-worker が Up していません。 詳細ログは docker compose logs -f netbox で確認出来ます。

1
2
3
4
5
6
7
8
# docker compose ps -a
NAME                                  IMAGE                                         COMMAND                  SERVICE               CREATED          STATUS                    PORTS
netbox-docker-netbox-1                docker.io/netboxcommunity/netbox:v3.7-2.8.0   "/usr/bin/tini -- /o…"   netbox                14 minutes ago   Up 14 minutes (healthy)   0.0.0.0:8000->8080/tcp, :::8000->8080/tcp
netbox-docker-netbox-housekeeping-1   docker.io/netboxcommunity/netbox:v3.7-2.8.0   "/usr/bin/tini -- /o…"   netbox-housekeeping   14 minutes ago   Created
netbox-docker-netbox-worker-1         docker.io/netboxcommunity/netbox:v3.7-2.8.0   "/usr/bin/tini -- /o…"   netbox-worker         14 minutes ago   Created
netbox-docker-postgres-1              docker.io/postgres:16-alpine                  "docker-entrypoint.s…"   postgres              14 minutes ago   Up 14 minutes             5432/tcp
netbox-docker-redis-1                 docker.io/redis:7-alpine                      "docker-entrypoint.s…"   redis                 14 minutes ago   Up 14 minutes             6379/tcp
netbox-docker-redis-cache-1           docker.io/redis:7-alpine                      "docker-entrypoint.s…"   redis-cache           14 minutes ago   Up 14 minutes             6379/tcp

今回、利用している docker-compose.yml のファイル内では netboxnetbox-workernetbox-housekeeping に対して healthcheck が設定されています。 ホストのスペックや負荷状態に依存すると思われますが、コンテナの起動に時間がかかってしまい、Health Check に時間がかかると Error になると思われます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
services:
  netbox: &netbox
(snip)
    healthcheck:
      start_period: 60s
      timeout: 3s
      interval: 15s
      test: "curl -f http://localhost:8080/api/ || exit 1"
(snip)
  netbox-worker:
(snip)
    healthcheck:
      start_period: 20s
      timeout: 3s
      interval: 15s
      test: "ps -aux | grep -v grep | grep -q rqworker || exit 1"
  netbox-housekeeping:
(snip)
    healthcheck:
      start_period: 20s
      timeout: 3s
      interval: 15s
      test: "ps -aux | grep -v grep | grep -q housekeeping || exit 1"

こういった場合は再度、docker compose up し直して、未起動のコンテナを開始することで解決します。

1
docker compose up -d

実行例は以下の通りです。

1
2
3
4
5
6
7
8
# docker compose up -d
[+] Running 6/6
 ✔ Container netbox-docker-redis-1                Running      0.0s
 ✔ Container netbox-docker-postgres-1             Running      0.0s
 ✔ Container netbox-docker-redis-cache-1          Running      0.0s
 ✔ Container netbox-docker-netbox-1               Healthy      0.0s
 ✔ Container netbox-docker-netbox-housekeeping-1  Started      0.5s
 ✔ Container netbox-docker-netbox-worker-1        Started

スーパーユーザを作成する

NetBox の初期状態ではスーパーユーザが存在しない為、CLI から作成しておく必要があります。 以下を実行します。

1
docker compose exec netbox /opt/netbox/netbox/manage.py createsuperuser

実行例は以下の通りです。 以下ではユーザ名は admin、パスワードは password でスーパーユーザを作成しています。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# docker compose exec netbox /opt/netbox/netbox/manage.py createsuperuser
🧬 loaded config '/etc/netbox/config/configuration.py'
🧬 loaded config '/etc/netbox/config/extra.py'
🧬 loaded config '/etc/netbox/config/logging.py'
🧬 loaded config '/etc/netbox/config/plugins.py'
Username (leave blank to use 'unit'): admin
Email address: admin@example.com
Password: password
Password (again): password
Superuser created successfully.

NetBox にアクセスする

Web ブラウザで http://ADDRESS:8000/ へアクセスすると NetBox の管理画面が表示されます。 この状態では「いずれのユーザでもログインしていない、未ログイン状態」です。 画面右上の Log In をクリックします。

file

これまでの手順で作成したスーパーユーザのログイン情報 (今回の手順であればユーザ名は admin、パスワードは password) を入力します。

file

スーパーユーザである admin としてログイン出来ました。

file