Skip to content

Releases: cryguy/uptime

v0.2.0

Choose a tag to compare

@cryguy cryguy released this 05 Jun 08:41
v0.2.0
ca4fa53

This release makes monitor groups a first-class part of the dashboard and alerts, adds two operator conveniences (webhook test-fire, monitor duplication), and fixes a reliability problem unique to self-hosted monitors: false alerts during the monitor's own internet outage.

What's new

  • No more alert storms during your own internet outage. A failed check can't tell "the target is down" from "my uplink is down", so a home-hosted monitor losing internet would mark every target down and alert-storm. Checks now classify failures as network- vs application-class; a network failure consults an uplink canary (parallel TCP handshakes to anycast references) and, if nothing answers, freezes the monitor for that tick (no result, no counter change, no incident, no alert) instead of marking it down. Fails open: an unproven canary can never silence a real outage.
  • Duplicate a monitor. A "Duplicate" action on the monitor detail page clones a monitor's config and webhook bindings into a new, paused monitor and opens its edit page. The config is decrypted then re-encrypted so the copy owns independent ciphertext under the current key; state, history, and incidents are not copied, and the clone starts disabled so it can't double-alert before you retarget it.
  • Webhook test-fire button. A per-webhook "Test" action POSTs a clearly-labeled sample payload to the receiver and reports success/failure inline. Delivery is synchronous and bypasses the alert queue, so a failed test never spawns retries or pollutes delivery stats.
  • Monitor group in webhook payloads. The monitor's group is threaded into every webhook format (a generic field, a Slack / Google Chat context line, a Discord field), plus a {{monitor.group}} placeholder for custom templates. Ungrouped monitors emit no group label.
  • Group column on the dashboard. A dedicated Group column (after Type) renders each monitor's group as a chip by default, not only when grouping by tag.

Upgrading

Drop-in: replace the binary (or git pull + rebuild) and restart. No config changes, and schema migrations run automatically and idempotently on boot.

Prebuilt binaries

Each binary below is fully self-contained: it bundles the Bun runtime, bun:sqlite, every dependency, and all static assets (UI scripts, fonts, OpenAPI spec). No Bun, Node, or node_modules needed on the target machine.

Download Platform
uptime-darwin-arm64 macOS · Apple Silicon
uptime-darwin-x64 macOS · Intel
uptime-linux-x64 Linux · glibc (any mainstream distro, any x64 CPU)
uptime-linux-x64-musl Linux · musl (Alpine / FROM scratch containers)
uptime-windows-x64.exe Windows · x64

macOS: these binaries are unsigned, so Gatekeeper quarantines them on first run. Clear it with xattr -d com.apple.quarantine ./uptime-darwin-arm64.

v0.1.1

Choose a tag to compare

@cryguy cryguy released this 29 May 03:10
v0.1.1
c043721

Adds self-setup to the standalone binaries: each one now bundles the secret-generation helpers, so you can configure a fresh install without a repo checkout or Bun installed.

What's new

./uptime keygen            # prints SESSION_SECRET + ENCRYPTION_KEY (hex)
./uptime hash <password>   # prints ADMIN_PASSWORD_HASH (argon2id)

Paste those lines into a .env next to the binary, then start it:

./uptime                   # no subcommand → starts the server on :3000

These run without any env configured (that's the point), so they work on a brand-new machine. Everything else is unchanged from v0.1.0 — the five binaries below are still fully self-contained (Bun runtime, bun:sqlite, dependencies, and static assets all embedded).

Download Platform
uptime-darwin-arm64 macOS · Apple Silicon
uptime-darwin-x64 macOS · Intel
uptime-linux-x64 Linux · glibc — any mainstream distro, any x64 CPU
uptime-linux-x64-musl Linux · musl — Alpine / FROM scratch
uptime-windows-x64.exe Windows · x64

macOS: these binaries are unsigned, so Gatekeeper quarantines them on first run. Clear it with xattr -d com.apple.quarantine ./uptime-darwin-arm64.

v0.1.0

Choose a tag to compare

@cryguy cryguy released this 29 May 02:54
v0.1.0
0d0f296

First tagged release of uptime — a self-hosted uptime monitor with a public status page and an admin console, all in one Bun process and one SQLite file.

Prebuilt binaries

Each binary below is fully self-contained: it bundles the Bun runtime, bun:sqlite, every dependency, and all static assets (UI scripts, fonts, OpenAPI spec). No Bun, Node, or node_modules needed on the target machine.

Download Platform
uptime-darwin-arm64 macOS · Apple Silicon
uptime-darwin-x64 macOS · Intel
uptime-linux-x64 Linux · glibc — any mainstream distro (Ubuntu/Debian/RHEL/Fedora/Arch), any x64 CPU
uptime-linux-x64-musl Linux · musl — Alpine / FROM scratch containers
uptime-windows-x64.exe Windows · x64

The glibc and musl Linux builds are not interchangeable — use -musl only on Alpine-style images, the plain one everywhere else. Both Linux and Windows binaries are "baseline" builds, so they run regardless of CPU age.

Running

A binary is self-contained but not self-configuring — it reads the same environment as running from source (ADMIN_USERNAME, ADMIN_PASSWORD_HASH, SESSION_SECRET, ENCRYPTION_KEY) and auto-loads a .env from the working directory:

chmod +x ./uptime-linux-x64
./uptime-linux-x64        # serves on :3000; creates ./data/uptime.db

See Configuration for the full variable list and how to generate the keys and the admin password hash.

macOS: these binaries are unsigned, so Gatekeeper quarantines them on first run. Clear it with xattr -d com.apple.quarantine ./uptime-darwin-arm64.