8 min read
Article

Self-Hosting vs SaaS: What a 20-Person Team Actually Pays

Per-seat pricing and fixed infrastructure pricing scale differently. A SaaS tool at a per-user rate costs twice as much when you double headcount. A server running the same software costs roughly the same. That difference is the entire argument, and it means there is always a team size where the two cross over.

The useful question is not whether self-hosting is cheaper - sometimes it is, sometimes it is not - but where your crossover point sits, and whether the operational cost on the other side is one you can actually absorb.

The arithmetic that people get right#

Take a 20-person team using four tools: file storage, team chat, a wiki, and workflow automation. Suppose each is priced at an illustrative $10 per user per month. These are not any specific vendor's current prices; they are round numbers chosen to make the shape visible.

Tool Per user 20 users Annual
File storage $10 $200 $2,400
Team chat $10 $200 $2,400
Wiki $10 $200 $2,400
Automation $10 $200 $2,400
Total $800 $9,600

Now the same categories self-hosted. Open-source equivalents such as Nextcloud for files and Rocket.Chat for chat run alongside each other on one instance. On a plan with unlimited seats, headcount stops appearing in the calculation:

Monthly Annual
One instance running four apps $199 $2,388

On list price alone that is roughly a quarter of the cost, and the gap widens with every person you hire. At 50 people the SaaS column reaches $24,000 a year while the infrastructure column has not moved.

The arithmetic that people get wrong#

That table is where most self-hosting cost comparisons stop, and it is why they are not trustworthy. Self-hosting adds real costs that do not appear on an invoice.

Someone has to operate it. Backups need to run and be verified. TLS certificates expire. Databases need major-version upgrades. Disks fill. If that someone is a developer earning $60/hour and it consumes four hours a month, that is $2,880 a year - which erases most of the saving in the table above.

This is the number that decides the question, and it is the one people leave out.

Migration is not free. Moving 20 people off a familiar tool costs support time, training, and a period of reduced productivity while people relearn habits. Budget it once, but do budget it.

Some features genuinely do not exist. Slack's integration catalogue is larger than Rocket.Chat's, and Notion's relational databases have no direct equivalent in most open-source wikis. If your workflow depends on a specific capability, the cheaper option that lacks it is not cheaper, it is just unsuitable.

Where managed self-hosting sits#

The reason managed self-hosting exists is that the operational line item is the one that breaks the math. If a provider runs the backups, the upgrades, and the certificates, you keep the fixed-cost pricing shape without paying the four-hours-a-month tax.

That is a narrower claim than "self-hosting is cheaper", and it is the honest one. You are not eliminating the operational work - you are buying it at a lower price than your own team's hourly rate, because it is amortised across many customers.

How to work out your own crossover#

  1. Count seats, not tools. Per-seat pricing means headcount is the variable that matters. Include contractors and occasional users - they are where per-seat billing hurts most.
  2. Total your annual per-seat spend across every tool that has a self-hostable equivalent.
  3. Price the equivalent infrastructure. Several apps usually share one instance, so this is not a per-app figure.
  4. Add the operational cost honestly. Either your own hourly rate times realistic hours, or the premium a managed provider charges. Do not enter zero.
  5. Subtract features you would lose. If a gap would force a workaround, the workaround has a cost too.

If step 2 exceeds steps 3 and 4 combined by a comfortable margin, the move is worth planning. If it is close, stay where you are - a marginal saving is not worth a migration.

The reasons that are not about cost#

In practice, cost is often not the deciding factor at all. Teams self-host because a client contract requires source code to stay on infrastructure they control, because GDPR Article 44 makes transfers awkward to justify, or because they want message history that is not hidden behind a retention tier.

Those requirements do not have a crossover point. They are either binding or they are not, and when they bind, the cost comparison is beside the point.

CostSelf-hostingSaaS

Continue reading

Managed self-hosting, without the operations

VCloud runs open-source business applications on dedicated infrastructure with unlimited user seats, automated backups, and updates handled for you.

See pricing