Case study 03 ยท Projects + managed MySQL

Thirteen droplets, thirteen meters.

Now two servers, 78% less.

An 11-person digital studio in Germany hosted 12 client workloads the way most agencies do: one DigitalOcean droplet per client, weekly backups on each, plus two managed databases. Safe, tidy and about $390 a month. Two Selfhost.dev project servers and one managed MySQL now run the same portfolio for about $83, with per-client isolation kept at the container level.

Both sides in the EU /13 droplets to 2 servers /August 2026 rates
~$390
DigitalOcean bill before, per month
~$83
same portfolio after, per month
78%
lower hosting line
13 โ†’ 2
boxes to patch, monitor and bill
The client
Team
11-person digital studio, 4 developers
Portfolio
12 production workloads: WordPress, Next.js, Laravel
Databases
MySQL, Redis and one MongoDB, per site
Region
Germany; clients across the EU
Trigger
Margin review: hosting resale barely broke even

Client details are anonymized and normalized. Every price below is recomputed at public list rates and our own billed rates for August 2026, in the region named on each table, so you can check the math yourself.

Why they moved

A droplet per client is tidy.
It is also thirteen idle meters.

The one-droplet-per-client pattern exists for a good reason: isolation. One client's plugin meltdown cannot touch another client's store. But the price of VM-level isolation is that every client carries a whole box and the studio's monitoring told the real story: most droplets idled under 10 percent CPU almost all month.

The bill had a second layer nobody questioned for years: weekly backups at 20 percent of every droplet's price and two managed databases at $15 each holding a few hundred megabytes between them. When the studio re-priced hosting for its retainer clients, the resale margin had quietly gone to almost nothing.

The before table

What DigitalOcean was charging,
line by line.

DigitalOcean ยท monthly list prices

Item Detail $ / mo
5 small droplets Basic, 1 vCPU / 2 GB each, brochure sites $60.00
6 mid droplets Basic, 2 vCPU / 4 GB each, WordPress and Node apps $144.00
2 large droplets Basic, 4 vCPU / 8 GB each, the Laravel app and busiest store $96.00
Weekly backups 20 percent of droplet spend, all 13 $60.00
Managed MySQL Basic, 1 GB RAM $15.00
Managed caching Basic, 1 GB RAM (Redis-compatible) $15.00
Total about $390 every month $390.00

DigitalOcean public list prices, checked August 2026: Basic droplets at $12 (1 vCPU / 2 GB), $24 (2 vCPU / 4 GB) and $48 (4 vCPU / 8 GB) per month, weekly droplet backups at 20 percent of droplet cost, managed MySQL and managed caching from $15/mo each. Figures in USD.

The diagnosis

What was actually
driving the bill.

Isolation rented by the box

VM-per-client buys isolation with 13 sets of idle headroom. Containers buy the same day-to-day isolation with one set. The studio's workloads averaged single-digit CPU; consolidation was not a squeeze, it was deleting duplicate slack.

The 20 percent backup tax

Backups priced as a percentage tax every idle box a second time: $60 a month to snapshot mostly-empty droplets. On a project server, each service and database is one item in one place to back up, not thirteen.

Managed databases for megabytes

Two $15 managed stores held a few hundred MB. Inside a project, MySQL, Redis and MongoDB run as one-click databases on the server you already pay for, which prices small datasets at zero marginal cost. The one store that deserved real database ops got a proper managed instance.

The migration

The move,
as it actually went.

Projects deploy from GitHub with auto-detected build packs (Dockerfile and docker-compose included), so the move was mostly inventory and DNS. An engineer ran it with the studio, free.

1

Inventory, then group by weight

Ten light and mid workloads went to one Large server (8 vCPU / 16 GB / 160 GB). The Laravel app and the busiest store, the two workloads that actually use CPU, went to a Medium server (4 vCPU / 8 GB / 80 GB) so a spike there cannot brown out the brochure sites.

2

Repos in, databases one click, domains verified

Each site deploys from its GitHub repository with auto-deploy on push and PR preview environments for client review. Per-site MySQL and Redis and the one MongoDB, were added as one-click project databases. Custom domains verified with automatic HTTPS.

3

Drain droplet by droplet, then delete the meters

DNS moved site by site with the old droplets still running, metrics watched for a week, then 13 droplets and their 20 percent backup line were deleted. The flagship store's data moved to a managed MySQL in eu-central-1 (Frankfurt) with PITR and nightly backups.

The after table

The same portfolio on Selfhost.dev,
line by line.

Selfhost.dev ยท project servers (EU) + managed MySQL (eu-central-1) ยท billed rates

Item Detail $ / mo
Project server, Large 8 vCPU / 16 GB / 160 GB, ~10 sites and apps as services, $0.06/hr $43.80
Project server, Medium 4 vCPU / 8 GB / 80 GB, the two heavy workloads + staging, $0.03/hr $21.90
Project databases Per-site MySQL, Redis, MongoDB on those servers, one click $0.00
Managed MySQL t4g.micro + 20 GB gp3, eu-central-1, PITR + nightly backups $12.03
Public IPv4 Added at deploy, managed instance only $4.93
Total about $83 every month $82.66

Project servers are flat hourly rates run 24/7 here: $0.06/hr and $0.03/hr, dedicated single-tenant servers, these in Germany and Finland, location auto-assigned from the six we run. Databases inside a project run on the server you already pay for.

The managed MySQL is priced at our billed eu-central-1 rate, plus its public IPv4 at deploy, about $5/mo.

Outbound transfer excluded on both sides: DigitalOcean bundles a per-droplet allowance, Selfhost.dev meters egress pay-as-you-go; at this portfolio's tens of GB a month it adds single-digit dollars.

$390.00 before / mo
$82.66 after / mo
$307 /mo saved, 78% less

That is about $3,700 a year back across the portfolio.

Hosting went from a break-even pass-through back to a real line of margin on every retainer and from 13 boxes to patch down to 2.

Read before you copy this

Where this math
bends the other way.

Shared boxes share fate

Container isolation handles the daily failure modes and the verbatim promise holds: zero-trust architecture baked into every container. But a kernel-level incident or a full-server outage touches every site on that box. That is why the heavy pair got its own server and why a client who needs guaranteed dedicated capacity should simply get their own project server, from about $15 a month.

No autoscaling, no location picker

A project is a single dedicated server: you pick a size and there is no autoscaling and no location picker yet. Placement is auto-assigned across our six locations in Germany, Finland, the United States and Singapore and this studio's servers landed in the EU, next to its clients. A US-heavy portfolio is no longer stuck with that, though you still cannot pin a location on purpose today.

Not every store belongs in a container

The flagship store kept a real managed MySQL, with PITR, nightly backups and failover, because losing an hour of orders costs more than $12 a month. Project databases are for the sites where a nightly snapshot is genuinely enough.

Want this table for your own bill?

Two clicks get you our verified numbers for your shape. Add your setup and a founder replies personally, usually within about two working days, with the same line-by-line format you just read.

cost check

Methodology

  • DigitalOcean prices are their public monthly list prices, checked August 2026 and quoted per line above.

  • Selfhost.dev project servers are flat hourly SKUs (19 sizes from $0.02 to about $3.23/hr; this studio is on two of the cheapest); the managed MySQL is our billed eu-central-1 rate, reproducible in the pricing calculator. Figures in USD.

  • Sizing follows the industry rule of thumb that a well-run 8 vCPU / 16 GB box carries 20 to 40 low-traffic sites; this portfolio placed about 10 on it, deliberately conservative. See the DigitalOcean comparison for the managed-database side.

Frequently asked questions

How many client sites fit on one project server?
It depends on traffic, but agency portfolios of brochure sites, small stores and content sites average single-digit CPU per site. This studio put about ten on an 8 vCPU / 16 GB server, deliberately under the common 20-to-40 rule of thumb for that class of box. Sizes run 2 to 48 vCPU per server and you can add servers as the roster grows.
What keeps client sites isolated from each other?
Each site or app runs as its own service in its own container, with zero-trust architecture baked into every container and per-service metrics and logs. For clients who need guaranteed dedicated capacity, give them their own project server; the smallest is about $15 a month. How project servers work.
Can WordPress, Laravel and Next.js really run side by side?
Yes. Anything deployable from a GitHub repository runs as a service, with build packs auto-detected (Dockerfile and docker-compose included), plus one-click PostgreSQL, MySQL, Redis and MongoDB databases in the same project. Self-hosting WordPress on Selfhost.dev.
Where do the servers run and what about the managed database?
Project servers run in one of six locations, in Germany, Finland, the United States or Singapore, auto-assigned. Managed database instances are a separate product on AWS in the region you choose, which is why the studio's MySQL sits in eu-central-1 (Frankfurt), close to its servers and its clients. Managed MySQL on Selfhost.dev.
In short

In short: an 11-person German web studio consolidated 13 DigitalOcean droplets (about $390 a month with the 20 percent backup charge and two managed databases) onto two Selfhost.dev project servers in our EU locations plus one managed MySQL in eu-central-1, totaling about $83 a month at August 2026 list rates, a 78 percent reduction. Per-client isolation moved from VM boundaries to containers, the two heavy workloads kept a separate server and the flagship store kept a managed MySQL with PITR. Project servers run in one of six locations, these in Germany and Finland and bill hourly against prepaid credits.

Put your portfolio back on one bill.

$5 welcome credit, no card needed
Free white-glove migration
No per-service or per-seat fees