12 Hobbies Studio / Nightjar
Hosting the open-source project and the commercial service. Designed to start on hardware you already own, at effectively zero cloud spend, and grow only when paying users justify it.
Bottom line. You do not need to spend anything on cloud to launch. Phase 0 runs entirely on your Proxmox / MS-02 cluster - app, database, object storage and the GPU transcription worker - reachable from the public internet through a free Cloudflare Tunnel. Your only cost is electricity, roughly £6-£18/month. Hetzner does not enter the picture until you have real users and want uptime that does not depend on your home connection - and even then the first step is about €13 (≈£11)/month.
Start really small. Each phase is a deliberate, reversible step - you only move up when the previous one hurts.
Figure 1 - You are here at Phase 0. Movement rightward is optional and demand-driven.
One MS-02 node under Proxmox hosts the whole stack. The public reaches it through a Cloudflare Tunnel, so there are no open ports and no static IP needed. This is enough to run the open-source demo and onboard your first private beta testers.
Figure 2 - Phase 0. One Proxmox host carries the app, database, storage and GPU worker. Public access is via a free Cloudflare Tunnel - no ports opened, no fixed IP.
| Item | Detail | £/month |
|---|---|---|
| Compute + storage + GPU | Runs on MS-02 you already own | 0 |
| Public access | Cloudflare Tunnel + DNS + TLS (free tier) | 0 |
| Source, CI, docs | Forgejo + marketing site already hosted | 0 |
| Electricity - light use | 1 node ≈ 30 W avg @ £0.27/kWh | ~6 |
| Electricity - GPU busy | node + GPU under transcription load | ~12-18 |
| Total | no cloud spend at all | 6-18 |
Commercial AI (if you offer the Cloud tiers) is billed per minute of audio and passed through to the customer - it is a cost of goods, not fixed overhead. Groq transcription, for example, is a fraction of a penny per minute.
The moment real people trust you with recordings, a single home disk is no longer good enough. The smallest responsible step is to replicate customer audio to Hetzner Object Storage (S3-compatible, EU region for UK/GDPR). Everything else stays on Proxmox.
| Item | Detail | €/mo | ≈£/mo |
|---|---|---|---|
| Hetzner Object Storage | S3 bucket, EU, ~250 GB + egress | ~5 | ~4.30 |
| Compute / GPU / DB | still on Proxmox | 0 | 0 |
| Electricity | as Phase 0 | - | 6-18 |
| New cloud spend | off-site backup of customer data | ~5 | ~4-5 |
Cloudflare Tunnel still fronts the app - no always-on cloud server yet. If your home connection drops, the service is down; that is acceptable for an early beta and is exactly what Phase 2 fixes.
Once people pay, "down because my broadband blipped" is no longer OK. Move only the always-on, lightweight parts to Hetzner - the app, database and queue - and keep the heavy GPU work on your MS-02. Hetzner has no GPU, so the home cluster remains the Private-tier engine.
Figure 3 - Phase 2. Cheap always-on ARM app node in Hetzner; heavy GPU work stays home over an encrypted mesh. Cloud stays small; the expensive silicon is hardware you own.
| Item | Spec | €/mo | ≈£/mo |
|---|---|---|---|
| App node | cax21 ARM - 4 vCPU / 8 GB / 80 GB | 12.59 | ~10.70 |
| Object storage | S3, EU, + usage | ~5 | ~4.30 |
| Mesh to home GPU | Tailscale free / self-hosted WireGuard | 0 | 0 |
| Electricity (GPU) | MS-02 GPU node at home | - | 6-18 |
| Total | + per-minute AI for Cloud tiers | ~18 | ~22-35 |
Real pricing pulled from your account catalogue (EU region, gross EUR incl. VAT). You do not need any of these for Phase 0 - this is the menu for later. ARM (CAX) is the best value and runs the whole stack.
| Type | vCPU / RAM / disk | Good for | €/mo | ≈£/mo |
|---|---|---|---|---|
| cax11 ARM | 2 / 4 GB / 40 GB | OSS demo box | 7.19 | 6.10 |
| cax21 ARM | 4 / 8 GB / 80 GB | app node (recommended) | 12.59 | 10.70 |
| cax31 ARM | 8 / 16 GB / 160 GB | app + workers at scale | 25.19 | 21.40 |
| cx23 x86 | 2 / 4 GB / 40 GB | compatibility fallback | 6.59 | 5.60 |
| cpx31 x86 | 4 / 8 GB / 160 GB | CPU-bound workers | 20.99 | 17.85 |
| ccx13 dedicated | 2 / 8 GB | guaranteed CPU | 51.59 | 43.85 |
Important: Hetzner Cloud has no GPU instances. Any self-hosted-model (Private tier) work must run on your MS-02, or on Hetzner's separate dedicated GPU servers (~€200+/mo) - which is exactly why keeping the GPU at home is the smart, cheap play.
Do nothing in the cloud yet. Stand up Phase 0 on one MS-02 node under Proxmox:
an app VM (FastAPI + Postgres + Redis), a MinIO bucket for audio, and a GPU worker VM with the
RTX 3050 passed through. Publish it through a free Cloudflare Tunnel at
app.nightjar.12hobbies.studio. Total new spend: £0, plus a few
pounds of electricity.
Only when you have people relying on it do you add Hetzner Object Storage (Phase 1, ~£4-5/mo) for off-site durability, and only when uptime becomes a promise do you add the €12.59/mo ARM app node (Phase 2). The expensive part - the GPU - never moves to the cloud, because you already own it and Hetzner cannot beat free.
Next step I can take: draft the Proxmox build kit -
a docker-compose.yml for the app + MinIO stack, the Cloudflare Tunnel config, and a
short runbook to bring Phase 0 up on one MS-02. Say the word.
Nightjar / 12 Hobbies Studio - infrastructure proposal, 2026-07-03. Figures are indicative: Hetzner prices are gross EUR from the live catalogue; £ conversions at ≈€1 = £0.85; electricity at £0.27/kWh. Read-only Hetzner token used for inventory only; no resources were provisioned. Rotate the token when convenient.