How to run the Netbox IPAM tool in a Docker container

Welcome to this guide to learn how to run the Netbox IPAM tool in a Docker container. But before we delve into the core of this problem, let us first understand the entire content of the Netbox IPAM tool.

Netbox is a free and open source tool for managing and recording computer networks via the Web. Netbox IPAM is written in Django. It helps to simplify the task of creating a virtual realization of equipment in the data center, which was originally completed on paper. The amazing features of Netbox IPAM include:

  • VLAN management
  • Virtual reality management
  • IPAM-IP address management
  • DCIM-Data Center Infrastructure Management
  • Circuit supplier management
  • Multi-site (rental)
  • Single converged database
  • Rack height
  • Report alert
  • Connection Management-Interface/Console/Power
  • Custom titles for logos, etc.

Running Netbox with Docker Containers is easy because it avoids all the tedious tasks of installing dependencies such as Python and Django.

getting Started.

Before we start this guide, please make sure that your system is up to date and has the required software packages installed.

## On Debian/Ubuntu
sudo apt update && sudo apt upgrade
sudo apt install curl vim git

## On RHEL/CentOS/RockyLinux 8
sudo yum -y update
sudo yum -y install curl vim git

## On Fedora
sudo dnf update
sudo dnf -y install curl vim git

1. Install Docker and Docker-Compose on Linux

This setting relies on Docker and docker-compose that meet the following requirements:

  1. Docker version 19.03 above
  2. docker-compose version 1.28.0 above

Use the following guide to install the latest version of Docker CE on Linux.

  • How to install Docker CE on Linux system

Verify the installed Docker version.

$ docker -v
Docker version 20.10.10, build b485636

Then add your system user to the docker group so that when not in use sudo Order.

sudo usermod -aG docker $USER
newgrp docker

Now go ahead and install Docker-compose on Linux. Download the latest version of docker-compose as follows.

curl -s https://api.github.com/repos/docker/compose/releases/latest | grep browser_download_url  | grep docker-compose-linux-x86_64 | cut -d '"' -f 4 | wget -qi -

Make the file executable.

chmod +x docker-compose-linux-x86_64

Move the file to your PATH.

sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose

Verify your installation by checking the docker-compose version.

$ docker-compose version
Docker Compose version v2.1.1

Now start and enable docker.

sudo systemctl start docker && sudo systemctl enable docker

2. Configure Netbox IPAM server

All the components needed to build Netbox as a docker container are available in the Github repository.Here, the image is constructed and posted to Docker Center with Quay.io once a day.

Now the git clone Netbox docker file is as follows.

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

Navigate to the Netbox directory.

cd netbox-docker

Revise docker-compose.yml From docker-compose.override.yml.example The file is as follows.

tee docker-compose.override.yml <<EOF
version: '3.4'
services:
  netbox:
    ports:
      - 8000:8080
EOF

Now we are ready to start our docker container.But first, pull the required images for Netbox, PostgreSQL, Redis, etc.

$ docker-compose pull

A few pictures will be pulled as follows

...........
 ⠿ postgres Pulled                                                                                                                              13.5s
   ⠿ 9f97b97dbe44 Pull complete                                                                                                                  3.5s
   ⠿ 1b95022c44c5 Pull complete                                                                                                                  3.7s
   ⠿ 560a1e367f24 Pull complete                                                                                                                  8.0s
   ⠿ 41255ef20c58 Pull complete                                                                                                                  8.3s
   ⠿ 13107d5a09d7 Pull complete                                                                                                                  8.6s
   ⠿ 234db58e5916 Pull complete                                                                                                                  8.8s
   ⠿ 98ce0f30aef7 Pull complete                                                                                                                  9.1s
 ⠿ redis Pulled                                                                                                                                  9.3s
   ⠿ 97518928ae5f Already exists                                                                                                                 0.8s
   ⠿ 66f8c4150d27 Pull complete                                                                                                                  2.5s
 ⠿ redis-cache Pulled                                                                                                                            9.3s
   ⠿ 09a8bf17a0bf Pull complete                                                                                                                  3.1s
   ⠿ e547313af8e7 Pull complete                                                                                                                  4.0s
   ⠿ 335eeadfbde0 Pull complete                                                                                                                  4.6s
   ⠿ 7151fc2c01eb Pull complete    

Start the Netbox IPAM container.

$ docker-compose up

Sample output:

[+] Running 10/10
 ⠿ Network netbox-docker_default                  Created                  0.2s
 ⠿ Volume "netbox-docker_netbox-media-files"      Created                  0.0s
 ⠿ Volume "netbox-docker_netbox-postgres-data"    Created                  0.0s
 ⠿ Volume "netbox-docker_netbox-redis-data"       Created                  0.0s
 ⠿ Container netbox-docker-redis-cache-1          Created                  0.7s
 ⠿ Container netbox-docker-postgres-1             Created                  0.6s
 ⠿ Container netbox-docker-redis-1                Created                  0.7s
 ⠿ Container netbox-docker-netbox-worker-1        Created                  0.5s
 ⠿ Container netbox-docker-netbox-housekeeping-1  Created                  0.5s
 ⠿ Container netbox-docker-netbox-1               Created                  0.3s
Attaching to netbox-docker-netbox-1, netbox-docker-netbox-housekeeping-1, netbox-docker-netbox-worker-1, netbox-docker-postgres-1, netbox-docker-redis-1, netbox-docker-redis-cache-1
....................

netbox-docker-netbox-1               | ⏳ Waiting for control socket to be created... (1/10)
netbox-docker-netbox-1               | 2021/11/15 10:37:29 [warn] 7#7 Unit is running unprivileged, then it cannot use arbitrary user and group.
netbox-docker-netbox-1               | 2021/11/15 10:37:29 [info] 7#7 unit started
netbox-docker-netbox-1               | 2021/11/15 10:37:29 [info] 20#20 discovery started
netbox-docker-netbox-1               | 2021/11/15 10:37:29 [notice] 20#20 module: python 3.9.5 "/usr/lib/unit/modules/python3.unit.so"
netbox-docker-netbox-1               | 2021/11/15 10:37:29 [info] 7#7 controller started
netbox-docker-netbox-1               | 2021/11/15 10:37:29 [notice] 7#7 process 20 exited with code 0
netbox-docker-netbox-1               | 2021/11/15 10:37:29 [info] 22#22 router started
netbox-docker-netbox-1               | 2021/11/15 10:37:29 [info] 22#22 OpenSSL 1.1.1l  24 Aug 2021, 101010cf
netbox-docker-netbox-1               | ⚙️ Applying configuration from /etc/unit/nginx-unit.json
netbox-docker-netbox-1               | 2021/11/15 10:37:30 [info] 26#26 "netbox" application started
netbox-docker-netbox-1               | ✅ Unit configuration loaded successfully
netbox-docker-netbox-1               | 2021/11/15 10:37:31 [notice] 7#7 process 18 exited with code 0

When you see the above output, the process is complete, now exit, continue and verify that the container is running:

$ docker ps
CONTAINER ID   IMAGE                               COMMAND                  CREATED          STATUS          PORTS                                       NAMES
ead31a95654a   netboxcommunity/netbox:v3.0-1.4.1   "/sbin/tini -- /opt/…"   2 minutes ago   Up 2 minutes   0.0.0.0:8000->8080/tcp, :::8000->8080/tcp   netbox-docker-netbox-1
d652988275e6   netboxcommunity/netbox:v3.0-1.4.1   "/sbin/tini -- /opt/…"   2 minutes ago   Up 2 minutes                                               netbox-docker-netbox-housekeeping-1
6ee0e21ecde0   netboxcommunity/netbox:v3.0-1.4.1   "/sbin/tini -- /opt/…"   2 minutes ago   Up 2 minutes                                               netbox-docker-netbox-worker-1
3ff7e0c6b174   redis:6-alpine                      "docker-entrypoint.s…"   2 minutes ago   Up 2 minutes   6379/tcp                                    netbox-docker-redis-cache-1
92e49f207764   redis:6-alpine                      "docker-entrypoint.s…"   2 minutes ago   Up 2 minutes   6379/tcp                                    netbox-docker-redis-1
77908ccce0ca   postgres:13-alpine                  "docker-entrypoint.s…"   2 minutes ago   Up 2 minutes   5432/tcp                                    netbox-docker-postgres-1

If you have a firewall enabled, please allow port 8000 as shown below.

##For Firewalld
sudo firewall-cmd --zone=public --add-port=8000/tcp --permanent
sudo firewall-cmd --reload

##For UFW
sudo ufw allow 8000/tcp

3. Access the Netbox IPAM tool Web UI

Everything is set, we can now go ahead and use the URL to access the Netbox IPAM Web UI https://hostname:8000 or https://IP_Address:8000.

Use the default credentials as the username to log in to the page: admin, password: admin, with API token: 0123456789abcdef0123456789abcdef01234567How to run the Netbox IPAM tool in a Docker container

After successfully logging in, you will see this page.How to run Netbox IPAM tool in Docker container 1 1

Now you can use the panel on the left to navigate as shown.How to run Netbox IPAM tool in Docker container 2

On this panel, you can add devices, connections, circuits, IPAM, clusters, power supplies, and many other items to be managed.

This provides an implementation, that is, using Netbox IPAM tools, it is very easy to manage the data center by adding the required equipment.

To add a device, such as a router, you will add the following information.How to run Netbox IPAM tool in Docker container 3

If you want to stop all running containers, run the following command:

$ docker-compose stop

You can delete the container as shown below.

$ docker-compose stop && docker-compose rm

Sample output:

+] Running 6/0
 ⠿ Container netbox-docker-netbox-housekeeping-1  Stopped                  0.0s
 ⠿ Container netbox-docker-netbox-1               Stopped                  0.0s
 ⠿ Container netbox-docker-netbox-worker-1        Stopped                  0.0s
 ⠿ Container netbox-docker-redis-cache-1          Stopped                  0.0s
 ⠿ Container netbox-docker-redis-1                Stopped                  0.0s
 ⠿ Container netbox-docker-postgres-1             Stopped                  0.0s
? Going to remove netbox-docker-netbox-1, netbox-docker-netbox-housekeeping-1, netbox-docker-netbox-worker-1, netbox-docker-redis-cache-1, netbox-docker-redis-1, netbox-docker-postgres-1 (y/N) y

in conclusion

now it’s right! At this point, we all agree that it is easier to run the Netbox IPAM tool in a Docker container. I hope you successfully set up the Netbox IPAM tool Docker container.

See more guides:

  • Install NetBox IPAM and DCIM tools on Ubuntu
  • How to install NetBox IPAM on Debian Linux
  • How to install NetBox on Ubuntu 18.04 LTS
  • Install NetBox IPAM on Rocky Linux 8|CentOS 8