tutorial

DokuWiki Monitoring with Vigilmon: Uptime, Search Health & Indexer Heartbeats

Monitor your self-hosted DokuWiki installation with Vigilmon — track start page availability, index page health, search functionality, SSL certificates, and scheduled indexer/cache-cleanup heartbeats.

Your DokuWiki's full-text search stopped returning results last month. Engineers kept creating new pages with documentation they thought was searchable — but the indexer cron had been silently failing since a server migration. Three sprints of new documentation was invisible to search. Nobody noticed until someone manually browsed for a page they knew existed.

DokuWiki is one of the most widely deployed open-source wikis in the world — a PHP flat-file system that requires no database, stores content in plain text files, and handles technical documentation for universities, enterprises, open-source projects, and engineering teams worldwide. Its simplicity is a strength, but it means there's no database health check to query. Vigilmon gives you external HTTP monitors, keyword checks, SSL alerts, and heartbeat monitoring that cover every failure mode DokuWiki exposes — including the silent ones.

This tutorial walks you through complete DokuWiki monitoring with Vigilmon.

What You'll Build

  • An HTTP monitor on the DokuWiki start page (web UI availability)
  • An HTTP monitor on /doku.php?do=index (page index availability)
  • A keyword monitor on the search page to confirm search functionality is intact
  • SSL certificate expiry alerts for HTTPS DokuWiki deployments
  • A heartbeat monitor for the DokuWiki indexer and cache cleanup (cron or scheduler plugin)

Prerequisites

  • A running DokuWiki installation (any recent release)
  • A free account at vigilmon.online

Step 1: Monitor the DokuWiki Start Page

The DokuWiki start page is the entry point for all documentation users. It loads from the flat-file store (no database) — if this returns non-200, the entire wiki is unreachable.

Test it:

curl -o /dev/null -s -w "%{http_code}" https://your-wiki.example.com/doku.php

Set up the Vigilmon monitor:

  1. Log in to Vigilmon and click New Monitor → HTTP.
  2. Set URL to https://your-wiki.example.com/doku.php (or https://your-wiki.example.com/ if you have URL rewriting configured).
  3. Set Check interval to 60 seconds.
  4. Set Expected status code to 200.
  5. Under Advanced → Keyword check, add:
    • Keyword present: DokuWiki (appears in the default page title and meta tags)
  6. Save the monitor.

The keyword check ensures you're receiving a real DokuWiki page. If Nginx returns an error page with a 200 status (a misconfiguration that happens during PHP-FPM restarts), the keyword check catches it.


Step 2: Monitor /doku.php?do=index

The ?do=index action renders DokuWiki's namespace/page index — a tree of all namespaces and pages. This endpoint exercises file system traversal (reading the data/pages/ directory) and PHP template rendering. A failure here — while the start page loads — signals a file permission problem, a disk-full condition on the data directory, or a PHP extension issue.

Test it:

curl -o /dev/null -s -w "%{http_code}" "https://your-wiki.example.com/doku.php?do=index"

Set up the Vigilmon monitor:

  1. Click New Monitor → HTTP in Vigilmon.
  2. Set URL to https://your-wiki.example.com/doku.php?do=index.
  3. Set Check interval to 5 minutes.
  4. Set Expected status code to 200.
  5. Under Advanced → Keyword check, add:
    • Keyword present: index (appears in the page title for the index view)
    • Keyword absent: Fatal error, Warning:, Permission denied
  6. Save the monitor.

Step 3: Keyword Monitor for Search Functionality

DokuWiki's full-text search (?do=search) depends on the search index stored in data/index/. If the indexer has not run (or has been stopped), search returns no results for newly created pages — or may return no results at all. A keyword monitor that checks for the search interface confirms the search action is operational.

  1. Click New Monitor → HTTP in Vigilmon.
  2. Set URL to https://your-wiki.example.com/doku.php?do=search&id=the (searching for a common word that should appear in your wiki).
  3. Set Check interval to 10 minutes.
  4. Set Expected status code to 200.
  5. Under Advanced → Keyword check, configure:
    • Keyword present: Search (appears in the search results page title and form)
    • Keyword absent: Fatal error, An error occurred, no results
  6. Save the monitor.

Adjust the search term (id=the) to a word you know appears in your DokuWiki content — this validates both search rendering and index health.


Step 4: SSL Certificate Monitoring

DokuWiki is often used for internal and external technical documentation that may include credentials, architecture diagrams, or confidential project notes. A lapsed SSL certificate instantly breaks access for all users and triggers browser security warnings. Self-managed Let's Encrypt certificates auto-renew, but the renewal process can fail silently.

Configure SSL alerting:

  1. Open the HTTP monitor from Step 1 (start page).
  2. Click Edit → Advanced → SSL Certificate.
  3. Set Alert when certificate expires in less than: 14 days.
  4. Save.

Apply the same SSL alert threshold to the index monitor from Step 2. Monitoring two paths means a temporary outage on one path during the certificate check won't cause you to miss an expiry alert.


Step 5: Heartbeat Monitor for the Indexer and Cache Cleanup

DokuWiki's full-text search index is maintained by the indexer, which runs either via the DokuWiki Scheduler Plugin or a system cron entry. The indexer processes newly created and modified pages, making them searchable. Cache cleanup removes stale rendered page caches. Both are background tasks with no user-visible failure mode — until search stops working.

The two common setups:

Via system cron:

*/30 * * * * php /path/to/dokuwiki/bin/indexer.php -q >> /dev/null 2>&1

Via the DokuWiki Scheduler Plugin: The plugin runs indexer tasks on a schedule configured through the DokuWiki admin interface.

Set up a Vigilmon Heartbeat monitor:

  1. Click New Monitor → Heartbeat in Vigilmon.
  2. Give it a name like DokuWiki Indexer.
  3. Set Expected interval to 30 minutes (matching your indexer schedule).
  4. Copy the generated heartbeat URL: https://vigilmon.online/ping/<your-unique-token>.
  5. Save the monitor.

Wire the heartbeat into your indexer cron:

Replace your existing indexer cron with a two-command chain:

*/30 * * * * php /path/to/dokuwiki/bin/indexer.php -q && curl -fsS -m 10 https://vigilmon.online/ping/<your-unique-token> > /dev/null 2>&1

If the indexer fails (PHP error, file permission problem, disk full), no ping is sent, and Vigilmon fires an alert after the configured grace period.

For the DokuWiki Scheduler Plugin: The scheduler doesn't natively support post-run webhooks, so add a separate heartbeat cron that checks index freshness:

*/30 * * * * curl -fsS -m 10 https://vigilmon.online/ping/<your-unique-token> > /dev/null 2>&1

This confirms cron scheduling is working. If you need to verify the indexer run specifically, the PHP cli approach above is more precise.

Cache cleanup heartbeat: If you run a separate cache cleanup (via php bin/wantedpages.php or a custom script), add a second Vigilmon Heartbeat monitor with its own token and wire it similarly.


Step 6: Alert Channels

Go to Notifications → New Channel in Vigilmon and configure:

  • Email — direct alerts to your documentation or IT team
  • Webhook — post to Slack or Discord for team-wide visibility

Example DokuWiki downtime alert:

🔴 DOWN: DokuWiki Start Page (your-wiki.example.com)
Status: 502 Bad Gateway
Region: EU-Central
Triggered: 2026-06-18 09:14 UTC

Example heartbeat alert:

🔴 MISSING HEARTBEAT: DokuWiki Indexer
Last ping received: 3 hours 22 minutes ago
Expected every: 30 minutes

Step 7: Status Page

Go to Status Pages → New Status Page in Vigilmon. Add all DokuWiki monitors and publish the page:

<a href="https://vigilmon.online/status/<your-slug>">
  <img src="https://vigilmon.online/badge/<monitor-slug>" alt="DokuWiki Status" />
</a>

You can embed this badge in your DokuWiki sidebar or footer to give readers visibility into the wiki's health.


What You've Built

| Failure scenario | How Vigilmon catches it | |---|---| | Web server (Nginx/Apache) down | HTTP monitor on start page detects non-200 | | PHP-FPM crash | Start page and index monitors both fire | | Data directory permissions broken | Index monitor (?do=index) detects file error in response | | PHP fatal error (extension missing) | Keyword monitor catches Fatal error in response body | | SSL certificate expiry | SSL alert fires 14 days before expiry | | Search index not updating | Heartbeat monitor fires when indexer pings stop | | Cache cleanup stopped | Separate heartbeat monitor (if configured) fires | | Disk full on data directory | Index and search monitors detect PHP warnings in output |


DokuWiki's flat-file simplicity means fewer moving parts — but also fewer built-in health signals. Vigilmon provides the external monitoring layer that DokuWiki doesn't ship with, catching outages and silent scheduler failures from outside your network before your documentation users hit an error page.

Start monitoring your DokuWiki instance today — register free at vigilmon.online.

Monitor your app with Vigilmon

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

Start free →