Ship a Subscription SaaS on a €12 VPS: The Boring 80% Is Already Built

A self-hosted subscription platform hands you accounts, plans, checkout, invoices and an admin backoffice pre-built — so your weekend goes into the one feature that’s actually yours.

You can go from an empty server to a running subscription business in a single weekend, on a VPS that costs about twelve euros a month — owning the server, the database, and every byte of user data.

The boring 80% is already built

Ask anyone who has shipped a subscription product what ate their first month, and the answer is rarely the idea. It is the plumbing: sign-up and login, password resets, plan tiers, a checkout that survives contact with a real payment processor, invoices that add up correctly, an admin screen to see who paid. None of that is your product. All of it is table stakes. A self-hosted platform like VBWD exists to hand you that 80% pre-built and tested, so your weekend goes into the 20% that is actually yours.

Concretely, before you write a line of code you already have: JWT-based accounts, tiered plans with billing periods, checkout wired to Stripe, PayPal or YooKassa, an invoice lifecycle with proper tax handling, a token/credit system for metered usage, a CMS for public pages, and two separate frontends — one for customers, one for admins. The backend is Python and Flask on PostgreSQL and Redis; the frontends are Vue 3 and TypeScript; everything runs in Docker. You are configuring a business, not assembling a framework.

Why a €12 server is enough to start

There is a persistent myth that a “real” SaaS needs managed databases, autoscaling, and a four-figure cloud bill. For an early product with early traffic, that is cost you are paying to solve problems you do not have yet. A single small VPS — two vCPUs, four gigabytes of RAM, from an EU provider — runs the whole stack: API, database, cache, and both frontends. That lands around twelve to sixteen euros a month.

The setup is deliberately unglamorous: install Docker, point a domain at the box, open ports 80 and 443. There is no managed database to provision, no serverless cold-start to reason about, no third-party identity provider to integrate. If the machine is up and Docker is installed, you are ready to deploy.

Installing, in plain steps

VBWD ships an installer that clones the repositories in the right order, builds the shared frontend component library first (both apps depend on it), and brings the stack up. In practice it is a clone with submodules, a run of the install recipe, and a make up to start the backend with Postgres and Redis. Database schema is managed with Alembic migrations applied on boot. When the containers report healthy, you log into the admin app with the seeded admin account and you are looking at a working control panel: users, plans, subscriptions, invoices, webhooks, analytics.

One piece of advice that saves an afternoon: a green health check means the process is up, not that every feature is loaded. Plugin enable-state lives in a single directory on the host that all three apps share. If something you expected is missing, check that its plugin is enabled — not the health endpoint.

Turning it into your business

Three configuration steps take you from “installed” to “taking money.”

Plans. Create your tariff plans in the admin app — name, price, currency, billing period, and the limits that separate your tiers. A plan is data, so you add a tier or change a price without a deploy. The engine reads the plan and does the billing.

Payments. Payment providers are plugins behind a shared adapter. Enable the one you want, drop in your keys, and checkout runs against it; the invoice lifecycle updates from the provider’s webhooks. Want a different or regional processor later? Swap the plugin — nothing else in your app changes, because it only ever spoke to the adapter.

Metered features. If your product charges by usage rather than flat access — API calls, AI generations, exports — use the token system. Customers buy credit bundles; your feature decrements them. This is how you bill an AI feature fairly without inventing your own metering ledger.

The one part that is yours

This is where a weekend project becomes a product. VBWD is a plugin platform: the core is generic, and every vertical — a shop, bookings, datasets, a software store gated on GitHub — is a plugin. You add your feature the same way, without editing core. A backend plugin is a directory that the platform auto-discovers; it declares its metadata, registers its routes and services, and hooks lifecycle events. You never touch the application entry point.

For a first build, keep the custom part small and specific: one page, one endpoint, one thing the generic tools in your niche do not do. The platform carries accounts, billing, and admin around it, so your effort concentrates where it differentiates you.

The public face

You need a landing page and a pricing page a stranger can act on. The built-in CMS gives you pages, a rich-text editor, images, layouts, and slug routing — build your marketing content there. For pricing, VBWD exposes your plans through a public API and an embeddable widget, a snippet you can drop onto the CMS page or any external site so the “choose a plan” button routes straight into checkout. You do not hand-maintain a pricing table; it reads your live plans.

The economics, stated bluntly

Here is why owning the stack changes the numbers. Hosted platforms take a percentage or a heavy monthly fee: Substack and Gumroad around ten percent of revenue, OnlyFans twenty percent, GoHighLevel from roughly $497 a month. On VBWD your platform cost is the VPS — a fixed twelve to sixteen euros — plus your payment processor’s standard fees, which you would pay anywhere. At a thousand euros a month in sales, a ten-percent platform is eating a hundred euros of your money every month, forever, while your server bill does not move. The gap widens with every customer. You are trading a small amount of ops work for keeping the percentage.

The second half of the argument is ownership. On a hosted platform, your customer list, your content, and your billing relationship live on someone else’s system under their terms. Self-hosted, they live on your server. That matters for margin, for data-protection obligations, and for the day a platform changes its rules on you.

What you are signing up for

Be honest about the trade. Self-hosting means you own uptime, backups, and updates. A cheap VPS with no backup plan is a single point of failure — spend an hour on automated Postgres backups before you take real customers. You are also responsible for TLS, OS patches, and scaling the box when traffic grows. None of it is hard, but it is yours. If you would rather pay a percentage to never think about a server, a hosted platform is the honest choice. If you would rather pay a fixed bill and own everything, this is the trade you are making deliberately.

The licence in one paragraph

VBWD is source-available under the Business Source License 1.1. In plain terms: free to use — commercially, including a real SaaS you charge for — as long as your annual VBWD-attributable sales stay under the value of 6.7 BTC, measured at the year’s average BTC/USD. Above that you buy a commercial licence. Non-production use is always free, and the licence converts to Apache-2.0 on its change date. For a weekend project and a young product, you are comfortably inside the free grant.

The weekend, condensed

Provision a small EU VPS and install Docker. Clone with submodules and run the installer; bring the backend up. Create your plans and enable a payment plugin with your keys. Build a landing page in the CMS and embed the pricing widget. Add one custom plugin that makes the product yours. Set up backups and TLS before you invite anyone. By Sunday night you have a live, self-hosted subscription product with real checkout on a twelve-euro server — and a codebase you own outright. The following weekend is for the second feature, and because it is a plugin, you will not have to touch anything you built this one.

Happy
Happy
0%
Sad
Sad
0%
Excited
Excited
0%
Angry
Angry
0%
Surprise
Surprise
0%
Sleepy
Sleepy
0%

The Bitcoin-Denominated Software License: How VBWD’s BSL Works

How Subscriptions Work in VBWD: Plans, Billing Periods, Trials, and Invoices

Leave a Reply

Your email address will not be published. Required fields are marked *

11 − one =