Skip to content
A—56

canturan.dev

A lightweight monitor that watches Windows and Linux servers across locations from one dashboard

Sector
Personal brand
Country
Türkiye
Category
Custom software
Services
Custom software
Technology
Go, React 19, TypeScript, Vite, Recharts, SQLite, Tailscale, Docker, Apache Guacamole, Web Push
Status cards of three demo servers on the System Watcher dashboard

01 /

The brief

The servers we maintain run in different cities, different data centres and on different operating systems. We did not want to learn about a full disk, a stopped service or a brute-force attempt on SSH only after the problem had grown. So we built System Watcher for our own operations: a small Go agent runs as a service on each server and collects metrics, and a hub pulls that data over Tailscale’s encrypted private network, stores it in SQLite and presents it in a React interface. The agents are never exposed to the internet. As an internal tool it is not public and still in development; the screenshots here were taken locally with three demo servers running in Docker containers.

Screens

Fresh screenshots from the live site: the full page, inner pages and how it looks on a phone.

canturan.dev — Sections and inner pages

Sections and inner pages

canturan.dev — Sections and inner pages
canturan.dev — Sections and inner pages
canturan.dev — Sections and inner pages
canturan.dev — On mobile

02 /

Approach

Three decisions that shaped the project.

  1. 01

    An agent closed to the internet

    By default the agent listens only on its Tailscale address, and its read-only API is protected by a token. The one-line install command is single-use: it downloads the agent, verifies it with SHA-256, installs it as a service and registers the server with the hub on its own.

  2. 02

    Data that survives downtime

    The agent keeps the last 24 hours of measurements in memory, so any gap while the hub was offline is backfilled from that buffer once it returns. Raw data is kept for 7 days, minute summaries for 90 days and hourly summaries for 2 years.

  3. 03

    Alerts without the noise

    Default thresholds are 80% for warning and 90% for critical, adjustable per server. Alerts can be acknowledged and muted during maintenance; an unacknowledged alert escalates through defined steps to Telegram, email, webhooks or push notifications on a phone.

03 /

What we delivered

  • Fleet dashboard with CPU, RAM, disk, network and uptime
  • Windows services, systemd units and pending updates
  • RDP/SSH sessions, failed logins and brute-force detection
  • SQL Server backups, Docker containers and Coolify application status
  • Disk-full forecasts and capacity charts
  • HTTP, SSL certificate, domain expiry and ping checks
  • TV mode for wall displays and in-browser remote desktop

Tech stack

  • Go
  • React 19
  • TypeScript
  • Vite
  • Recharts
  • SQLite
  • Tailscale
  • Docker
  • Apache Guacamole
  • Web Push

The code and the domain belong entirely to our client.

Next project

A—57

canturan.dev

The signalling server behind a remote support system that only takes control with the user’s consent

Personal brand · Türkiye