Uptime monitoring for indie hackers
Logdash watches your side projects from outside your VPS, 5 of them for free and 50 for $15 a month, sends Telegram alerts and gives you a public uptime number you can post while you build in public.
The indie portfolio has a shape. Three projects earn money, four earn nothing yet, two are dead but still online, and most of them share one VPS running Coolify or a pile of Docker containers. You ship on Saturday, move on to the next idea on Sunday, and the thing you shipped keeps running without anyone looking at it.
The usual answer is Uptime Kuma in one more container on the same box. It is free and good software. The catch is that the monitor now shares a fate with everything it watches. When the VPS runs out of disk or the provider has a bad night, Kuma goes quiet together with your apps, and the first alert you get is a reply to your launch tweet.
Logdash runs the checks from outside your stack. The free plan covers 5 services every 5 minutes, enough for the projects that earn. Pro at $15 a month covers 50 services every 15 seconds, which is the whole graveyard plus room for the next ten ideas.
Show your uptime while you build in public
Every published status page is also public JSON, so you can put a live uptime line on your landing page without an API key. The typed client is one install, npm i @logdash/status, and the snippet below runs on your server.
import { fetchStatusPage } from '@logdash/status';
// Public endpoint, no API key. Responses are cached for 60 seconds.
export async function statusLine(): Promise<string> {
const page = await fetchStatusPage('your-status-page-id');
if (page.status === 'unknown') return 'No checks yet';
if (page.status !== 'operational') return 'Some systems are down';
const uptime = page.monitors[0]?.uptime['30d'];
return uptime == null
? 'All systems up'
: `All systems up, ${uptime.toFixed(2)}% over 30 days`;
}For a README or a launch page, every monitor on a published status page also has an uptime badge, an SVG you embed like any image. Three styles, classic, status and card, four periods from 24 hours to 90 days, light or dark. Badges are cached for 60 seconds, so launch day traffic does not matter.
- One service per project Add each project as a service and paste its health URL. The status code and response time of every check are kept, so you see which project got slow after last week’s deploy.
- Connect Telegram, publish the page Add @logdash_uptime_bot to a Telegram chat and send it the passphrase. Then publish a status page with the monitors you want public, which also gives you the JSON the snippet reads.
- Pull the plug Stop one container and wait one interval. Telegram tells you the project is down, with the status code or the timeout, and again when it is back up.
Logdash vs Uptime Kuma on your VPS
| Feature | Logdash | Uptime Kuma |
|---|---|---|
| Survives your VPS going down | Yes, runs outside your stack | No, if it shares the box |
| Cost | Free for 5, $15 a month for 50 | Free, unlimited monitors |
| Monitor types | HTTP checks | HTTP, TCP, ping, DNS, keyword, Docker and more |
| Notification channels | Telegram and webhook | 90+ providers |
| Public status page | Hosted, plus a JSON API | Built in, served from your box |
| Maintenance | None | Container updates and backups |
When Uptime Kuma is the better pick
- You have a second box, on a different provider from your apps. Kuma there gets you outside monitoring with unlimited monitors for the price of the box.
- You need TCP, DNS or Docker container checks. Logdash only makes HTTP requests.
- You want Discord, Slack or email alerts. Kuma has them built in and Logdash does not.
What to do with dead projects
Keep a monitor on a dead project only while its domain still points at something. The day you let the domain lapse, delete the service. It frees the slot for the next idea, and a monitor that has been red for a month teaches you to ignore red.
When a live project does break, the same service also takes logs and metrics from the app through eight SDKs, kept for 24 hours on the free plan, so the 2am alert sits next to the log line that explains it.