Host Healthchecks without installing anything

Monitoring turned inside out: the job reports that it succeeded, and it is the silence that raises the alarm.

Starting at €8.99/month

Introduction

Healthchecks installed, updated and backed up by us, on a machine in France. It watches your scheduled jobs and alerts you when one of them has not run. The indispensable companion to backups: you will know if they stop. You install nothing and configure no server: the application is online a few minutes after you order, under your own name.

The plan that suits it is App Confort at €8.99/month incl. VAT — 4 GB of memory. Receiving a signal is the lightest operation in the catalogue: one HTTP request, one row written. What takes up room is what is kept around it — Healthchecks stores the last hundred signals of every job together with whatever output the script sent, up to ten kilobytes per call, and the loop that decides whether to alert wakes up constantly to compare each deadline with the current time. With a few dozen jobs and their logs, the database grows quietly, and the headroom saves you from housekeeping.

What is being replaced here is Cronitor, Dead Man's Snitch, or the hosted edition of this same software. Migrating is not about moving data but about changing an address: each job gets a ping URL, and you replace the old one in your scripts and crontabs. The API creates jobs in bulk if you have sixty of them, and reads them back so you can check. A script reports success with one line of curl; if it may also call /start beforehand and /fail on error, you additionally get the run time and the reason for failure. And when the monitored machine cannot make outbound HTTP calls, an email sent to the job's address works as a signal.

8.99€/month
Recommended plan incl. VAT
4GB
Memory of the plan
5min
Time to live
100%
Hosted in France

What managed hosting changes

It is the missing news that alerts you

Every job has a period and a grace time. As long as the signal arrives inside the window, nothing happens; once the grace time passes, the alert goes out. This is the only arrangement that catches a stopped backup, a switched-off server or a deleted crontab — three failures conventional monitoring never sees.

The script output, kept with the signal

A call to /start at the beginning measures the run time, a call to /fail announces failure, and the command's exit code can be passed straight through. Standard output sent along with the signal is retained: when a backup fails, the error message is already in the interface.

Schedules expressed the way cron does

A job can declare itself every six hours, but also "Monday to Friday at 03:15", with its own timezone. Healthchecks then computes the real next deadline instead of counting an interval, which avoids false alarms at weekends and when the clocks change.

Alerts through the channel you already read

Email, webhook, Slack, Discord, Telegram, Matrix, Mattermost, ntfy, Gotify, Pushover, PagerDuty, Opsgenie. Every job also carries a status badge as an image, which can be shown publicly on a status page without giving access to anything else.

Why hand it over rather than install it

The backup that stopped in March

The classic case: a full disk, a changed password, and the script quietly gives up. You find out on the day you need to restore. With a signal at the end of the script, the alert arrives the next morning instead of six months later.

The billing run on the first of the month

A job that runs once a month is the one nobody remembers to check. Declared with its cron expression, it is watched the other eleven months in exactly the same way, without any thought.

A provider looking after forty jobs

One project per client, separate API keys, and a public status page per project thanks to the badges. The client can see that their backup ran last night without gaining access to anyone else's.

A sensor that must report every five minutes

A temperature probe, a meter reading, a box in a plant room: as long as it sends its signal, it is alive. When it goes quiet, the device itself is the problem, and you know straight away.

Certificate renewal

Automatic renewal works for two years, then quietly breaks. Watching the job rather than the expiry date warns you three weeks before the browser shows a warning.

Hosted in France

In our own infrastructure in Nouvelle-Aquitaine, which we operate ourselves. Useful monitoring is monitoring that does not live at the same provider as the thing it watches, and the person on the phone speaks your language.

Frequently asked questions

There is no history to transfer, and that is just as well: what matters is the list of jobs and their schedules. You recreate them here — by hand if there are ten, through the API if there are sixty — then replace the old ping URL with the new one in your scripts and crontabs. Let both monitors run in parallel for a week: it is the best way to confirm that no job was forgotten.

One line at the end of the script is enough: a curl call to the job's URL, with a few retries in case the network is unstable. To go further, call /start before the work and /fail if the command fails, which gives you duration and cause. If the monitored machine is not allowed to make outbound HTTP calls, every job also has an email address: a message sent there counts as a signal, which helps on locked-down equipment.

Healthchecks tests nothing itself: it waits to be told. To know whether a website answers or a certificate is still valid, you need an active monitor alongside, not this one. When self-hosting, each alert channel is configured with its own credentials — a Telegram token, a Slack webhook address — and email delivery depends on the relay you provide. SMS and WhatsApp channels go through a paid third-party account, which remains your cost.

App Confort, at €8.99/month incl. VAT. It provides 4 GB of memory where the application asks for 1 GB at minimum: the headroom serves the system, not the decor. You can change plan later without reinstalling.

Nothing to install: you add a call to the job's URL in the scripts you want watched. That is one line per script, and it needs no new dependency.