OpenNMS is a free, open-source, self-hosted network monitoring and network management solution developed by OpenNMS Group. It helps you to visualize and monitor everything on your local and remote networks. OpenNMS can be integrated with business applications and workflows to monitor your networks. It comes with a web-based interface that allows you to monitor everything from a central place.

In this post, we will show you how to install the OpenNMS monitoring tool with Docker on Arch Linux.

Step 1 – Configure Repository

By default, the default repository is outdated in Arch Linux, so you will need to modify the default mirror list. You can do it by editing the mirror list configuration file:

nano  /etc/pacman.d/mirrorlist

Remove all lines and add the following lines:

## Score: 0.7, United States
Server =$repo/os/$arch
## Score: 0.8, United States
Server =$repo/os/$arch
Server =$repo/os/$arch
## Score: 0.9, United Kingdom
Server =$repo/os/$arch
## Score: 1.5, United Kingdom
Server =$repo/os/$arch
Server =$repo/os/$arch
## Score: 6.6, United States
Server =$repo/os/$arch
## Score: 6.7, United States
Server =$repo/os/$arch
## Score: 6.8, United States
Server =$repo/os/$arch
## Score: 7.1, India
Server =$repo/os/$arch
## Score: 10.1, United States
Server =$repo/os/$arch

Save and close the file, then update all the package indexes with the following command:

pacman -Syu

Step 2 – Install Docker

First, you will need to install Docker and Docker Compose on your server. You can install both packages with the following command.

pacman -S docker docker-compose

Once the Docker is installed, enable the Docker service to start at system reboot.

systemctl enable docker

Next, restart your system to apply the system.


Step 3 – Create a Docker Compose File for OpenNMS

First, create a directory to store OpenNMS configurations.

mkdir opennms

Next, navigate to the OpenNMS directory and create a docker-compose.yml file.

cd opennms
nano docker-compose.yml

Add the following configuration.

version: '3'

  data-postgres: {}
  data-opennms: {}

    image: postgres:12
    container_name: database
      - TZ=Europe/Berlin
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
      - data-postgres:/var/lib/postgresql/data
      test: [ "CMD-SHELL", "pg_isready -U postgres" ]
      interval: 10s
      timeout: 30s
      retries: 3

    image: opennms/horizon:27.1.1
    container_name: horizon
      - TZ=Europe/Berlin
      - POSTGRES_HOST=database
      - POSTGRES_PORT=5432
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
      - OPENNMS_DBNAME=opennms
      - OPENNMS_DBUSER=opennms
      - OPENNMS_DBPASS=opennms
      - data-opennms:/opt/opennms/share/rrd
      - ./overlay:/opt/opennms-overlay
    command: ["-s"]
      - "8980:8980/tcp"
      - "8101:8101/tcp"
      - "61616:61616/tcp"
      test: [ "CMD", "curl", "-f", "-I", "http://localhost:8980/opennms/login.jsp" ]
      interval: 1m
      timeout: 5s
      retries: 3

Save and close the file when you are done.

Step 4 – Create OpenNMS Container

Your docker-compose.yml file for OpenNMS is now ready to deploy OpenNMS. Run the following command inside the netbox directory to launch the Netbox container.

docker-compose up -d

If everything is fine, you will get the following output.

✔ horizon 12 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 116.7s
✔ 7a0437f04f83 Pull complete 16.2s
✔ 14e88814ab83 Pull complete 17.1s
✔ 15d4a57fa9b3 Pull complete 38.0s
✔ 48f60c15ef49 Pull complete 39.0s
✔ 40326c4bdfdf Pull complete 80.7s
✔ 8fe30d1fc55f Pull complete 80.9s
✔ a0a9efee3070 Pull complete 81.1s
✔ 736b43559f0f Pull complete 81.2s
✔ fc4845e5d963 Pull complete 81.4s
✔ 0be5443a0ce9 Pull complete 115.5s
✔ bb3010fe38e5 Pull complete 115.6s
✔ 570c6a68cf58 Pull complete 115.7s
✔ database 13 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 40.3s
✔ f1f26f570256 Pull complete 18.1s
✔ 1c04f8741265 Pull complete 19.4s
✔ dffc353b86eb Pull complete 19.7s
✔ 18c4a9e6c414 Pull complete 20.6s
✔ 81f47e7b3852 Pull complete 23.7s
✔ 5e26c947960d Pull complete 24.5s
✔ a2c3dc85e8c3 Pull complete 24.8s
✔ 17df73636f01 Pull complete 25.1s
✔ 05add2dd64c8 Pull complete 37.9s
✔ f8eca8be8b3c Pull complete 38.2s
✔ cdf9a1dad65d Pull complete 38.4s
✔ 194ad2944d69 Pull complete 38.8s
✔ 66763d72b3d4 Pull complete 39.0s
[+] Running 5/5
✔ Network opennms_default Created 0.1s
✔ Volume "opennms_data-postgres" Created 0.0s
✔ Volume "opennms_data-opennms" Created 0.0s
✔ Container horizon Started 1.5s
✔ Container database Started 1.3s

You can also verify the Netbox container using the following command.

docker-compose ps

You will get the following output.

database postgres:12 "docker-entrypoint.s…" database 21 seconds ago Up 19 seconds (healthy) 5432/tcp
horizon opennms/horizon:27.1.1 "/ -s" horizon 21 seconds ago Up 18 seconds (health: starting)>8101/tcp, :::8101->8101/tcp, 1162/udp,>8980/tcp, :::8980->8980/tcp, 10514/udp,>61616/tcp, :::61616->61616/tcp

Step 5 – Access OpenNMS Web Interface

At this point, OpenNMS is started and listens on port 8980. Now, open your web browser and access OpenNMS using the URL http://your-server-ip:8980. You should see the OpenNMS login page.

Provide the OpenNMS default admin username and password as admin/admin then click on the Login button. You should see the OpenNMS dashboard on the following page.


Congratulations! You have successfully installed OpenNMS with Docker on Arch Linux. You can now start monitoring your local and remote networks from a central location. You can also try to deploy the OpenNMS monitoring solution on dedicated server hosting from Atlantic.Net!