監視・再試行・Git 管理できる
cron ジョブ
スケジュール実行
SteadyCron が予定通りに HTTP エンドポイントを呼び出します — あなたは応答に集中。
0 9 * * 1-5 平日 09:00 · Europe/Berlin
次回実行まで 2時間14分
最近の実行
- 09:00200 OK412 ms
- 08:00503 → retry → 2001.2 s
- 07:00200 OK389 ms
- 06:00200 OK401 ms
監視
すでに実行中の cron ジョブを、どこからでも監視。
0 2 * * * · grace 30m
最近の ping
02:00 の実行が未達
#oncall に通知 · Slack 02:34
どこへでも通知
回復時に自動解決
スクリプトに1行
curl https://ping.steadycron.com/3f9a… コードで自動化
アカウント全体をバージョン管理された 1 つのマニフェストに。
アーキテクチャ
すべてのコンポーネントと、その実行場所
ドイツの Hetzner VM 上で EU ホスティング、Cloudflare の背後で稼働。システム全体が一つのビューに収まり、サブプロセッサは Cloudflare・Paddle・SMTP2GO のみです。
クライアント
Browser
steadycron.com
ランディング & ドキュメント
Browser
app.steadycron.com
ダッシュボード UI
CLI / scripts
api.steadycron.com
REST + マニフェスト
Your cron
ping.steadycron.com
ハートビート ping
Cloudflare
DNS · TLS · WAF · CDN
すべての前段に立つエッジプロキシ・ファイアウォール・レート制限。
Cloudflare Pages
Astro · static
このサイトはエッジから配信 — VM には一切触れません。
Caddy
reverse proxy
VM 上で自動 TLS。app. / api. / ping. を各コンテナへルーティング。
Hetzner VM · ドイツ · Docker Compose
Dashboard
steadycron-dashboard
Next.js。認証付き UI。内部ネットワーク経由で API を呼び出します。
API + Ping
steadycron-api · .NET
REST · ping 取り込み · cron プレビュー · テンプレート変数 · アクティビティ · 管理。
steadycron-scheduler · Quartz.NET clustered
HTTP executor
Polly · SSRF guard
予定された HTTPS 呼び出しを実行 — リトライ・タイムアウト・リダイレクト再検証。
Heartbeat watcher
30s tick
猶予期間に照らして、未達・ハングした実行を検出。
Alert dispatcher
outbox · NOTIFY
アウトボックスを処理し、整形・配信・再送します。
Background workers
×4 services
配信フラッシュ、異常検知、保持データの削除、Paddle 照合。
PostgreSQL 17
app · Quartz · outbox
すべてを 1 インスタンスで。LISTEN/NOTIFY がブローカーを代替 — Redis 不要。
Backups
nightly · encrypted
暗号化した pg_dump をオフサイト保管。四半期ごとに復元訓練。
外部サービスとお客様のシステム
Your endpoints
the jobs we call
スケジュールに従って呼び出される、お客様の HTTPS ハンドラ。
Alert channels
Slack · Discord · …
Telegram・Webhook・メール — 送信のみ。
Paddle
billing · MoR
Merchant of Record — 税務を代行。カード情報はここにありません。
SMTP2GO
確認メール、パスワード再設定、メールアラート。
スケジュール・実行
HTTP ジョブ実行
SteadyCron がスケジュール通りにエンドポイントを呼び出します。あなたはハンドラに集中するだけ。単なる URL 欄ではなく本物のリクエストビルダーで、システム cron では自前で用意する制御をまとめて提供します。
- 任意のメソッド — GET・POST・PUT・PATCH・DELETE — をカスタムヘッダーと JSON ボディで
- テンプレート変数: URL・ヘッダー・ボディに {{var}} を埋め込み、実行時にサーバー側で解決
- env:prod や team:backend などのタグでジョブを整理し、ダッシュボードをタグで分類・絞り込み
- 指数バックオフによる設定可能なリトライ — しかも選んだステータスコードだけで再試行
- ジョブごとのタイムアウトと「実行中はスキップ」で、遅い実行が次に重なりません
- ジョブごとのタイムゾーンと正確な夏時間処理 — 現地時間で設定し、一年中正しく実行
- すべての実行を完全に記録: レスポンスステータス・ボディ・所要時間を監査用に保持
- 今すぐ実行・一時停止・再開を UI から — または YAML / CLI でジョブ全体を同期
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
監視
ハートビート監視
すでにどこかで動かしている cron ジョブを監視します。ジョブが ping を送り、SteadyCron が時刻を見張ります。ping が届かない場合 — プロセスのクラッシュ、サーバー再起動、ジョブのハング — ユーザーより先にあなたが気づけます。
- あらゆる cron・スクリプト・ワーカーのデッドマンスイッチ — どの言語・シェルからでも
- /start のあと /success または /fail を ping し、所要時間を計測して途中で死んだジョブを検出
- グレースピリオドが通常のばらつきを吸収し、本当に遅れたときだけアラート
- 3 種類の障害を検出: 実行漏れ、明示的な失敗、終わらないスタックジョブ
- 各チェックに安定した ping URL — ジョブを自由に改名してもスクリプトはそのまま動作
- メール・Slack・Discord・Telegram・Webhook でアラート — 復旧で自動的に解消
- タグで分類・絞り込み — 障害のある環境がリストの先頭に表示
- 統合はわずか 1 行: ジョブの最後で ping URL に curl するだけ
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 |
コードで
すべてをコードで定義
アカウント全体 — ジョブ、ハートビート、チャネル、タグ、変数 — をバージョン管理された 1 つの YAML マニフェストで宣言。CLI からも CI からも同期できます。
- バージョン管理された 1 つの YAML マニフェストで、ジョブ・ハートビート・チャネル・タグ・変数を定義
- 既存アカウントも数秒で取り込み — steadycron export がマニフェスト化
- validate → plan → apply。Terraform 風の差分をプルリクエストでレビュー
- --prune は削除分を反映、namespace で IaC とクリック操作のジョブを安全に分離
- 安定した ID — 名前変更は名前変更のまま、再作成なし。ハートビート URL も維持
- シークレットは Git に入れない: ${ENV} は CLI、{{template}} はサーバーが解決
- GitHub Action が PR ごとにプランを投稿し、merge で適用
- CLI でできることはすべて REST API でも — スコープ付き・読み取り専用・フルキー対応
FAQ
よくある質問
データはどこに保存されますか?
すべてドイツの Hetzner インフラで稼働し、ドイツ法に準拠しています。コア実行に US サブプロセッサは使用しておらず、GDPR DPA も利用可能です。
自分のサーバーで動いている cron ジョブを監視できますか?
はい。ハートビートチェックを追加し、ジョブが完了したら ping を送信するように設定してください(スクリプトの末尾に curl を1行追加するだけ)。ping がスケジュール通りに届かない場合、SteadyCron がアラートを送ります。任意の言語やシェルから動作します。
SteadyCron は AWS EventBridge や Cloudflare/Vercel Cron の代替になりますか?
スケジュールされた HTTP 処理については、はい。SteadyCron は設定可能なリトライ、タイムアウト、完全なリクエスト/レスポンスログでエンドポイントをスケジュール通りに呼び出します — 特定のクラウドに縛られることなく。監視とアラートも同じ場所で行えます。
Healthchecks.io との違いは何ですか?
Healthchecks はハートビート監視に優れています。SteadyCron は両方を行います — HTTP ジョブの実行とハートビートの監視をひとつのダッシュボードで — EU ホスティングで Infrastructure as Code ワークフロー付きです。
無料プランはありますか?
はい — HTTP ジョブ4つとハートビートチェック12個が永久無料で、クレジットカード不要です。有料プランは月額 €10 から。
ジョブをコードで定義できますか?
はい。YAML マニフェストでジョブを定義し、CLI で steadycron sync jobs.yaml を実行して同期するか、REST API を直接使用できます。クリック操作なし、環境間のドリフトなし。