Know the second your site, server, or certificate goes down.
checkmyping is a simple, self-hostable uptime + certificate monitor with alerts. Add a website or server and it tells you whether it's up and how fast it responds.
🎥 Built in public on YouTube — LondonIAC. Each episode ships a new feature, and this repo is the code from that series. Star it to follow along.
- Part 1 — core monitor + dashboard (running locally)
- Part 2 — deployed live on Render (auto-deploy from GitHub)
- Part 3 — Supabase (Postgres) + user logins
- Part 4 — scheduled checks + uptime history
- Part 5 — Stripe plans (1 free / 10 / 100 targets)
- Part 6 — email alerts (Resend)
- Part 7 — TLS certificate-expiry monitoring
- Part 8 — Telegram alerts with reply-back
- Part 9 — WhatsApp alerts
Create the virtual environment:
python -m venv .venvActivate it — pick your shell:
# PowerShell
.venv\Scripts\Activate.ps1# Git Bash
source .venv/Scripts/activateThen install and run (same in both shells):
pip install -r requirements.txt
uvicorn app.main:app --reload
Then open http://127.0.0.1:8000.
Not fussed about activating? This one-liner works in any shell:
.venv\Scripts\python -m uvicorn app.main:app --reload(PowerShell) /.venv/Scripts/python.exe -m uvicorn app.main:app --reload(Git Bash).
- Enter a full URL (
https://example.com) for an HTTP check. - Enter
host:port(example.com:443) for a TCP check.
No raw-socket ICMP ping (that needs root and won't run on managed hosts). Instead:
- HTTP check — GET the URL; UP if the status is under 400, with real response time.
- TCP check — open a socket to
host:port; UP if it connects, with real latency.
This is exactly how commercial uptime monitors work.
Python · FastAPI · Jinja2 · SQLite (→ Supabase later) · Render · Stripe · Telegram
MIT — do what you like with the code. The hosted service is the paid part.