vaha_
AR العربية
← الفهرس No. 19 / 21

ملف · Own tool · ops

ServersManagerPanel

Fleet control panel

My own fleet panel: a single Go binary with the frontend embedded, a SQLite store and no runtime dependencies. It keeps the machine inventory, a key × server access matrix, encrypted .env snapshots, metrics over persistent SSH sessions, package updates across the fleet and saved commands on a cron schedule. LAN boxes are reached through ProxyJump, so no port forwards are needed.

المجال
Own tool · ops
السنوات
2026 → present
الحالة
يعمل
النظام
Web · Server
ServersManagerPanel — Fleet control panel
لقطة شاشة · No. 19 The panel — inventory, metrics and state for every server in one place.

ماذا يفعل

01 / 09
  1. Server inventory with live metrics over a persistent SSH session
  2. Access matrix: which key may enter which host, applied immediately over the live session
  3. Per-server .env snapshots sealed with AES-256-GCM, master.key kept outside the database
  4. Fleet-wide package updates: apt, dnf and pacman, with per-machine output
  5. Saved commands on a cron schedule, with the history of every run
  6. Service control: systemd units, Docker containers and Kubernetes pods
  7. ProxyJump to LAN boxes, up to three hops, host keys pinned
  8. Health view: offline hosts, pending patches, reboot flag, failed units, disk
  9. API on loopback only, CSRF on every mutation, an audit trail for every action

الطبقات

02 / 03

Core — Go

GoSQLiteSSHSSE
  • One binary, cross-compiled without cgo
  • sshx layer: scripts run through base64 and bash -s, works even on fish hosts
  • Per-host metric collectors, cached, streamed to the browser over SSE
  • Background jobs for upgrades, per-host output held in memory

Surface — SPA

JavaScriptCSSgo:embed
  • The frontend is embedded in the binary, no separate service
  • Pages: fleet, server, access, keys, snapshots, commands, audit
  • Bento cards, CPU/RAM/disk/network charts per machine
  • A dark palette with its own tokens, no framework

Security

argon2idAES-256-GCMCSRF
  • Password as an argon2id hash, session as a signed cookie
  • Secrets are per-server files, outside every web root, mode 0600
  • The database keeps only the snapshot index, never the content
  • The panel has its own key and does not depend on a laptop's key

التقنيات

03 / 03
اللغات GoJavaScriptSQL 03
الأطر والأدوات SQLiteSSH (x/crypto)SSEgo:embedsystemdDocker 06
البنية التحتية vahid-imCaddysystemdProxyJump 04

كل الأنظمة في الملف

إلى الفهرس →