Cronjobs, die Sie
überwachen, wiederholen und in Git committen
Planen & ausführen
Wir rufen Ihren HTTP-Endpunkt planmäßig auf — Sie kümmern sich um die Antwort.
0 9 * * 1-5 Werktags 09:00 · Europe/Berlin
nächster Lauf in 2 Std. 14 Min.
letzte Läufe
- 09:00200 OK412 ms
- 08:00503 → retry → 2001.2 s
- 07:00200 OK389 ms
- 06:00200 OK401 ms
Überwachen
Überwachen Sie die Cronjobs, die Sie bereits betreiben — überall.
0 2 * * * · grace 30m
letzte Pings
02:00-Lauf verpasst
#oncall alarmiert · Slack 02:34
Überall alarmieren
löst sich bei Erholung automatisch
eine Zeile in Ihrem Skript
curl https://ping.steadycron.com/3f9a… Als Code automatisieren
Ihr gesamtes Konto in einem versionierten Manifest.
Cronjobs an einem Ort planen, ausführen und überwachen — Infrastructure-as-Code-first, EU-gehostet.
Kostenloser Tarif — keine Kreditkarte erforderlich.
Architektur
Jede Komponente — und wo sie läuft
EU-gehostet auf einer Hetzner-VM in Deutschland, hinter Cloudflare. Das gesamte System passt in eine Ansicht — und die einzigen Unterauftragsverarbeiter sind Cloudflare, Paddle und SMTP2GO.
Clients
Browser
steadycron.com
Landingpage & Doku
Browser
app.steadycron.com
Dashboard-Oberfläche
CLI / scripts
api.steadycron.com
REST + Manifeste
Your cron
ping.steadycron.com
Heartbeat-Pings
Cloudflare
DNS · TLS · WAF · CDN
Edge-Proxy, Firewall und Rate-Limiting vor allem anderen.
Cloudflare Pages
Astro · static
Diese Landingpage, am Edge ausgeliefert — erreicht die VM nie.
Caddy
reverse proxy
Auf der VM: automatisches TLS, leitet app. / api. / ping. an die Container.
Hetzner-VM · Deutschland · Docker Compose
Dashboard
steadycron-dashboard
Next.js. Authentifizierte UI; ruft die API über das interne Netz auf.
API + Ping
steadycron-api · .NET
REST · Ping-Ingest · Cron-Vorschau · Template-Variablen · Aktivität · Admin.
steadycron-scheduler · Quartz.NET clustered
HTTP executor
Polly · SSRF guard
Führt die geplanten HTTPS-Aufrufe aus — Retries, Timeouts, Redirect-Prüfung.
Heartbeat watcher
30s tick
Erkennt verpasste und hängende Läufe anhand der Kulanzzeit.
Alert dispatcher
outbox · NOTIFY
Leert die Outbox; formt, stellt zu und wiederholt Alerts.
Background workers
×4 services
Delivery-Flush, Anomalie-Erkennung, Retention-Prune, Paddle-Abgleich.
PostgreSQL 17
app · Quartz · outbox
Eine Instanz für alles. LISTEN/NOTIFY ersetzt einen Broker — kein Redis.
Backups
nightly · encrypted
Verschlüsselter pg_dump, extern gespeichert; vierteljährliche Restore-Tests.
Externe Dienste & Ihre Systeme
Your endpoints
the jobs we call
Ihre HTTPS-Handler, planmäßig aufgerufen.
Alert channels
Slack · Discord · …
Telegram, Webhook, E-Mail — nur ausgehend.
Paddle
billing · MoR
Merchant of Record — übernimmt die Steuer. Keine Kartendaten hier.
SMTP2GO
Verifizierung, Passwort-Reset und E-Mail-Alerts.
Planen · Ausführen
HTTP-Job-Ausführung
Wir rufen Ihren Endpunkt planmäßig auf; Sie kümmern sich um den Handler. Ein echter Request-Builder — keine bloße URL-Zeile — mit den Kontrollen, die Sie sich um System-Cron sonst selbst bauen müssten.
- Jede Methode — GET, POST, PUT, PATCH, DELETE — mit eigenen Headern und JSON-Body
- Template-Variablen: {{var}} in URL, Header oder Body — serverseitig zur Laufzeit aufgelöst
- Jobs mit Tags wie env:prod oder team:backend ordnen, dann das Dashboard danach gruppieren und filtern
- Konfigurierbare Wiederholungen mit exponentiellem Backoff — und nur bei den Statuscodes Ihrer Wahl
- Timeout pro Job plus „überspringen, wenn noch läuft“ — ein langsamer Lauf überlappt nie den nächsten
- Zeitzone pro Job mit korrekter Sommerzeit — in Ortszeit planen, ganzjährig korrekt ausführen
- Jeder Lauf vollständig protokolliert: Antwortstatus, Body und Dauer, revisionssicher aufbewahrt
- Jetzt ausführen, pausieren oder fortsetzen — oder den ganzen Job per YAML oder CLI synchronisieren
Request
Configure the HTTP request sent on each execution. Use
{{variable}}
for template substitution.
Headers
{
"account_id": "{{accountId}}",
"amount_cents": 4900,
"send_email": true
} ✓ Valid JSON
Schedule
When it runs — cron or interval, with DST-correct timezones and a live next-runs preview.
Cron expression
Weekdays at 09:00
Timezone
Next runs
Überwachen
Heartbeat-Monitoring
Überwachen Sie die Cronjobs, die Sie ohnehin schon betreiben — egal wo. Ihr Job pingt uns; wir behalten die Uhr im Blick. Bleibt der Ping aus — Prozess abgestürzt, Server neu gestartet, Job hängt — erfahren Sie es, bevor Ihre Nutzer es tun.
- Ein Totmannschalter für jeden Cron, jedes Skript, jeden Worker — in jeder Sprache oder Shell
- /start, dann /success oder /fail pingen — misst die Dauer und erkennt mitten im Lauf gestorbene Jobs
- Kulanzzeiten federn normale Schwankungen ab — Alert nur, wenn ein Lauf wirklich zu spät ist
- Erkennt drei Fehlerarten: verpasste Läufe, echte Fehler und hängende Jobs, die nie enden
- Jeder Check hat eine stabile Ping-URL — Job frei umbenennen, Ihre Skripte laufen weiter
- Alert per E-Mail, Slack, Discord, Telegram oder Webhook — löst sich bei Erholung automatisch auf
- Nach Tag gruppieren und filtern — eine fehlerhafte Umgebung steht ganz oben
- Eine Zeile genügt: am Ende des Jobs einfach die Ping-URL mit curl aufrufen
Jobs
| weekly-digest-email | HTTP | 0 9 * * 1 | in 2 days | 3 days ago | ||
| nightly-db-backup | Heartbeat | 0 2 * * * | in 19 h | 5 h ago | ||
| stripe-reconciliation | HTTP | 0 */4 * * * | in 38 min | 3 h ago | ||
| cache-warmup | HTTP | */15 * * * * | in 11 min | now | ||
| search-index-sync | Heartbeat | */30 * * * * | in 6 min | 24 min ago |
| seed-test-data | HTTP | 0 4 * * * | in 14 h | 10 h ago | ||
| preview-env-cleanup | Heartbeat | 0 */6 * * * | in 2 h | 4 h ago | ||
| trial-expiry-sweep | HTTP | 0 6 * * * | — | yesterday |
Als Code
Alles als Code definieren
Deklarieren Sie Ihr gesamtes Konto — Jobs, Heartbeats, Kanäle, Tags und Variablen — in einem versionierten YAML-Manifest. Abgleich per CLI oder direkt aus der CI.
- Ein versioniertes YAML-Manifest definiert Jobs, Heartbeats, Kanäle, Tags und Variablen
- Bestehendes Konto in Sekunden übernehmen — steadycron export erzeugt daraus ein Manifest
- validate → plan → apply, mit Terraform-artigen Diffs, die Sie im Pull Request prüfen
- --prune löscht Entferntes; Namespaces trennen IaC- und Klick-Jobs sauber voneinander
- Stabile IDs: Umbenennen bleibt Umbenennen — keine Neuanlage, Heartbeat-URLs bleiben erhalten
- Secrets landen nie in Git: ${ENV} löst die CLI auf, {{template}} der Server
- GitHub Action postet den Plan bei jedem PR und wendet ihn beim Merge an
- Alles, was die CLI kann, ist auch eine REST-API — mit scoped, schreibgeschützten oder vollen Keys
FAQ
Fragen, beantwortet
Wo werden meine Daten gespeichert?
Alles läuft auf Hetzner-Infrastruktur in Deutschland, unter deutschem Recht. Die Kernausführung nutzt keine US-Subdienstleister, und ein DSGVO-AVV ist verfügbar.
Kann ich Cronjobs überwachen, die auf meinen eigenen Servern laufen?
Ja. Legen Sie einen Heartbeat-Check an und lassen Sie Ihren Job beim Abschluss einen Ping senden (ein einziges curl am Ende Ihres Skripts). Kommt der Ping nicht planmäßig an, alarmiert Sie SteadyCron. Das funktioniert aus jeder Sprache oder Shell.
Ersetzt SteadyCron AWS EventBridge oder Cloudflare/Vercel Cron?
Für geplante HTTP-Aufgaben ja. SteadyCron ruft Ihren Endpunkt planmäßig auf — mit konfigurierbaren Wiederholungen, Timeouts und vollständigen Request-/Response-Logs, ohne Sie an eine Cloud zu binden. Monitoring und Alerting gibt es am selben Ort.
Worin unterscheidet es sich von Healthchecks.io?
Healthchecks ist hervorragend im Heartbeat-Monitoring. SteadyCron macht beide Hälften — es führt Ihre HTTP-Jobs aus und überwacht Heartbeats aus einem Dashboard — und ist EU-gehostet mit eingebauten Infrastructure-as-Code-Workflows.
Gibt es einen kostenlosen Tarif?
Ja — 4 HTTP-Jobs und 12 Heartbeat-Checks, dauerhaft kostenlos, ohne Kreditkarte. Bezahlte Tarife beginnen bei 10 €/Monat.
Kann ich meine Jobs als Code definieren?
Ja. Definieren Sie Jobs in einem YAML-Manifest und gleichen Sie sie per steadycron sync jobs.yaml über die CLI ab, oder nutzen Sie direkt die REST-API. Kein Click-Ops, keine Abweichung zwischen Umgebungen.