tutorial

Monitoring Froxlor with Vigilmon

Froxlor manages your entire hosting stack — web, mail, DNS, and databases. When it goes down, so does every hosted site and service. Here's how to monitor Froxlor's web UI, REST API, SMTP port, SSL certificates, and scheduled tasks with Vigilmon.

Froxlor is a mature open-source multi-server web hosting control panel that manages Nginx/Apache, Postfix/Dovecot mail, BIND/PowerDNS, MySQL/MariaDB, and FTP — all from a single PHP-based interface. Popular among European hosting providers and VPS operators, Froxlor's lightweight footprint makes it an appealing ISPConfig alternative. That breadth of control is also its central risk: if the panel itself is unreachable, so is every administrative action across your entire server stack. Vigilmon lets you watch Froxlor's UI, API, mail ports, SSL certificates, and cron-based task execution from the outside.

What You'll Set Up

  • HTTP monitor for the Froxlor web UI login endpoint
  • REST API availability check for the /api/v1/index.php endpoint
  • TCP monitor for Postfix SMTP on port 25
  • SSL certificate expiry alerts for the Froxlor admin UI and hosted domains
  • Heartbeat monitor for Froxlor's cron-based scheduled tasks

Prerequisites

  • Froxlor installed and accessible at http://YOUR_HOST/hosting/login.php or https://YOUR_HOST/hosting/login.php
  • Postfix running and bound to port 25
  • A free Vigilmon account

Step 1: Monitor the Froxlor Web UI

The Froxlor login page is the canonical health indicator for the entire panel. If it returns an error or times out, the PHP application has crashed, Apache/Nginx is down, or the database connection has failed.

  1. Log in to vigilmon.online and click Add Monitor.
  2. Set Type to HTTP / HTTPS.
  3. Enter the URL: http://YOUR_HOST/hosting/login.php (or https:// if TLS-enabled).
  4. Set Check interval to 2 minutes.
  5. Set Expected HTTP status to 200.
  6. Under Advanced, set Expected body contains to Froxlor (the page title present in a healthy response).
  7. Click Save.

The keyword check distinguishes a live Froxlor login page from an nginx placeholder or PHP error page that still returns HTTP 200.


Step 2: Check the Froxlor REST API

Froxlor exposes a REST API at /api/v1/index.php used for automation and integrations. An unauthenticated GET returns a structured JSON error — not a server error — confirming the API layer is reachable and PHP is processing requests correctly.

  1. Add MonitorHTTP / HTTPS.
  2. URL: https://YOUR_HOST/api/v1/index.php
  3. Set Expected HTTP status to 200.
  4. Under Advanced, set Expected body contains to "error" (the JSON response always contains this key for unauthenticated requests).
  5. Set Check interval to 2 minutes.
  6. Click Save.

This catches PHP-FPM failures or database errors that break API responses while the web server port remains open.


Step 3: Monitor Postfix SMTP on Port 25

Froxlor manages Postfix mail configuration, and SMTP availability on port 25 is critical for all mail flowing through your server. A TCP check verifies the Postfix process is running and accepting connections.

  1. Add MonitorTCP Port.
  2. Host: YOUR_HOST, Port: 25.
  3. Set Check interval to 2 minutes.
  4. Click Save.

Port 25 going dark typically means Postfix has crashed, a Froxlor configuration change produced an invalid main.cf, or a system resource limit (file descriptors, memory) has been hit. If your server is not a mail sender and port 25 is outbound-blocked by your host, use the Froxlor admin UI monitor in Step 1 as your mail-stack proxy instead.


Step 4: SSL Certificate Expiry Alerts

Froxlor can provision and renew Let's Encrypt certificates for its own admin UI and for hosted customer domains via its cron-based renewal tasks. If the renewal cron fails silently, certificates expire without warning.

For the Froxlor admin UI:

  1. Open the HTTP / HTTPS monitor created in Step 1.
  2. Enable Monitor SSL certificate.
  3. Set Alert when certificate expires in less than 14 days.
  4. Click Save.

For each HTTPS-hosted domain managed by Froxlor:

  1. Add MonitorHTTP / HTTPS for the domain.
  2. Enable Monitor SSL certificate with a 14 days threshold.
  3. Click Save.

A 14-day lead time gives you two full renewal cycles to diagnose why Froxlor's certificate renewal cron stopped working before users encounter certificate errors.


Step 5: Heartbeat Monitor for Froxlor Scheduled Tasks

Froxlor relies on a system cron job (typically /usr/bin/php /var/www/froxlor/scripts/froxlor_tasks.php) to process the internal task queue — email queue processing, DNS zone propagation, SSL renewal requests, and domain configuration changes. If this cron stops running, changes made in the panel silently queue up without being applied.

Set up a Vigilmon heartbeat monitor and call it from the Froxlor cron wrapper:

  1. In Vigilmon, Add MonitorHeartbeat.
  2. Name it Froxlor Task Queue.
  3. Set Expected interval to 15 minutes (adjust to your cron frequency).
  4. Copy the generated heartbeat ping URL.
  5. Edit your Froxlor cron wrapper or create /etc/cron.d/froxlor-watchdog:
*/10 * * * * froxlor /usr/bin/php /var/www/froxlor/scripts/froxlor_tasks.php && curl -fsS YOUR_HEARTBEAT_URL > /dev/null 2>&1

The && ensures Vigilmon is only pinged when the task script exits successfully. If the cron fires but the PHP script fails (e.g. database connection lost), the heartbeat goes silent and Vigilmon fires an alert.


Step 6: Alert Channels and Grouping

  1. Go to Alert Channels in Vigilmon and configure your preferred channel (email, Slack, or webhook).
  2. Group the Froxlor monitors under a Froxlor service group so a single outage generates a consolidated notification rather than individual alerts for each check.
  3. Set Consecutive failures before alert to 2 on the web UI monitor — PHP-FPM can take a few seconds to recover after a spike in load.

Summary

| Monitor | Target | What It Catches | |---|---|---| | Web UI | /hosting/login.php | PHP crash, DB connection failure, nginx down | | REST API | /api/v1/index.php | PHP-FPM failure, API layer errors | | SMTP | TCP port 25 | Postfix crash, invalid mail config | | SSL certificate | Admin UI + hosted domains | Let's Encrypt renewal failure | | Heartbeat | Froxlor task cron | Cron stop, DNS/SSL queue backlog |

Froxlor's power is that it automates your entire server stack from one place. Vigilmon ensures that when Froxlor itself has a problem — whether it's a PHP crash, a broken cron, or a certificate that forgot to renew — you find out immediately rather than from a hosting customer.

Monitor your app with Vigilmon

Free plan — 5 monitors, no credit card required. Up and running in 60 seconds.

Start free →