Skip to content
Business · 5 min read

Your $12 VPS costs about $600 a month

The claim The invoice is not the cost. For a small Canadian business running its own site on an unmanaged virtual private server, the true monthly cost of ownership lands somewhere...

A Written by Administrator
Your $12 VPS costs about $600 a month

The claim

The invoice is not the cost. For a small Canadian business running its own site on an unmanaged virtual private server, the true monthly cost of ownership lands somewhere between $400 and $800 CAD once you price the labour honestly. That is not an argument that unmanaged hosting is wrong. It is an argument that most owners have never actually written the number down, and therefore cannot tell whether they are saving money.

The work that does not appear on the invoice

Take a fairly typical setup: one 2 vCPU / 4 GB instance at $12 CAD per month running Nginx, PostgreSQL, and an application server behind Let's Encrypt. Here is the recurring labour, at a blended internal rate of $85 CAD per hour — roughly what a mid-level developer costs a Canadian employer once payroll taxes, benefits, and paid time off are loaded in.

TaskHours per monthCost (CAD)
OS and package patching, reboot coordination1.5$127.50
Verifying backups actually restore1.0$85.00
Certificate, cron, and disk-space firefighting0.75$63.75
Log review, failed-login triage, fail2ban tuning1.0$85.00
Dependency and runtime upgrades (amortised)1.5$127.50
Incident response (amortised, 4 h per quarter)1.33$113.05
Labour subtotal7.08$601.80
Instance$12.00

Seven hours a month is not a pessimistic figure. It is what it takes to do the job properly and not much more. If your team is spending noticeably less, you are almost certainly deferring one of those rows, and the row people defer is the backup verification.

The line item everyone forgets

Add downtime. If your site generates $40,000 CAD of revenue per month and is genuinely transactional, an hour of outage during business hours costs roughly:

$40,000 / 22 business days / 9 hours = $202 CAD per hour of revenue at risk

That is gross revenue, not profit, and not all of it is lost permanently — some customers come back. But a four-hour outage also consumes an afternoon of your best engineer's attention plus a week of trust from the customers who hit an error page. Two such incidents a year is a conservative expectation for an unmonitored single instance.

Why the estimate is usually too low, not too high

Two effects push the real figure above the table. The first is context switching: an hour of server work interrupted twice costs closer to ninety minutes of a developer's day, because the feature they were building has to be reloaded into memory afterwards. The second is that the labour is not evenly distributed. Six of those seven hours arrive in one bad week following a kernel advisory or a full disk, and they arrive on the day you had promised a client a release.

There is also the bus factor. On a single unmanaged host, one person usually holds the whole configuration in their head. Pricing the risk of that person leaving is uncomfortable, but a rebuild from undocumented state is a week of work at minimum, which is roughly $3,400 CAD amortised over the eighteen months of a typical tenure.

Where unmanaged genuinely wins

Three cases, and they are legitimate:

  • You already employ someone who does this. If a systems person is on payroll for other reasons, the marginal cost of one more host is small and the control is worth having.
  • The workload is not revenue-critical. A staging environment, an internal wiki, a batch job that can be a day late. Do not pay for a managed tier to protect something nobody would notice was down.
  • You need an unusual configuration. Custom kernel modules, specific database extensions, hardware-adjacent work. Managed platforms are opinionated by design.

How to reduce the number without changing providers

If you are staying unmanaged, cut the labour rows rather than the instance size. In rough order of hours saved per hour invested:

  1. Unattended upgrades with automatic reboots in a defined window. On Debian or Ubuntu this is twenty minutes of setup and removes most of the patching row.
  2. A restore test on a schedule, not on a hunch. A cron job that pulls last night's dump into a scratch database and runs three assertion queries turns one hour of anxious manual checking into two minutes of reading an email.
  3. Disk and certificate alerting. Most emergency pages are one of these two, and both are trivially predictable days in advance.
  4. Infrastructure as code, even badly. A single shell script that can rebuild the host from a blank image turns a four-hour incident into a forty-minute one. It does not have to be Terraform to be worth having.

The decision

Write down your own version of that table before your next renewal. If the labour subtotal exceeds what a managed tier costs, you are not saving money by running it yourself — you are converting a predictable expense into an unpredictable one and paying a premium for the privilege. If it does not, you have a defensible answer for the next person who asks why the servers are not somebody else's problem. Either outcome is better than not knowing.

#hosting #cost #operations #managed services

Keep reading