Jagdeep Sandhu

Things I've built

MyBit Cloud

The private console I use to run my three Linux servers: metrics, alerts, backups, a browser terminal and a database console, behind Google sign-in and two-factor.

Role
Sole developer and operator
Year
2026
Runs on
DigitalOcean droplet, Bangalore. Reaches the other nodes over Tailscale.
Live
mybit.ca (sign-in required)

Problem

I run three Linux servers: a DigitalOcean droplet in Bangalore, a Hetzner server in Helsinki and a mini PC at home, joined over Tailscale. Between them they host client websites, a ride-share backend, Postgres databases and nightly backups.

Keeping an eye on all of it meant separate SSH sessions and notes, and finding out about a problem when someone told me a site was down.

What I built

  • A single Node.js service on the droplet that talks to every node over the Tailscale mesh, with pinned SSH host keys.
  • Per-minute metrics for CPU, memory, disk, network and requests per site, kept for eight days. Request data comes from a dedicated nginx log format with no IP addresses in it.
  • Email alerts for a node, service or site going down, bursts of 5xx errors, CPU, memory and disk pressure, TLS certificates under 14 days, and failed or stale backups.
  • Nightly backups streamed from node to node: database dumps plus site and server config, checked with sha256, 14 copies kept per job.
  • A browser terminal with several SSH sessions, a file browser, and a database console where SQL runs inside a read-only transaction. Single-row edits need a typed confirmation and are written to an audit log.
  • Sign-in in three layers: Google SSO through oauth2-proxy, then TOTP two-factor, then role-based access. The page runs under a strict script CSP with no inline scripts.

Stack

Node.js, nginx, oauth2-proxy, systemd, Tailscale, PostgreSQL, Vanilla JavaScript, Resend

Outcome

It is the console behind every live site on this page. The uptime figures on these case studies come from its own site checks.

Proof

mybit.ca
Up
100% of 7,091 one-minute checks since Sep 29, 2026
Outages
none recorded
TLS
certificate valid to Dec 28, 2026
Measured by my own monitoring. Snapshot taken Oct 4, 2026.

See it live: mybit.ca (sign-in required).