DeploymentAugust 19, 202614 min read

VPS vs PaaS Cost: What a €5 Server Actually Costs You

The price gap between a raw VPS and a managed platform is smaller than the pricing pages suggest. This itemises both sides: the hidden line items, the jobs, and who the processor is.

RThe Runsite Team

The advertised price of a European server is about the same as a sandwich. As of writing, Hetzner's CX23 in Falkenstein or Nuremberg gives you 2 vCPU, 4 GB of RAM, 40 GB of NVMe and 20 TB of traffic for €5.49 a month. That number is on the pricing page, it is real, and it is not what the server costs.

Add the IPv4 address at €0.50, because the advertised price does not include one and your application needs to be reachable. Turn on automatic backups, which are billed at 20% of the instance price, and add €1.10. You are at €7.09 net. If you are a private individual or a business without a VAT ID, add 19% German VAT and the invoice reads about €8.44. The sandwich was €5.49; the thing running your application is half as much again.

This matters because the entire VPS versus platform debate is conducted in advertised prices. One of the threads still ranking for this question is titled "Confusion choosing a hosting service... VPS or PAAS". Another, from r/SaaS, names the part people actually argue about: "VPS vs PaaS battle (especially time & cost)". The threads are long and the answers are confident in both directions, and almost none of them get past the first line of the price list.

This article gets past it. The arithmetic is written out, the jobs inside the price gap are listed one by one, and there is a section on who is legally responsible for the data, which the usual debate never raises. There is no verdict at the end. The honest answer depends on numbers only you have.

"A VPS at $20/month that takes 4 hours/month to maintain costs more than a PaaS at $80/month"

That sentence is from a comment in r/devops, and Google quotes it word for word on both the "vps vs paas" and "vps vs paas cost" results pages. It is currently the most-read summary of this decision on the internet. The full version ends "...if your time is worth anything."

It is directionally right and worth finishing, because the number hiding inside it is much smaller than the rhetoric suggests. The gap between $20 and $80 is $60. Divide by four hours and the break-even rate is $15 an hour. That is what "if your time is worth anything" resolves to: fifteen dollars an hour. Above that the platform is cheaper, below it the server is.

Which is a low bar, and a suspiciously convenient one for whichever side is quoting it. The two inputs are where the argument actually lives, and both of them are softer than they look.

Why your hourly rate is the wrong variable to start with

The heuristic asks what your time is worth and treats the four hours as given. In practice your hourly rate is the number you know and the four hours is the number you are guessing at, so the guess carries the whole calculation.

Ask ten people how long a VPS takes to run and the answers range from zero to a day a month, and most of them are telling the truth about their own situation. A single Django app on a box that was set up carefully, behind a reverse proxy nobody has touched in a year, serving traffic that never spikes, genuinely takes close to no time. Months go by. The person who says they have run theirs for three years and spent maybe two hours total is not exaggerating.

Then a certificate does not renew, or a kernel advisory lands on a Friday, or the disk fills with logs nobody rotated, and that month costs six hours. The annual average might still be under an hour a month. The average is not the thing that hurt.

So the decision has a different shape than the monthly comparison suggests. You are choosing between two distributions: a predictable bill in euros, or a mostly predictable bill in your own attention with an occasional spike attached. Most of this article is about pricing that spike.

What a €5.49 server costs once it is running production

Before any of that, the advertised price needs correcting, because every comparison you will read starts from it and none of them itemise it. These are Hetzner's own line items as of writing, and the same pattern holds at Scaleway, OVHcloud, UpCloud and Exoscale with different numbers.

Line itemCost as of writingWhy it appears
CX23 instance€5.49/mo2 vCPU, 4 GB RAM, 40 GB NVMe, 20 TB traffic
IPv4 address€0.50/moNot included; IPv6 alone is not enough for most public apps
Automatic backups20% of the instance price, so €1.10Off by default, and the alternative is writing your own
Snapshots€0.0143/GB/moOnly if you keep images for rollback or cloning
Traffic above 20 TB€1/TB in the EUGenerous quota, but metered above it
VAT19% in Germany without a VAT IDApplies to consumers and non-registered businesses
Running total€7.09 net, about €8.44 with VATOne machine, before any of your time
The advertised price and the invoice are different numbers, and every comparison that quotes the first one is comparing the wrong thing. Figures from Hetzner's price list as of writing; check the current one before relying on them.

None of this makes the server expensive. €8.44 for a production-capable machine in Germany is an excellent price and Hetzner deserves the reputation it has. The point is narrower: the number every comparison starts from understates what one machine costs to run by about 29% for a VAT-registered business, and by about 54% for anyone who owes the VAT. Either way the shortfall lands before the argument reaches the part that is actually contested.

The VPS vs PaaS cost calculator, written out

"Vps vs paas cost calculator" is one of the two searches Google suggests underneath these results, and there are tools that will run it for you. The calculation is small enough to write down. Take the monthly gap between the two options, divide by your hourly rate, and you get the hours the gap buys. If the server takes less time than that, the server is cheaper.

The gap depends entirely on what you are comparing, which is why the single-server version is misleading. One machine at €7.09 against a €50 managed plan with matching 2 vCPU and 4 GB leaves €42.91, and that is a genuinely large gap that buys real hours. A working production setup is rarely one machine. Add a staging environment and give the database its own host, which is the correct call the moment the data matters, and it is three machines at €21.27 net. Against a managed platform running the application at €50 and a managed Postgres at €5, the gap is €33.73.

Your rateHours the gap buys: one server (€42.91)Hours the gap buys: realistic setup (€33.73)
€15/hour2.92.2
€30/hour1.41.1
€50/hour0.90.7
€75/hour0.60.4
€100/hour0.40.3
Break-even in hours per month. At any professional rate the budget is well under an hour, and the realistic setup tightens it further while tripling the number of machines you maintain.

The table is still not a decision, because maintenance is a list of jobs rather than a number you can look up. The honest version of this calculation is to go through the list and mark the ones you will actually do.

What the price gap buys: a list of jobs, not features

Comparison pages tend to list what a platform has. Build pipelines, preview environments, one-click databases. That framing makes the platform sound like a shop, when the useful framing is a rota. Every job below exists in both scenarios. Nothing on the list disappears because you chose a server. The only thing that changes is whose calendar it lands in.

The jobOn a raw VPSOn a managed platform
Issuing and renewing TLS certificatesYours: install an ACME client, wire the renewal hook, notice when it stops workingIncluded, and the failure mode is somebody else's pager
OS security updates and kernel rebootsYours, including deciding when a reboot is acceptableIncluded below the container line
Language and runtime version upgradesYours, on a machine that is also serving trafficRebuild and redeploy, usually a one-line change
Health-gated release and rollbackYours to build: two containers, a proxy switch, a check, a way backStandard, though which strategy you get varies
Log rotation and disk headroomYours, and the failure is a full disk at an inconvenient hourIncluded, with retention as a setting
Secrets storage and rotationYours: a file on the box, or a real secret store you now runAttached to the service, injected at runtime
A second environment for staging or previewsA second server, and another IPv4, and another backup lineUsually a per-branch environment, sometimes metered
Backups, and a restore you have testedYours end to end, including the off-box copyBackups included; the restore test is still yours
Eight jobs that exist either way. The price gap is what it costs to move them off your list, not what it costs to make them exist.

Another vendor blog in this same set of results puts it in one line: "PaaS costs more per month but saves you hours. A VPS costs less but hands you the whole job." That is accurate, and the table above is what "the whole job" contains once you write it down.

TLS, and why 90 days is a schedule rather than a setting

Let's Encrypt certificates are valid for 90 days, a short lifetime chosen deliberately: a short lifetime forces automation. The automation is good, and on a well-configured box the renewal runs on a timer and you never think about it.

bash
# The renewal itself is one line and it works.
sudo certbot renew --quiet

# So does this, until a kernel update needs a reboot you have to schedule.
sudo unattended-upgrades --dry-run --debug

What the automation does not cover is the day the renewal hook fails quietly because the web root moved, or the reload command changed name after a distribution upgrade, or port 80 got firewalled during unrelated hardening. The certificate does not fail on renewal day. It fails 90 days later, on the expiry date, usually to a user rather than to you. The whole list follows this pattern: the routine case is automated and cheap, and the cost concentrates in the moment the automation stops being true without telling anyone.

The second machine you did not budget for

Three CX23s with IPv4 and backups come to €21.27 net a month, which is still cheap in absolute terms. What changes is the ratio the argument rests on. A comparison that starts at seven-to-one and quietly becomes two-and-a-half-to-one has lost most of its force, and the maintenance side has tripled while the bill stayed small.

"Cost predictability is a strong point for VPS" — until 15 June 2026

That first phrase is lifted from another page in these results, and it is the strongest argument the server side has. A fixed monthly price does not spike when your traffic does, and against usage-based platform billing that is a real advantage. Anyone who has watched a metered invoice arrive after a launch knows why people care about it.

It is also the claim that took the most direct hit this year. Hetzner's own price-adjustment notice sets the change at 15 June 2026, 8 AM CEST, and the increases were nowhere near uniform. Cost-optimised instances moved least: the Arm CAX11 went from €4.49 to €5.99, about a third. The dedicated-vCPU CCX line moved most, with CCX13 going from €15.99 to €42.99, an increase of 169%. The shared-AMD CPX line sits between the two, with CPX62 going from €50.49 to €129.99. Those are Hetzner's own published figures rather than an estimate, and all of them are net of VAT.

Existing instances kept their old pricing, so nobody's invoice changed overnight. The catch is in the word "rescales": the moment you resize an instance, you are buying at the new price. Size a CCX13 in 2025, find you need more memory in 2026, and the resize hands you the current price on a plan that went up 169% in the meantime, on the same provider, in the same rack.

This is not an argument against Hetzner, who remain among the best value in Europe even after the change. It is an argument against treating a fixed monthly price as a fixed long-term cost. Predictability on a VPS means the invoice is stable between price changes, which is the same guarantee a managed platform on fixed plans offers, and neither of them is a promise about next year. The difference between fixed and usage-based platform billing is a separate axis from this one and worth understanding before comparing any two options.

The Hidden Cost Is Cognitive Load, Not Servers

That heading is lifted word for word from another article in these results, and it names what the hourly-rate model misses. The cost of running your own server does not distribute evenly across the year in tidy fifteen-minute increments. It arrives in lumps, at times you did not pick, while you were doing something else.

The shapes it arrives in are familiar enough. A CVE in a library your base image depends on, published on the day you planned to ship a feature. A disk at 98% because a debug log level got left on three weeks ago. A process killed by the OOM killer overnight with no supervisor configured to bring it back. An IP that ends up on a blocklist because of what a previous tenant of that address range did.

Each of these is solvable and none is hard. The cost is that they interrupt, arrive without notice, and compete with the work you are paid for. If you are one person running a product, price the variance rather than the median month. The variance is what decides whether a bad week becomes a bad launch.

The restore you have never tested

One line in the jobs table deserves singling out, because people believe they have handled it when they have not. Taking a backup is easy, and at 20% of the instance price most people running a VPS do turn it on. Restoring is a different exercise, and an untested restore is a plan rather than a backup.

The failures are dull and common. The dump is of the wrong database. The job stopped six weeks ago and the alert went to an address nobody reads. The backup sits on the same disk as the thing it protects. The encryption key was in an environment file on the machine that died. A managed platform moves some of this off your list, though not the part where you confirm that a restore produces a working application. If you want this argument on the database side specifically, the self-hosted versus managed trade-off for PostgreSQL works through it in detail.

Is a VPS just a VM?

This one comes up in Google's own People Also Ask box, and the confusion underneath it is why the cost debate goes in circles.

Technically, yes. A VPS is a virtual machine on shared physical hardware with dedicated slices of CPU, memory and disk, and what you receive is a kernel, a network interface and root access. That is the whole of it.

What you are not buying is anything above that line, and this is where the two sides of the comparison stop being comparable. A managed platform is not a faster way to get a virtual machine. It is a different product that happens to run on one. Deploying to a platform buys you a build system, a container registry, a router with certificates attached, a release mechanism with a health check in front of it, a supervisor that restarts what crashes, log aggregation and somewhere for secrets to live. Pricing those against a VPS is pricing a finished kitchen against a plot of land, and both numbers are correct for what they describe.

So the question that decides this is which of those layers you want to own, given that owning them is a legitimate choice with real upsides. What a deploy pipeline is actually made of, layer by layer, is worth reading if you plan to build one.

Falkenstein is not a jurisdiction argument on its own

Nothing in the top results for these searches raises this, and it is the part with legal consequences rather than budgetary ones.

Putting your application on a server in Falkenstein or Nuremberg or Gravelines does mean the data sits on European soil, and that is worth having. It does not settle the compliance question, because data protection law does not primarily ask where the disk is. It asks who is processing personal data, on whose instructions, under what written agreement.

Who is the processor in each scenario

On a raw VPS, you are. The hosting company is your processor for the infrastructure, and everything above the hypervisor is yours as controller: the application, the database, the logs, the backups, the access controls and the records that show what you did. On a managed platform, the platform is a processor for the layer it operates, which puts a signed data processing agreement, a documented sub-processor list and defined security measures between you and a regulator's question. Location has nothing to do with that difference. What matters is who carries an Article 28 obligation for the platform layer, and on a VPS the answer is nobody but you.

Self-hosting is not non-compliant, and plenty of teams run their own infrastructure and meet their obligations properly. The argument is that the compliance work is a line item on the same list as certificate renewal and log rotation, and it belongs in the comparison rather than in a footnote. What a data processing agreement commits each side to is the detail behind that callout.

A second-order point catches people out on the platform side too. A European region is not the same thing as a European operator, and a US-registered company offering an eu-central region is still a US-registered company whose corporate entity answers to a different legal system. The distinction between an EU region and an EU provider is worth checking before assuming the residency question is closed.

When the raw server is the right answer

Often it is, and a comparison that never reaches this section is an advertisement. The server wins clearly in these situations:

  • Someone on the team enjoys this work. Not tolerates it, enjoys it. Systems administration done by a person who likes doing it is fast, reliable and cheap, and no cost model captures that.
  • The workload is stable and boring. One application, predictable traffic, infrequent deploys, no ambition to add three more services this quarter. This is the case where months genuinely pass without anyone touching the box, and where unattended-upgrades plus a certbot timer really do cover the whole job for a year at a time.
  • You need something a platform will not run. A persistent WebSocket or game server that holds connections for hours, a GPU, licensed software that checks a MAC address at startup, a kernel module for a VPN, or anything that needs to bind a raw port rather than sit behind an HTTP router.
  • The bill scales badly on the platform side. A media or download-heavy app that pushes several terabytes a month is the clearest case: 20 TB is inside a €5.49 server's included traffic and is an egress line item almost everywhere else. Per-seat pricing on a team that grew does the same thing more quietly.
  • You are learning. Running your own server teaches you what platforms abstract away, and that knowledge makes you better at using them afterwards. Charge it to the education budget rather than the infrastructure budget.
  • Money is a binding constraint rather than a preference. A side project with no revenue and a founder with more time than money is exactly what the €5.49 server was built for, and at that point the six hours in a bad month cost nothing you were charging for anyway.

Where it goes wrong is the case in the middle: a small team, nobody dedicated to operations, a product with paying customers, and a server that was set up during a week when someone had time and has been drifting since. That is where the four-hour estimate stops being an estimate and the variance shows up. If you recognise your setup in that sentence, the European platform options and what each shape of them costs are worth a look before the next incident makes the decision for you.

There is a third option that is a real choice rather than a compromise. Installing a self-hosted control plane such as Coolify on your own server buys push-to-deploy and certificates without a platform bill, at the cost of a new layer you now maintain. That trade-off has its own ledger, and it is a different calculation from this one, which assumes there is no control plane at all.

How Runsite handles it

For the managed side of this comparison, concretely, and with the same itemising applied. Runsite runs managed web app hosting in the EU at €5 for 0.5 vCPU and 512 MB, €12 for 1 vCPU and 1 GB, €25 for 1 vCPU and 2 GB, and €50 for the 2 vCPU and 4 GB that matches a CX23, all as of writing. There is no separate charge for an IP address, TLS, or the build system, and no backup surcharge on the application tier. The free tier gives 0.1 vCPU and 256 MB and keeps active applications warm rather than sleeping them after fifteen minutes; a container only sleeps after 14 days without a single request.

Against the jobs table: connect a repository on GitHub, GitLab or Bitbucket and a webhook builds on every push to your branch, with the framework detected automatically for Next.js, Django, Rails, FastAPI and others, or your own Dockerfile used when you supply one. Releases are rolling behind a configurable health check, and a failed check returns to the previous healthy version instead of putting a broken build in front of users. HTTPS is automatic on a runsite.app subdomain or your own domain. Every pull request gets its own environment on its own URL, which answers the second-machine problem without a second machine, a second IPv4 or a second backup line. A deploy takes around 30 seconds, with the full clone, build and release cycle usually under a minute. Rollbacks and deploy history are on the Pro plan.

On the jurisdiction question: servers are in Frankfurt, Germany as of writing, and containers, environment variables, build artifacts and logs stay inside the EU. A signed GDPR data processing agreement comes with every plan, including the free one, which is the specific thing a VPS cannot give you, because on a VPS that obligation has nowhere to sit except with you. Neighbouring pieces are on the same invoice rather than on the same disk: managed PostgreSQL hosted in the EU from €5 a month with backups you do not operate, Redis for caches and job queues from €5, scheduled jobs, and object storage with no egress charges.

Being fair about the comparison: at the top of the table Hetzner gives you more disk and more traffic for the money, and if the jobs list is work you want to do, that is the better deal. If none of it should be landing in your calendar, the free tier starts without a card. Setup details are in the Runsite docs.

The short version

  • The advertised price is not the invoice. A €5.49 Hetzner CX23 becomes €7.09 net once you add the IPv4 address at €0.50 and backups at 20% of the instance price, and about €8.44 with German VAT, as of writing.
  • Every comparison you will read starts from the advertised number, which understates the cost of one running machine by about 29% net of VAT, and by about 54% for anyone who owes it.
  • The much-quoted Reddit rule of thumb resolves to $15 an hour. That is what "if your time is worth anything" means once you divide the $60 gap by four hours.
  • At a professional rate the gap buys under an hour of maintenance a month, and less than that on a realistic multi-machine setup.
  • The one-server comparison is the wrong one. Add staging and a separate database host and you are at €21.27 net across three machines, three times the maintenance surface, and a gap of about €33.73 rather than €42.91.
  • Price the variance, not the median. A stable box takes almost no time for months and then costs six hours on a Friday. The bad week is what the platform premium insures against.
  • Fixed monthly pricing is not a long-term guarantee. Hetzner's price-adjustment notice raised prices for new orders and rescales from 15 June 2026: CCX13 went from €15.99 to €42.99, an increase of 169%, while CAX11 moved only from €4.49 to €5.99. Existing instances kept their price, but rescaling buys at the new one.
  • Nothing on the jobs list disappears when you choose a server. Certificates, kernel updates, log rotation, secrets, a staging environment, health-gated releases and a tested restore exist either way. Only the calendar changes.
  • A VPS is a virtual machine and a platform is not a faster virtual machine. You are pricing a plot of land against a finished kitchen, and both numbers are right for what they describe.
  • The server's location is not the compliance answer. On a VPS you carry the Article 28 obligations for everything above the hypervisor; on a managed platform that obligation is attached to the platform layer, in writing.
  • The raw server wins outright when someone enjoys the work, the workload is stable, the platform will not run what you need, or money is the binding constraint. It goes wrong for small teams with paying customers and nobody on operations.
FAQ

Frequently Asked Questions

Common questions about this service.

Less than most people expect, and more than the advertised price. As of writing, Hetzner's CX23 with 2 vCPU, 4 GB of RAM, 40 GB of NVMe and 20 TB of traffic lists at €5.49 a month net in Nuremberg or Falkenstein, and the entry tiers at Scaleway, OVHcloud, UpCloud and Exoscale sit in a comparable range. The listed figure is not the invoice: an IPv4 address is €0.50 a month on top, automatic backups are billed at 20% of the instance price, snapshots are €0.0143 per GB, and VAT applies at 19% in Germany for anyone without a VAT ID. One machine with an IP and backups comes to €7.09 net, or about €8.44 with VAT. A realistic production setup is usually two or three machines once you add a staging environment and give the database its own host, which puts the running cost near €21 net and triples the operational surface.

Technically yes. A VPS is a virtual machine on shared physical hardware with dedicated slices of CPU, memory and disk, and what you receive is a kernel, a network interface and root access. The reason the question keeps getting asked is that people are usually comparing a VPS with a managed platform, and a platform is not a virtual machine with a nicer control panel. It is a build system, a container registry, a router with certificates attached, a health-gated release mechanism, a process supervisor, log aggregation and a secret store, all of which happen to run on virtual machines somewhere. When the two get priced against each other, the gap is mostly the cost of those layers rather than a markup on the same product.

The comparison works better rephrased as what you are willing to operate, since better depends entirely on which jobs you want on your own list. A VPS gives you a fixed monthly price and full control, and hands you certificate renewal, kernel updates, log rotation, secrets, release orchestration, monitoring and backup restores. A managed platform takes those off your list and charges a premium that, at professional hourly rates, works out to under an hour of your time a month. The strongest argument for the server is cost predictability, though that is a guarantee between price changes rather than a long-term one: Hetzner's price-adjustment notice raised prices for new orders and rescales from 15 June 2026, with CCX13 going from €15.99 to €42.99. The strongest argument against the server is variance, because the routine month is cheap and the bad week is not, and the bad week arrives without notice.

The list price and the real cost are different numbers, and the distance between them is the subject of this comparison. The list price for a small European VPS is a few euros a month. The real cost adds the line items the list price leaves out, which are the IPv4 address, backups at a percentage of the instance price and VAT where it applies; then the additional machines a working setup needs; then the maintenance hours at whatever your time is worth; then the irregular incidents that never show up in a monthly average, such as a security advisory landing on a busy day, a disk filling at three in the morning, or a certificate renewal that failed silently 90 days earlier. A practical way to price it is to take the corrected monthly gap against the managed alternative, divide by your hourly rate, and ask whether the server stays under that many hours in a bad month rather than an average one.

Your app deserves to be online

Free to start. Deploy in under a minute. No credit card needed.