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.
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
- Up
- 100% of 7,091 one-minute checks since Sep 29, 2026
- Outages
- none recorded
- TLS
- certificate valid to Dec 28, 2026
See it live: mybit.ca (sign-in required).