tutorial

Monitoring InvoicePlane with Vigilmon

InvoicePlane is a free self-hosted invoicing app — but when it goes down, you stop getting paid. Here's how to monitor InvoicePlane's web UI, REST API, database connectivity, SSL certificates, and scheduled cron tasks with Vigilmon.

InvoicePlane is a free, open-source invoicing and quotation application built on PHP/CodeIgniter — a zero-dollar alternative to FreshBooks or Zoho Invoice for freelancers and small businesses. When InvoicePlane goes down, you can't create invoices, clients can't view quotes, and recurring invoice generation stops silently. Vigilmon gives you real-time uptime monitoring, REST API health checks, SSL certificate alerts, and heartbeat monitoring for InvoicePlane's scheduled tasks — so you know about downtime before your clients do.

What You'll Set Up

  • HTTP uptime monitor for the InvoicePlane login page
  • REST API endpoint health check (/api/v1/)
  • Database connectivity verification via HTTP keyword check
  • SSL certificate expiry alerts for HTTPS InvoicePlane setups
  • Cron heartbeat for InvoicePlane scheduled tasks (recurring invoices, overdue reminders)

Prerequisites

  • InvoicePlane installed and accessible over HTTP or HTTPS
  • A free Vigilmon account

Step 1: Monitor the InvoicePlane Web UI

The InvoicePlane login page (/index.php/sessions/login) is your primary availability signal. If it's unreachable, the entire application is down.

  1. Log in to vigilmon.online and click Add Monitor.
  2. Set Type to HTTP / HTTPS.
  3. Enter your InvoicePlane login URL:
    https://invoices.yourdomain.com/index.php/sessions/login
    
  4. Set Check interval to 1 minute.
  5. Set Expected HTTP status to 200.
  6. Click Save.

To add a keyword check that confirms the page is rendering correctly (not just returning a 200 from a broken PHP setup):

  1. Open the monitor and expand Keyword Check.
  2. Enter InvoicePlane or Log In as the keyword.
  3. Save.

This catches PHP fatal errors that still return HTTP 200 but render a blank or broken page.


Step 2: Monitor the InvoicePlane REST API

InvoicePlane ships with a REST API at /api/v1/. Monitoring it confirms the API stack is healthy for any integrations or automated invoice creation workflows you may have.

  1. Click Add MonitorHTTP / HTTPS.
  2. Enter:
    https://invoices.yourdomain.com/api/v1/
    
  3. Set Check interval to 5 minutes.
  4. Set Expected HTTP status to 200.
  5. Enable Keyword Check and enter InvoicePlane (the API returns a JSON response including this string).
  6. Click Save.

If your InvoicePlane API requires a key, use the Custom Headers field to add:

Authorization: Bearer YOUR_API_KEY

Step 3: Verify Database Connectivity via HTTP Keyword Check

InvoicePlane relies on MySQL/MariaDB. A PHP/Apache stack can serve the login page even when the database is down — but InvoicePlane will display an error message instead of the login form. A keyword check catches this.

  1. Open the login page monitor created in Step 1.
  2. Expand Keyword Check.
  3. Set the keyword to Log In (the submit button text on the login form).
  4. Enable Keyword must be present mode.
  5. Save.

If the database is unreachable, InvoicePlane renders a database error page. The keyword Log In will be absent, and Vigilmon triggers an alert — even though the HTTP status was 200.


Step 4: SSL Certificate Alerts for HTTPS InvoicePlane Setups

InvoicePlane handles billing data. An expired SSL certificate causes browsers to block access entirely — clients can't view or pay invoices.

  1. Open the InvoicePlane login page monitor.
  2. Enable Monitor SSL certificate under the SSL section.
  3. Set Alert when certificate expires in less than 21 days.
  4. Click Save.

A 21-day alert window gives you time to renew the certificate manually if your Let's Encrypt auto-renewal cron job fails. To verify your current certificate expiry:

echo | openssl s_client -connect invoices.yourdomain.com:443 -servername invoices.yourdomain.com 2>/dev/null \
  | openssl x509 -noout -dates

Step 5: Heartbeat Monitoring for InvoicePlane Cron Tasks

InvoicePlane uses cron jobs for recurring invoice generation and overdue payment reminders. If the cron job stops running, invoices stop being sent — silently. Vigilmon's cron heartbeat monitors detect this.

Set Up the Heartbeat Monitor

  1. In Vigilmon, click Add MonitorCron Heartbeat.
  2. Set Expected ping interval to match your cron frequency (e.g. 1440 minutes for a daily job).
  3. Copy the heartbeat URL (e.g. https://vigilmon.online/heartbeat/abc123).

Wire It Into Your InvoicePlane Cron Job

InvoicePlane's cron script is typically at cron/cron.php. Your server cron entry might look like:

0 8 * * * /usr/bin/php /var/www/invoiceplane/cron/cron.php

Extend it to ping Vigilmon on success:

0 8 * * * /usr/bin/php /var/www/invoiceplane/cron/cron.php && curl -s https://vigilmon.online/heartbeat/abc123

The && ensures Vigilmon is only pinged when the cron script exits successfully. If InvoicePlane's cron task crashes or is removed from the scheduler, Vigilmon alerts after 1440 minutes with no ping.


Step 6: Configure Alert Channels

  1. Go to Alert Channels in Vigilmon and add email, Slack, or a webhook.
  2. Set Consecutive failures before alert to 2 on each monitor — transient network blips shouldn't page you at midnight.
  3. Use Maintenance windows when you're upgrading InvoicePlane to suppress false alerts during downtime.

Summary

| Monitor | Target | What It Catches | |---|---|---| | Web UI | /index.php/sessions/login | Application down, PHP errors | | Keyword check | Log In on login page | Database connection failure | | REST API | /api/v1/ | API stack failure | | SSL certificate | Your InvoicePlane domain | Certificate expiry | | Cron heartbeat | Heartbeat URL | Missed recurring invoice runs |

InvoicePlane puts your billing workflow in your own hands — but self-hosting means you own the uptime too. With Vigilmon monitoring your login page, API, database connectivity signal, SSL certificate, and cron heartbeats, you get the kind of observability that hosted SaaS billing tools provide by default, running entirely on your own infrastructure.

Monitor your app with Vigilmon

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

Start free →