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)
Step 1 System Update
Keeps security libraries current and avoids dependency issues.
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:
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)
(Optional check)
sudo systemctl status postgresql
Create OpenNMS Database + User (IMPORTANT)
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).
If it’s below 70, set it (example: 100) and restart
sudo systemctl restart postgresql
Too low max_connections can cause startup failures and random DB errors under load.
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:
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.
--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
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
sudo systemctl start opennms
sudo systemctl status opennms
Check if the web port is listening:
Basic Security (Don’t Skip This)
OpenNMS is powerful, so secure access matters.
Password: admin
Change it immediately on first login
Karaf shell: 8101 (very powerful)
Best practice: allow access only from office IP / VPN / private network.
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 NowFrequently Asked Questions
sudo tail -n 200 /opt/opennms/logs/daemon.log
sudo tail -n 200 /opt/opennms/logs/karaf.log
service-configuration.xml.
- DB user permissions are wrong
install -diswas not completed- PostgreSQL version is unsupported
max_connectionsis too low
max_connections >= 70.
- Service Assurance (availability checks)
- Performance Monitoring (collection + graphs)
- Fault Management (events + alarms + notifications)
/usr/lib/jvm And OpenNMS locks the correct path using
runjava -s.