🧩 Problem

I wanted a centralized monitoring platform for my homelab that could monitor:

  • On-premises VMware ESXi hosts
  • Linux virtual machines
  • Windows systems
  • HPE iLO hardware management
  • Cloud-hosted workloads

The challenge was that most of my infrastructure lives behind NAT at home, and I did not want to expose services publicly or configure complex port forwarding.


πŸ› οΈ Solution Overview

I built a hybrid monitoring architecture using:

  • Zabbix 7.0 LTS hosted in Azure
  • ZeroTier for secure private connectivity
  • Zabbix Proxy running locally in my homelab
  • VMware API monitoring for ESXi
  • SNMP monitoring for HPE iLO

This design allows cloud-hosted monitoring while keeping home infrastructure private.


πŸ—οΈ Architecture Overview

[Azure Zabbix Server]
            β”‚
      (ZeroTier VPN)
            β”‚
 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
 β”‚                     β”‚
[Remote Hosts]    [Zabbix Proxy]
 Linux/Windows       (Homelab)
                         β”‚
         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
         β”‚               β”‚              β”‚
      [ESXi 01]      [ESXi 02]      [HPE iLO]
      VMware API     VMware API        SNMP

Why This Design?

Instead of exposing home infrastructure to the internet:

  • Remote hosts connect directly over ZeroTier
  • LAN-only systems are monitored through a local Zabbix Proxy
  • The proxy forwards monitoring data securely to Azure

This gives me:

βœ… Centralized monitoring
βœ… No inbound home firewall exposure
βœ… Better scalability for future labs or remote sites


πŸ”§ Environment

Cloud Environment (Azure)

Component Details
VM Type Standard B2ats v2
OS Ubuntu Server 24.04 LTS
Monitoring Platform Zabbix 7.0.25 LTS
Database MariaDB 10.11
Web Server Apache2
SSL Let’s Encrypt
DNS Cloudflare

Homelab Environment

Device Purpose
Dell OptiPlex ESXi Hypervisor
HP MicroServer Gen8 ESXi Hypervisor
HPE iLO 4 Hardware Monitoring
Ubuntu VM Zabbix Proxy
ZeroTier Overlay Networking

πŸš€ Part 1: Deploying Zabbix Server in Azure

Step 1: Create the Azure VM

Using my Azure for Students subscription, I created:

VM Size: Standard_B2ats_v2
OS: Ubuntu Server 24.04 LTS
Region: Australia East
Authentication: SSH Key

I intentionally selected a smaller VM to reduce resource usage. !Image Description


Step 2: Add Swap Memory

Since the VM only had 1 GB RAM, I added a 2 GB swapfile to avoid memory pressure during MariaDB and Zabbix operations.

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

This significantly improved stability.


Step 3: Install ZeroTier

To securely connect my home lab to Azure:

curl -s https://install.zerotier.com | sudo bash
sudo zerotier-cli join YOUR_NETWORK_ID

After approval in the ZeroTier portal, the VM received a private overlay IP.

This became the primary communication path between my monitoring server and remote systems.


Step 4: Install Zabbix 7.0 LTS

Installed required packages:

wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo apt update

sudo apt install -y \
zabbix-server-mysql \
zabbix-frontend-php \
zabbix-apache-conf \
zabbix-agent2 \
zabbix-sql-scripts

Step 5: Configure MariaDB

Created the database:

sudo mysql -u root
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'StrongPassword';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;

Imported schema:

zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | \
mysql -uzabbix -p zabbix

Step 6: Configure SSL

To securely expose the dashboard:

sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache

Final dashboard URL:

https://your.domain.com/zabbix

!Image Description

πŸ“‘ Part 2: Monitoring Remote Hosts with ZeroTier

For systems outside my LAN:

  • Windows machines
  • Linux VMs
  • Wazuh server

I installed:

  • ZeroTier agent
  • Zabbix Agent 2

Example Linux installation:

sudo apt install zabbix-agent2 -y

Updated:

Server=YOUR-ZABBIX-ZEROTIER-IP
ServerActive=YOUR-ZABBIX-ZEROTIER-IP

This allowed agents to communicate securely without public exposure.


πŸ” Part 3: Deploying a Local Zabbix Proxy

Why Use a Proxy?

Some systems in my homelab:

  • ESXi hypervisors
  • HPE iLO
  • Internal VMs

should remain LAN-only.

Instead of installing ZeroTier everywhere, I deployed a Zabbix Proxy VM inside ESXi.

The proxy:

  1. Collects monitoring data locally
  2. Talks to ESXi APIs
  3. Queries SNMP devices
  4. Sends everything securely to Azure

Proxy Configuration

Installed:

sudo apt install \
zabbix-proxy-sqlite3 \
zabbix-agent2 -y

Updated:

sudo nano /etc/zabbix/zabbix_proxy.conf

Configured:

Server=YOUR-ZABBIX-ZEROTIER-IP
Hostname=zabbix-proxy-homelab
ProxyMode=0
StartVMwareCollectors=2

πŸ–₯️ Part 4: Monitoring VMware ESXi

Instead of agents, I used the VMware API.

Configured host macros:

{$VMWARE.URL}
{$VMWARE.USERNAME}
{$VMWARE.PASSWORD}

Using templates:

VMware
VMware Hypervisor

This automatically discovered:

  • Hypervisor health
  • CPU & memory usage
  • Datastores
  • Virtual machines

πŸ”‹ Part 5: Monitoring HPE iLO via SNMP

Enabled SNMP in iLO:

Community: public
Port: 161
Version: SNMPv2

Validated connectivity:

snmpwalk -v2c -c public 192.168.1.4

Applied template:

HP iLO by SNMP

This gave visibility into:

  • Temperature
  • Fans
  • Hardware health
  • Power supply status
  • Firmware information

⚠️ Challenges Faced

1. MariaDB Database Error

After installation:

Database error
No such file or directory

Cause: MariaDB service stopped.

Fix:

sudo systemctl start mariadb

2. Azure VM Resource Constraints

1 GB RAM was insufficient during setup.

Adding swap solved memory pressure.


3. ESXi Monitoring Over ZeroTier

Installing ZeroTier directly on ESXi was not ideal.

A local proxy provided a cleaner and more scalable architecture.


πŸ“Š Final Result

My monitoring stack now includes:

βœ… VMware ESXi monitoring
βœ… Linux & Windows monitoring
βœ… HPE iLO hardware health
βœ… Cloud + on-prem visibility
βœ… Secure connectivity without port forwarding
βœ… HTTPS dashboard via Cloudflare & Let’s Encrypt


🧠 What I Learned

  • Hybrid monitoring architecture design
  • Secure networking using ZeroTier
  • VMware monitoring through APIs
  • Zabbix Proxy deployment patterns
  • Cloud-hosted monitoring best practices

πŸš€ Future Improvements

  • Telegram/email alerting
  • Monitoring Docker containers
  • Grafana dashboards
  • HA Zabbix deployment