How to Install OpenNMS Horizon on Debian 12

Managing an enterprise network requires a monitoring tool that never sleeps. OpenNMS Horizon is one of the most established, enterprise-grade open-source network management platforms. When deployed on a MIG Dedicated Server running Debian 12, you get stability, high I/O performance, and reliable real-time visibility, if you install it the right way.

In this guide, I’ll give you exact production-ready steps, including the right Java & PostgreSQL versions, modern repository setup (no deprecated apt-key), database initialization, and basic security hardening.

Why Use OpenNMS on Your Dedicated Server?

Comprehensive Monitoring Capabilities

  • Network Monitoring: Monitor routers, switches, firewalls (SNMP/ICMP), detect outages, track performance.
  • Server Health: CPU, RAM, disk, service checks (HTTP/HTTPS, DNS, MySQL).
  • Service Assurance: Make sure critical services respond and alert instantly.
  • Instant Alerts: Email + integrations (Slack/Telegram etc.) via notification paths.

Performance & Automation

  • Visual Analytics: Performance graphs + trending.
  • Auto-Discovery: Discover nodes as they join your network.

The Power of a Dedicated Environment

  • High I/O Demand: Time-series data + events cause frequent writes (NVMe helps a lot).
  • No Resource Sharing: Monitoring must stay reliable even during peak traffic.
  • Stability: Dedicated resources = consistent monitoring and alert delivery.

Recommended Minimum (small/medium setups)

  • Hardware: 8GB RAM (minimum), 4 CPU cores
  • Storage: NVMe SSD (strongly recommended)
  • Network: Static IP recommended (or DHCP reservation + stable hostname)
✅ Why this matters: Monitoring many devices creates heavy disk writes. NVMe reduces I/O wait and improves database performance.

Step 1 System Update

Keeps security libraries current and avoids dependency issues.

Bash sudo apt update -y && sudo apt upgrade -y
sudo apt install -y curl gnupg ca-certificates wget lsb-release

Step 2 Install Java (OpenJDK 17)

Horizon 35 requires JDK 17 for compatibility.

For Ubuntu:

Bash sudo apt install -y openjdk-17-jdk
java --version

Step 3 Setup PostgreSQL (Debian 12 Default = PostgreSQL 15)

On Debian 12 (Bookworm), the default repo typically provides PostgreSQL 15, which is a common production choice and fits well for Horizon deployments.

Install PostgreSQL (Debian 12 repo)

Bash sudo apt install -y postgresql postgresql-contrib

(Optional check)

Bash psql --version
sudo systemctl status postgresql
✅ If you specifically want PGDG (to pin a newer major version later), PostgreSQL also provides official Debian repo instructions, but for Debian 12, the default PostgreSQL 15 is usually perfect

Create OpenNMS Database + User (IMPORTANT)

Bash # Create the opennms DB user (you will be prompted for a password)
sudo -u postgres createuser -P opennms

# Create the database owned by opennms
sudo -u postgres createdb -O opennms opennms

Ensure PostgreSQL max_connections is sufficient (IMPORTANT)

OpenNMS needs enough DB connections (minimum is commonly 70+ for stability in real environments).

Bash sudo -u postgres psql -tAc "SHOW max_connections;"

If it’s below 70, set it (example: 100) and restart

Bash sudo -u postgres psql -c "ALTER SYSTEM SET max_connections = '100';"
sudo systemctl restart postgresql

Too low max_connections can cause startup failures and random DB errors under load.

⚠️ About iplike: It’s not “built into PostgreSQL by default”. OpenNMS installs required DB procedures during initialization (install -dis).

💡 Pro-Tip: Pre-installing IPLIKE for Stability

While the OpenNMS installer is designed to set up database procedures automatically, it can sometimes fail due to specific environment permissions. To ensure a 100% success rate during the install -dis phase, it is highly recommended to manually install the iplike package beforehand:

Bash sudo apt install -y postgresql-15-opennms-iplike

Step 4 Add Official OpenNMS Repository

❌ Old method: apt-key add - (deprecated)

✅ Modern method: signed-by keyring (safer and future-proof).

The installation will now begin. This takes 5-15 minutes depending on server speed.

Bash curl -fsSL https://debian.opennms.org/OPENNMS-GPG-KEY | sudo gpg
--dearmor -o /usr/share/keyrings/opennms.gpg
echo "deb [signed-by=/usr/share/keyrings/opennms.gpg]
https://debian.opennms.org stable main" | sudo tee
/etc/apt/sources.list.d/opennms.list

sudo apt update -y
sudo apt install -y opennms

Debian default repos may not carry the latest Horizon packages; official repo ensures the correct signed packages

Step 5 Link Java & Initialize DB

✅ Newer Debian packages use /opt/opennms paths

Bash # Detect and link Java
sudo /opt/opennms/bin/runjava -s

# Install the Database Schema + defaults + procedures
sudo /opt/opennms/bin/install -dis

runjava -s locks the correct Java path.

install -dis creates schema, inserts defaults, and installs DB procedures.

Step 6 Start & Verify Service

Bash sudo systemctl enable opennms
sudo systemctl start opennms
sudo systemctl status opennms
✅ Success Indicator:: Active: active (running)

Check if the web port is listening:

Bash sudo ss -lntp | grep 8980 || true

Basic Security (Don’t Skip This)

OpenNMS is powerful, so secure access matters.

✅ Default Admin Password (Change Immediately)
Username: admin
Password: admin

Change it immediately on first login

✅ Do NOT expose internal admin ports
Web UI: 8980
Karaf shell: 8101 (very powerful)

Best practice: allow access only from office IP / VPN / private network.

✅ Prefer HTTPS

Use a reverse proxy (Nginx/Caddy) with TLS in front of OpenNMS if you need external access.

Need a High-Performance Server?

Experience blazing-fast speeds and total control with our Bare Metal Dedicated Servers. Optimized for heavy workloads and maximum uptime.

Get Your Dedicated Server Now

Frequently Asked Questions

Q: Why does it say Started OpenNMS, but it has not finished starting up? A: Why does it say Started OpenNMS, but it has not finished starting up?
Bash sudo journalctl -u opennms -n 200 --no-pager
sudo tail -n 200 /opt/opennms/logs/daemon.log
sudo tail -n 200 /opt/opennms/logs/karaf.log
Q: DHCP Poller (Dhcpd) is Not Running. Why? A: If another DHCP service already uses the port, the poller can fail. If you don’t need DHCP monitoring, disable that service in service-configuration.xml.
Q: I’m getting an iplike / permission / procedure error. A: Usually happens when:
  • DB user permissions are wrong
  • install -dis was not completed
  • PostgreSQL version is unsupported
  • max_connections is too low
Re-run:
Bash sudo /opt/opennms/bin/install -dis
And confirm max_connections >= 70.
Q: Why are my database error messages in a different language? A: For easier troubleshooting, set PostgreSQL logging language to C/English (optional). Then restart PostgreSQL.
Q: Is OpenNMS still free? A: Yes. Horizon is the free, community-supported distribution. There are paid/enterprise support options under other product lines (like Meridian).
Q: What are the primary purposes of OpenNMS? A:
  • Service Assurance (availability checks)
  • Performance Monitoring (collection + graphs)
  • Fault Management (events + alarms + notifications)
Q: How does OpenNMS work? A: It discovers nodes, polls services, collects metrics (SNMP/ICMP/JMX etc.), stores data in PostgreSQL, and triggers alarms/notifications.
Q: Is OpenNMS the best free monitoring tool? A: It’s better to say: it’s a strong choice for large-scale monitoring. “Best” depends on needs (Zabbix/Nagios/etc. have different strengths).
Q: Can I install OpenNMS on Windows instead of Debian? A: For production deployments, OpenNMS is typically deployed on Linux servers. Debian/Ubuntu/RHEL-style environments are the most common and best documented.
Q: Where is OpenJDK installed in Debian 12? A: Usually under: /usr/lib/jvm And OpenNMS locks the correct path using runjava -s.
✅ Final Note (Debian 12 in 2026) Debian 12 is a better long-run choice than Debian 11 for new installs, because it has a longer support runway and ships PostgreSQL 15 by default..