Monitoring & Analytics 1 service 256 MiB RAM 2 GB disk

Beszel

A tiny, beautiful server monitoring hub - CPU, memory, disk, Docker stats, alerts. Datadog it is not.

One-click deploy, from $5/mo on a Miget plan.

Beszel is a refreshingly small server monitoring tool: CPU, memory, disk, network, temperatures, and per-container Docker stats, with history and configurable alerts (email, webhooks, ntfy, and more). The hub is a single Go binary embedding PocketBase, so it idles in well under 256 MB.

This template deploys the hub - the dashboard and database. The actual metrics come from lightweight agents you install on the machines you want to watch (your own VPS, bare-metal, or home server). An agent inside a Miget container would only see its own sandbox, so agents are not deployed here; install them where your workloads run and point them at this hub.

A thin wrapper sets the hub’s listen port to 5000 (its only port control is a command-line flag). Everything else is one volume and the embedded database - about as light as a monitoring stack gets.

#what you get

  • CPU, memory, disk, network, temps, and Docker stats
  • History plus alerts (email, webhook, ntfy, and more)
  • Tiny footprint - Go binary + embedded PocketBase
  • Multi-system dashboard from one hub
  • Agents installed on your own machines (not on the PaaS)
  • MIT-licensed; port-5000 wrapper

#topology

ServiceRolePublic
beszelmonitoring hub + dashboard (:5000)yes
agentsinstalled on your own machines, dial back to the hubn/a

#miget sizing

// this stack needs

256 MiB RAM · 2 GB disk · 1 service

The hub is tiny - 256 MiB is generous. It scales with the number of systems and your retention window, both small. Agents run on the hosts you monitor, not here.

Hobby - recommended fit

$5/mo

1 vCPU · 512 MiB · 10 GiB disk

Headroom for your own apps: 1 GiB at $7/mo

Professional - production

$22/mo

1 vCPU · 2 GiB · 10 GiB disk

Dedicated resources, production SLOs - plan details

One Miget plan is a fixed pool of compute - the whole stack (managed databases included) deploys inside it, and anything left over runs your other apps. No per-service or per-seat math.

#vs. the managed service

What the hosted equivalents charge, against the flat Miget plan this stack fits on. Prices as of June 2026, sources linked.

ServicePlanMonthlyWhat you get
Beszel on Miget 512 MiB plan$5this whole stack, flat - no usage meters, and room left for your own apps
DatadogPro~$150~$15/host/mo at 10 hosts (annual)

Monitoring SaaS bills per host and meters retention; Beszel watches as many machines as you like on one tiny plan.

#vs. other PaaS

Estimated monthly cost of running this exact stack (256 MiB RAM, 2 GB disk, 1 container) elsewhere, from published June 2026 rates.

PlatformEst. monthlyNotes
Miget $5 flat compose stacks first-class: one deploy, dedicated vCPU, managed Postgres/Valkey, volumes and TLS all included in the plan
Heroku ~$13 no volumes; nothing between 1 GB ($50) and 2.5 GB ($250) dynos - 2 GB containers cost far more than shown
DO App Platform ~$10 no persistent volumes - stateful containers need managed DBs/Spaces (base $5 Spaces included here)
Render ~$8 per-service instances (0.5 GB $7, 2 GB $25) - every container is its own paid service
Railway ~$3 usage-based ($10/GB RAM-mo); vCPU billed separately at $20/vCPU-mo on top
Fly.io ~$2 cheapest sticker price - but burstable shared CPUs (1/16 core; dedicated vCPUs cost ~2-3×), no compose deploys (one app per container, manual wiring), managed DBs billed extra

Estimates assume RAM fully allocated at published on-demand rates - and sticker price isn't the whole comparison: the cheaper rows buy burstable shared CPUs, per-service wiring instead of a compose deploy, and managed databases billed separately. Heroku and DO App Platform have no persistent volumes at all - stateful stacks like this one need workarounds there.

#deploy it

On Miget

  1. Create a Compose Stack in app.miget.com pointing at the templates repository
  2. Set the stack path to beszel
  3. Set the required variables:
    • (none), first account on first visit becomes admin
    • APP_URL, optional: the https domain (links + agent registration)
  4. Deploy. Miget layers compose.miget.yaml (RAM, privacy, volumes, managed services) automatically

Locally first?

Every template is portable, vanilla Docker Compose - the Miget overrides are ignored locally:

git clone https://github.com/deployable-sh/stacks
cd miget-compose-templates/beszel
docker compose up -d

Same files, same behavior. The template README covers connection strings and scaling notes.

#faq

Why is only the hub deployed, not the agent?

The agent monitors a real host (CPU, disk, Docker socket). Inside a Miget container it would only see its own sandbox, which is useless. So you deploy the hub here and install agents on the actual machines you want to watch - they dial back to this hub.

What does this save vs Datadog?

Datadog and similar bill per host per month and meter retention. Beszel is one tiny ~$5/month plan watching as many of your machines as you like, with the data on your own infrastructure.

How do I add a machine?

In the hub UI, add a system to get its install command, then run that agent on the target machine. It connects back to the hub over the network (SSH-key or token auth), and the dashboard starts showing its metrics.

Ship Beszel today

One compose stack, 256 MiB of RAM, from $5/month flat, and it runs on your laptop with the same files.