---
title: "Deploy Cron Sentinel: Healthchecks [Oct '26]"
description: "Pinned Healthchecks plus private Postgres. No required variables."
category: "Observability"
url: https://railway.com/deploy/cron-sentinel-healthchecks-oct-26
---

# Deploy Cron Sentinel: Healthchecks [Oct '26]

Pinned Healthchecks plus private Postgres. No required variables.

**[Deploy Cron Sentinel: Healthchecks [Oct '26] on Railway](https://railway.com/template/cron-sentinel-healthchecks-oct-26)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/cron-sentinel-healthchecks-oct-26/manifest.json

- **Creator:** NickTheCoolst
- **Category:** Observability

## Template content

### Postgres https://devicons.railway.app/i/postgresql.svg

- **Image:** ghcr.io/railwayapp-templates/postgres-ssl:18

### healthchecks

- **Image:** healthchecks/healthchecks:v4.4
- **Start command:** `python -c "import base64,runpy,pathlib; pathlib.Path('/tmp/hc-run.py').write_bytes(base64.b64decode('aW1wb3J0IGJhc2U2NAppbXBvcnQgb3MKaW1wb3J0IHBhdGhsaWIKaW1wb3J0IHN1YnByb2Nlc3MKaW1wb3J0IHN5cwppbXBvcnQgdGltZQoKb3MuY2hkaXIoIi9vcHQvaGVhbHRoY2hlY2tzIikKCmZvciBfIGluIHJhbmdlKDMwKToKICAgIGlmIHN1YnByb2Nlc3MuY2FsbChbc3lzLmV4ZWN1dGFibGUsICJtYW5hZ2UucHkiLCAibWlncmF0ZSIsICItLW5vaW5wdXQiXSkgPT0gMDoKICAgICAgICBicmVhawogICAgdGltZS5zbGVlcCgyKQplbHNlOgogICAgc3lzLmV4aXQoImRhdGFiYXNlIGRpZCBub3QgYmVjb21lIHJlYWR5IikKCmJvb3QgPSByJycnCmltcG9ydCBvcwpmcm9tIGRqYW5nby5jb250cmliLmF1dGgubW9kZWxzIGltcG9ydCBVc2VyCmZyb20gaGMuYWNjb3VudHMubW9kZWxzIGltcG9ydCBQcm9maWxlLCBQcm9qZWN0CmZyb20gaGMuYXBpLm1vZGVscyBpbXBvcnQgQ2hlY2sKCmVtYWlsID0gb3MuZW52aXJvblsiQURNSU5fRU1BSUwiXS5zdHJpcCgpCnBhc3N3b3JkID0gb3MuZW52aXJvblsiQURNSU5fUEFTU1dPUkQiXQp0eiA9IG9zLmVudmlyb24uZ2V0KCJUWiIpIG9yICJVVEMiCnVzZXIgPSBVc2VyLm9iamVjdHMuZmlsdGVyKGVtYWlsX19pZXhhY3Q9ZW1haWwpLmZpcnN0KCkKaWYgdXNlciBpcyBOb25lOgogICAgdXNlciA9IFVzZXIodXNlcm5hbWU9ZW1haWxbOjE1MF0sIGVtYWlsPWVtYWlsLCBpc19zdGFmZj1UcnVlLCBpc19zdXBlcnVzZXI9VHJ1ZSkKICAgIHVzZXIuc2V0X3Bhc3N3b3JkKHBhc3N3b3JkKQogICAgdXNlci5zYXZlKCkKICAgIHByb2plY3QgPSBQcm9qZWN0KG93bmVyPXVzZXIsIG5hbWU9IkNyb24gam9icyIsIGJhZGdlX2tleT11c2VyLnVzZXJuYW1lKQogICAgcHJvamVjdC5zYXZlKCkKICAgIENoZWNrLm9iamVjdHMuY3JlYXRlKHByb2plY3Q9cHJvamVjdCwgbmFtZT0iTXkgRmlyc3QgQ2hlY2siLCBzbHVnPSJteS1maXJzdC1jaGVjayIpCnByb2ZpbGUgPSBQcm9maWxlLm9iamVjdHMuZm9yX3VzZXIodXNlcikKaWYgcHJvZmlsZS50eiAhPSB0ejoKICAgIHByb2ZpbGUudHogPSB0egogICAgcHJvZmlsZS5zYXZlKHVwZGF0ZV9maWVsZHM9WyJ0eiJdKQonJycKcGF0aGxpYi5QYXRoKCIvdG1wL2hjLWJvb3QucHkiKS53cml0ZV90ZXh0KGJvb3QpCnJjID0gc3VicHJvY2Vzcy5jYWxsKAogICAgWwogICAgICAgIHN5cy5leGVjdXRhYmxlLAogICAgICAgICJtYW5hZ2UucHkiLAogICAgICAgICJzaGVsbCIsCiAgICAgICAgIi1jIiwKICAgICAgICAiZXhlYyhvcGVuKCcvdG1wL2hjLWJvb3QucHknKS5yZWFkKCkpIiwKICAgIF0KKQppZiByYyAhPSAwOgogICAgc3lzLmV4aXQocmMpCgpwb3J0ID0gb3MuZW52aXJvbi5nZXQoIlBPUlQiKSBvciAiODAwMCIKcHJpbnQoZiJyYWlsd2F5LXBvcnQ9e3BvcnR9IiwgZmx1c2g9VHJ1ZSkKYXJncyA9IFsKICAgICJ1d3NnaSIsCiAgICAiLS1pbmkiLAogICAgIi9vcHQvaGVhbHRoY2hlY2tzL2RvY2tlci91d3NnaS5pbmkiLAogICAgIi0tbG9nLWZvcm1hdCIsCiAgICAiJShhZGRyKSAlKG1ldGhvZCkgJSh1cmkpIC0+ICUoc3RhdHVzKSIsCl0KaWYgcG9ydCAhPSAiODAwMCI6CiAgICBhcmdzLmV4dGVuZChbIi0taHR0cC1zb2NrZXQiLCBmIjp7cG9ydH0iXSkKb3MuZXhlY3ZwKCJ1d3NnaSIsIGFyZ3MpCg==')); runpy.run_path('/tmp/hc-run.py')"`
- **Health check:** /api/v3/status/
- **Public domain:** Yes

## Documentation

# Deploy and Host Cron Sentinel on Railway

Cron Sentinel is a self-hosted monitor for cron jobs and backups. A job pings a URL when it finishes. If the ping is late or fails, you get an alert.

It runs the [Healthchecks](https://github.com/healthchecks/healthchecks) image, pinned to v4.4, with PostgreSQL. This template is not affiliated with the Healthchecks project.

## About Hosting Cron Sentinel

- Healthchecks listens on the public Railway domain. The database has no public port.
- PostgreSQL 18 keeps check history on a volume. `PGDATA` is a subdirectory of that volume, so the first boot can initialize the database.
- Signup is closed. The first boot creates one admin. The email is `admin@cron-sentinel.local` unless you change `ADMIN_EMAIL`. The password is the generated `ADMIN_PASSWORD` on the Healthchecks service.
- `SECRET_KEY` and `ADMIN_PASSWORD` are generated for each new deploy.
- Apprise is on, so Telegram, Discord, Slack, ntfy, and webhooks work without SMTP.

## Why Deploy Cron Sentinel

Use this when you want cron monitoring without filling in required fields, without a public database, and without open registration. Pinning v4.4 keeps the start command and health check on a known image.

## Common Use Cases

- Nightly backups, billing jobs, and other scheduled tasks
- A ping URL at the end of a script, plus `/fail` when the script errors
- Alerts to Telegram, Discord, Slack, ntfy, or a webhook

Do not use it as a website uptime monitor. It watches schedules, not homepages.

## Dependencies for Cron Sentinel

No required variables. Optional pieces:

- SMTP (`EMAIL_HOST`, `EMAIL_HOST_USER`, `EMAIL_HOST_PASSWORD`, `EMAIL_PORT`) if you want email alerts. Many hosts block port 25. Port 587 is the usual choice.
- A Telegram bot token (`TELEGRAM_TOKEN` and `TELEGRAM_BOT_NAME`) if you want the built-in Telegram integration. Other chat apps can use an Apprise URL from the dashboard instead.

### Deployment Dependencies

After deploy:

1. Open the Healthchecks URL.
2. Sign in with `ADMIN_EMAIL` and `ADMIN_PASSWORD` from the Healthchecks service variables.
3. Open **My First Check** and copy its ping URL.
4. Call that URL at the end of the job:

```bash
curl -fsS -m 10 --retry 5 -o /dev/null https://YOUR-DOMAIN/ping/YOUR-CHECK-UUID
```

Use `/start` before the job and `/fail` on the error path when you also want runtime and failure pings.

Changing `SECRET_KEY` later signs everyone out. The database stays private on purpose.

Docs for checks and integrations: [https://healthchecks.io/docs/](https://healthchecks.io/docs/)


## Similar templates

- [Rootprint](https://railway.com/deploy/rootprint-1) — Open-source logs and traces with full-text search on object-storage.
- [VPS Fleet Watch Hub with Beszel](https://railway.com/deploy/vps-fleet-watch-hub-with-beszel) — A persistent Beszel hub for external VPS agents and fleet alerts.
- [Pyroscope profiling](https://railway.com/deploy/pyroscope-profiling) — Protected continuous profiling with durable Pyroscope storage.

Open this page in a browser: https://railway.com/deploy/cron-sentinel-healthchecks-oct-26
