SSD Nodes Learn Hosting plans →
Gidsen Matt ConnorDoor Matt Connor

Container as a service of VPS: wat kost het echt?

Cloud Run, Azure Container Apps, Scaleway en Fly.io naast een vaste VPS gelegd, met echte prijzen in euro. Bij altijd-aan verkeer wint de VPS ruim, bij weinig verkeer niet.

Wat kost container as a service vergeleken met een VPS?

Container as a service is goedkoper dan een VPS zolang je container het grootste deel van de maand stilstaat. Draait de container de hele maand met verkeer, dan wint een VPS met een vaste prijs ruim. Met de prijzen die wij op 2 oktober 2026 hebben gecontroleerd, ligt het omslagpunt tussen 86 en 477 actieve uren per maand. Waar precies hangt af van het platform en van de prijs van je VPS. Een maand heeft 720 uur.

Dit stuk is voor de ontwikkelaar of zzp'er van wie de app al in een Docker-container draait. De vraag is waar die container het goedkoopst draait: op een beheerd platform dat per seconde rekent, of op een VPS (virtual private server) met een vaste maandprijs. Het antwoord hangt af van de vorm van je verkeer. Daarom rekenen we hieronder één service door met echte tarieven. Twijfel je nog of je wel een eigen server nodig hebt, lees dan eerst wanneer je echt een VPS nodig hebt.

Hoe rekent een container-as-a-service-platform af?

Een CaaS-platform (container as a service) start jouw image op zijn eigen machines. Je betaalt niet per server. Je betaalt per seconde voor de resources die je container krijgt. Deze begrippen bepalen de rekening:

  • vCPU-seconde: één virtuele processorkern, één seconde lang toegewezen aan je container. Een container met 1 vCPU die een uur draait, verbruikt 3.600 vCPU-seconden.
  • GiB-seconde: één GiB (gibibyte, 1.024 MiB) geheugen, één seconde lang. Een container met 2 GiB die een uur draait, verbruikt 7.200 GiB-seconden.
  • Requests: sommige platforms rekenen ook per miljoen HTTP-verzoeken.
  • Gratis tegoed: elke maand een vaste hoeveelheid seconden zonder kosten. Dat tegoed geldt per account, niet per app.

Scale-to-zero betekent dat het platform je container stopt als er geen verzoeken binnenkomen. Je betaalt dan niets voor CPU en geheugen. Het nadeel is de cold start: het eerste verzoek na een stille periode wacht tot er een nieuwe container is opgestart. Hoe lang dat duurt, hangt af van de grootte van je image en de opstarttijd van je app.

Wil je geen cold starts, dan zet je het minimum aantal instances op 1. Er blijft dan altijd één container klaarstaan. Die container kost geld, ook als hij niets doet. Azure rekent daarvoor een lager idle-tarief. Op Fly.io betaal je een draaiende machine gewoon per seconde, ook zonder verkeer.

Cloud Run kent bovendien twee manieren van afrekenen. Bij request-based billing betaal je alleen voor de tijd waarin minstens één verzoek loopt. Buiten verzoeken krijgt je container dan bijna geen CPU. Bij instance-based billing betaal je voor de hele levensduur van de container, maar tegen een lager tarief per seconde. Voor een container die toch altijd draait, is instance-based billing dus de goedkopere keuze.

Welke platforms staan dicht bij huis?

Voor een Nederlandse app wil je een regio in of vlak bij Nederland. Dat scheelt vertraging, en voor de AVG (Algemene verordening gegevensbescherming) is het prettig als je data in de EU blijft.

  • Google Cloud Run: regio europe-west4 staat in de Eemshaven in Groningen. Deze regio valt in Tier 1, het laagste prijsniveau van Google.
  • Azure Container Apps: regio West Europe staat in Nederland.
  • Scaleway Serverless Containers: regio nl-ams in Amsterdam, naast Parijs en Warschau.
  • Fly.io: regio ams in Amsterdam. Fly rekent daar een toeslag van ongeveer 3,8 procent op de basisprijs.
  • AWS: geen regio in Nederland. De dichtstbijzijnde zijn Frankfurt (eu-central-1) en Ierland (eu-west-1).

Let op bij AWS. App Runner, de dienst die het meest op Cloud Run lijkt, neemt sinds 30 april 2026 geen nieuwe klanten meer aan. Bestaande klanten kunnen hem blijven gebruiken. AWS verwijst nieuwe klanten naar Amazon ECS Express Mode, dat je container als ECS-service op Fargate draait. Een ECS-service schaalt niet vanzelf naar nul als het stil is en weer omhoog bij het eerste verzoek. Voor het patroon 'meestal stil' is AWS daarom geen echte kandidaat. App Runner staat hieronder alleen in de grafieken voor wie hem al gebruikt.

Alle tarieven en aannames (gecontroleerd op 2 oktober 2026)
  • Google Cloud Run, Tier 1, in dollars. Instance-based: $0,000018 per vCPU-seconde en $0,000002 per GiB-seconde, met 240.000 vCPU-seconden en 450.000 GiB-seconden gratis per maand. Request-based: $0,000024 per vCPU-seconde, $0,0000025 per GiB-seconde en $0,40 per miljoen requests, met 180.000 vCPU-seconden, 360.000 GiB-seconden en 2 miljoen requests gratis.
  • Azure Container Apps, West Europe, in dollars. Actief: $0,000034 per vCPU-seconde en $0,000004 per GiB-seconde. Idle: $0,000004 voor beide. Requests: $0,56 per miljoen, in de euro-prijslijst €0,4928. Gratis per subscription: 180.000 vCPU-seconden, 360.000 GiB-seconden en 2 miljoen requests.
  • Scaleway Serverless Containers, in euro. €0,00001 per vCPU-seconde en €0,000002 per GB-seconde, met 200.000 vCPU-seconden en 400.000 GB-seconden gratis per maand. De prijspagina toont de regio Parijs. Controleer het tarief voor nl-ams in je console.
  • Fly.io, in dollars. Een performance-1x-machine met 2 GB kost $33,00 per maand in de basisregio. In ams komt daar de regiotoeslag bij. Er is geen gratis rekentegoed. Een gestopte machine kost $0,15 per GB rootfs per 30 dagen.
  • AWS App Runner, Ierland, in dollars. $0,064 per vCPU-uur en $0,007 per GB-uur. Een instance zonder verkeer betaalt alleen het geheugen.
  • VPS. SSD Nodes KVM/SMALL (de uitgever van deze site): 2 vCPU, 8 GB RAM, 160 GB SSD en 4 TB verkeer voor $66 per jaar, bij een termijn van drie jaar. Daarnaast rekenen we met een VPS van €20 per maand, als voorbeeld van een maandelijks opzegbare server.
  • Wisselkoers. €0,88 per dollar. Dat is de verhouding in Azure's eigen euro-prijslijst (€0,4928 tegen $0,56).
  • BTW. Alle bedragen zijn exclusief 21% BTW.

De rekensom: één service, twee verkeerspatronen

De service is steeds dezelfde: één container met 1 vCPU en 2 GiB geheugen. Het verschil zit alleen in het verkeer.

Patroon 1: altijd aan

De container is een API die dag en nacht verzoeken krijgt, 5 miljoen per maand. Een maand van 30 dagen heeft 2.592.000 seconden. Altijd aan betekent dus 2.592.000 vCPU-seconden en 5.184.000 GiB-seconden.

Zo ziet de som eruit voor Cloud Run met instance-based billing. CPU: 2.592.000 × $0,000018 = $46,66. Geheugen: 5.184.000 × $0,000002 = $10,37. Het gratis tegoed haalt daar $5,22 af. Dat is $51,80, en tegen €0,88 per dollar ongeveer €46. Instance-based billing kent geen kosten per request. De andere platforms rekenen we op dezelfde manier uit.

ChartAltijd aan: kosten per maand in euro, exclusief BTW
The data behind this chart
[
  {
    "provider": "Google Cloud Run (europe-west4)",
    "euro_per_maand": 46
  },
  {
    "provider": "Azure Container Apps (West Europe)",
    "euro_per_maand": 91
  },
  {
    "provider": "Scaleway Serverless Containers (nl-ams)",
    "euro_per_maand": 33
  },
  {
    "provider": "Fly.io performance-1x (ams)",
    "euro_per_maand": 30
  },
  {
    "provider": "AWS App Runner (Ierland, alleen bestaande klanten)",
    "euro_per_maand": 49
  },
  {
    "provider": "VPS 2 vCPU / 8 GB (SSD Nodes, termijn 3 jaar)",
    "euro_per_maand": 5
  },
  {
    "provider": "VPS-rekenvoorbeeld, maandelijks",
    "euro_per_maand": 20
  }
]

Elk beheerd platform kost hier meer dan beide VPS'en. Het goedkoopste platform is Fly.io met €30 per maand. De VPS van SSD Nodes kost €5 en heeft bovendien vier keer zoveel geheugen. Ook de maandelijks opzegbare VPS van €20 blijft onder elk platform. Azure is in deze regio het duurst, met €91, omdat het CPU-tarief in West Europe hoger is dan bij de andere aanbieders.

De oorzaak is eenvoudig. Een platform rekent per seconde voor capaciteit die het voor je vrijhoudt en kan wegnemen als je hem niet gebruikt. Gebruik je die capaciteit elke seconde van de maand, dan betaal je de hoogste prijs per seconde voor iets wat een VPS als vast pakket levert.

Patroon 2: meestal stil

Nu is dezelfde container een interne tool of een klantportaal. Hij krijgt 200.000 verzoeken per maand, vooral op werkdagen. Opgeteld is er 60 uur per maand minstens één verzoek actief. Dat is 216.000 vCPU-seconden en 432.000 GiB-seconden. De rest van de maand staat de container op nul.

Voor Cloud Run met request-based billing: 216.000 vCPU-seconden min 180.000 gratis laat 36.000 seconden over, keer $0,000024 is $0,86. Van de 432.000 GiB-seconden zijn er 360.000 gratis. De overige 72.000 keer $0,0000025 is $0,18. De requests vallen binnen de gratis 2 miljoen. Totaal $1,04, ongeveer 92 eurocent. Omdat de bedragen klein zijn, staat deze grafiek in eurocent.

ChartMeestal stil, 60 actieve uren: kosten per maand in eurocent, exclusief BTW
The data behind this chart
[
  {
    "provider": "Google Cloud Run (europe-west4)",
    "eurocent_per_maand": 92
  },
  {
    "provider": "Azure Container Apps (West Europe)",
    "eurocent_per_maand": 133
  },
  {
    "provider": "Azure, 1 replica altijd warm (zonder gratis tegoed)",
    "eurocent_per_maand": 3307
  },
  {
    "provider": "Scaleway Serverless Containers (nl-ams)",
    "eurocent_per_maand": 22
  },
  {
    "provider": "Fly.io performance-1x (ams), auto-stop",
    "eurocent_per_maand": 251
  },
  {
    "provider": "AWS App Runner (Ierland, alleen bestaande klanten)",
    "eurocent_per_maand": 1225
  },
  {
    "provider": "VPS 2 vCPU / 8 GB (SSD Nodes, termijn 3 jaar)",
    "eurocent_per_maand": 484
  }
]

Nu draait het beeld om. Scaleway kost 22 eurocent, omdat het gratis tegoed bijna alle 60 uur dekt. Cloud Run en Azure blijven ook onder de VPS van 484 eurocent. Fly.io heeft geen gratis tegoed, maar betaalt alleen de uren dat de machine draait, plus een paar cent voor de opslag van de gestopte machine.

Twee regels laten zien wat er gebeurt als de container niet naar nul gaat. App Runner kost 1225 eurocent, omdat een instance zonder verkeer de hele maand zijn geheugen blijft betalen. De Azure-regel met één warme replica kost 3307 eurocent. Die replica betaalt 660 uur lang het idle-tarief voor CPU en geheugen. Wie een minimum instance aanzet om cold starts te voorkomen, maakt van een stille app dus weer een app die altijd aan staat.

Eén kanttekening. Het gratis tegoed geldt per account. Draai je vijf van zulke services in hetzelfde account, dan gebruik je het tegoed maar één keer en betaal je de overige vier volledig.

Waar ligt het kantelpunt tussen platform en VPS?

Voor elk platform kun je uitrekenen wat één extra actief uur kost na het gratis tegoed. Bij Cloud Run is dat 3.600 × ($0,000024 + 2 × $0,0000025) = $0,1044, ongeveer 9 eurocent per uur. De eerste 50 uur zijn gratis. Deel de VPS-prijs door het uurtarief, tel de gratis uren erbij op, en je hebt het aantal actieve uren waarop beide even duur zijn. Kosten per request laten we hier weg.

ChartKantelpunt: actieve uren per maand waarbij het platform even duur is als de VPS
The data behind this chart
[
  {
    "provider": "Google Cloud Run (request-based)",
    "uren_tegen_goedkope_vps": 103,
    "uren_tegen_vps_20": 268
  },
  {
    "provider": "Azure Container Apps",
    "uren_tegen_goedkope_vps": 86,
    "uren_tegen_vps_20": 200
  },
  {
    "provider": "Scaleway Serverless Containers",
    "uren_tegen_goedkope_vps": 152,
    "uren_tegen_vps_20": 452
  },
  {
    "provider": "Fly.io performance-1x",
    "uren_tegen_goedkope_vps": 116,
    "uren_tegen_vps_20": 477
  }
]

Lees de grafiek zo. Is je container minder uren actief dan het getal, dan is het platform goedkoper. Is hij vaker actief, dan wint de VPS. Tegen de goedkope VPS ligt het kantelpunt voor Azure al bij 86 uur, iets meer dan een achtste van de maand. Tegen een VPS van €20 houdt Fly.io het het langst vol, tot 477 uur.

Je eigen aantal actieve uren meet je, je raadt het niet. Cloud Run toont in de console de metric Billable container instance time. Daaraan zie je precies hoeveel instance-tijd je per maand gebruikt. Draai je app al op een VPS, dan geeft je toegangslog een eerste schatting: tel de uren waarin minstens één verzoek binnenkwam.

Hoe stel je scale-to-zero en minimum instances in?

Op Cloud Run kies je het aantal instances bij het deployen. Met --min-instances 0 mag de service naar nul.

gcloud run deploy mijn-app \
  --image europe-west4-docker.pkg.dev/mijn-project/apps/mijn-app:1.4 \
  --region europe-west4 \
  --cpu 1 --memory 2Gi \
  --min-instances 0 --max-instances 3

Voor patroon 1 zet je CPU altijd aan. Dat schakelt de service over naar instance-based billing.

gcloud run services update mijn-app --region europe-west4 \
  --no-cpu-throttling --min-instances 1

gcloud run services describe mijn-app --region europe-west4 toont daarna de actieve instellingen. Op Azure Container Apps stel je hetzelfde in met het aantal replica's.

az containerapp update --name mijn-app --resource-group mijn-rg \
  --min-replicas 0 --max-replicas 3
az containerapp show --name mijn-app --resource-group mijn-rg \
  --query properties.template.scale

De tweede opdracht moet "minReplicas": 0 tonen. Staat daar 1, dan betaal je de hele maand voor een idle replica. Op Fly.io staat het in fly.toml:

[http_service]
  internal_port = 8080
  auto_stop_machines = "stop"
  auto_start_machines = true
  min_machines_running = 0

[[vm]]
  size = "performance-1x"
  memory = "2gb"

Met auto_stop_machines = "stop" stopt Fly de machine als er geen verkeer is. Je betaalt dan alleen de opslag van de rootfs.

Welke kosten veranderen de uitkomst aan de platformkant?

De sommen hierboven tellen alleen CPU, geheugen en requests. Een echte app gebruikt meer.

Uitgaand verkeer. Fly.io rekent in Europa $0,02 per GB naar het internet. Google en Azure rekenen uitgaand verkeer af via een aparte prijslijst. De VPS in de grafiek heeft 4 TB verkeer inbegrepen. Serveer je veel bestanden of beelden, reken dit dan apart uit.

Database en opslag. Cloud Run heeft geen blijvende lokale schijf. Bestanden die je container schrijft, staan in het geheugen en tellen mee voor je geheugenlimiet. Een database draai je dus als aparte beheerde dienst, en die heeft een eigen maandprijs die vaak hoger is dan de container zelf. Een volume op Fly.io kost $0,15 per GB per maand. Op een VPS draaien app en database naast elkaar op dezelfde schijf.

Websockets en achtergrondtaken. Een open websocket is voor Cloud Run een lopend verzoek. De container blijft dus actief zolang de verbinding open staat, en betaalt de hele tijd. Werk buiten een verzoek, zoals een wachtrij verwerken, krijgt bij request-based billing bijna geen CPU. Je hebt dan instance-based billing nodig, en dan betaal je weer de hele maand. Azure telt een replica als actief zodra hij meer dan 0,01 vCPU gebruikt of meer dan 1.000 bytes per seconde ontvangt. Een worker die elke paar seconden een wachtrij bevraagt, komt daardoor nooit in het idle-tarief.

Logging. Logs gaan naar Cloud Logging of naar Azure Log Analytics. Beide rekenen per GB boven een gratis hoeveelheid. Een app die op debugniveau logt, kan daardoor meer kosten aan logs dan aan rekentijd.

Welke kosten veranderen de uitkomst aan de VPS-kant?

Een VPS is goedkoop per maand, maar jij bent de beheerder. Dat kost tijd, en tijd heeft voor een zzp'er een uurtarief.

Patchen. Het besturingssysteem krijgt beveiligingsupdates, en jij moet die installeren. Op Ubuntu doet unattended-upgrades dat automatisch:

sudo apt update && sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
systemctl status unattended-upgrades

De laatste opdracht moet active (running) tonen. Kernelupdates vragen nog steeds een herstart. Zorg dus dat je containers na een herstart vanzelf terugkomen, zoals beschreven in Docker Compose automatisch laten starten na een reboot.

Alles op één machine. Valt de VPS uit, dan ligt alles plat: app, database en wachtrij. Een platform start een kapotte container zelf opnieuw op een andere machine. Op een VPS maak je zelf back-ups en houd je zelf bij of de server nog leeft. Eén container met een geheugenlek kan bovendien de hele server laten vastlopen. Geef elke container daarom een limiet, zie geheugenlimieten instellen in Docker Compose.

docker run -d --name mijn-app --restart unless-stopped \
  --memory 2g -p 80:8080 mijn-app:1.4

Je eigen tijd. In patroon 1 is het verschil tussen Scaleway en de goedkope VPS minder dan een half uur werk tegen een gangbaar zzp-tarief. Kost het beheer van de VPS je meer dan dat per maand, dan is de VPS in werkelijkheid duurder. Wie nog nooit een server heeft ingericht, begint het best met Docker installeren en draaien op een VPS.

De middenweg: een eigen PaaS op je VPS

Veel mensen kiezen een CaaS-platform vanwege het gemak, niet vanwege de prijs. Je pusht naar Git en de nieuwe versie staat live. Dat gemak kun je ook op een VPS krijgen. Coolify en Dokploy zijn open-source PaaS-pakketten (platform as a service) die je zelf op een server installeert. Ze bouwen je container bij elke push, regelen TLS-certificaten en geven je een webinterface voor logs en omgevingsvariabelen. De verschillen tussen de twee staan in Coolify en Dokploy vergeleken.

Je betaalt dan de vaste prijs van de VPS uit patroon 1, met een werkwijze die op Cloud Run lijkt. Het platform zelf gebruikt ook geheugen en CPU, dus kies een VPS met wat ruimte. Wat een geschikte server kost, staat in wat een VPS per maand kost. Wil je de server in Nederland, zodat je Nederlandse gebruikers weinig vertraging hebben, kijk dan naar VPS-hosting in Amsterdam.

De vuistregel uit de sommen is daarmee eenvoudig. Is je container minder dan ongeveer honderd uur per maand actief, dan is een CaaS-platform met scale-to-zero goedkoper. Draait hij het grootste deel van de maand, zet hem dan op een VPS, eventueel met Coolify of Dokploy erop.

FAQ

Is Google Cloud Run goedkoper dan een VPS?

Alleen als je container het grootste deel van de maand op nul staat. Met de prijzen van oktober 2026 kost een container van 1 vCPU en 2 GiB die altijd aan staat op Cloud Run in europe-west4 ongeveer €46 per maand, terwijl een VPS met meer geheugen al voor ongeveer €5 per maand te krijgen is. Bij 60 actieve uren per maand kost dezelfde container op Cloud Run minder dan een euro, omdat het gratis tegoed de eerste 50 uur dekt.

Wat is een cold start en hoe voorkom ik die?

Een cold start is de wachttijd voor het eerste verzoek nadat het platform je container naar nul heeft geschaald. Er moet dan eerst een nieuwe container opstarten. Je voorkomt het door het minimum aantal instances op 1 te zetten, met --min-instances 1 op Cloud Run of --min-replicas 1 op Azure. Die warme container kost wel de hele maand geld, waardoor een stille app net zo duur kan worden als een app die altijd draait.

Moet ik BTW optellen bij deze prijzen?

Alle prijzen van de aanbieders zijn exclusief 21% BTW. Ben je zzp'er met een btw-nummer, dan wordt de BTW bij een buitenlandse leverancier meestal naar jou verlegd: je geeft hem aan en trekt hem in dezelfde aangifte weer af. Gebruik je de kleineondernemersregeling (KOR), of ben je particulier, dan kun je de BTW niet aftrekken en betaal je 21% bovenop de bedragen.

Kan ik later nog wisselen tussen een CaaS-platform en een VPS?

Ja, zolang je app als gewone container draait. Hetzelfde image draait op Cloud Run, Azure Container Apps, Scaleway, Fly.io en op een VPS met Docker. Wat je wel moet meeverhuizen, zijn de diensten om de container heen, zoals de database, bestandsopslag en geheimen. Houd die buiten platformspecifieke diensten als je de keuze open wilt houden.

#containers#docker#hosting-costs#serverless#vps