diff --git a/docs/infrastructure-report.html b/docs/infrastructure-report.html new file mode 100644 index 0000000..f5aabbc --- /dev/null +++ b/docs/infrastructure-report.html @@ -0,0 +1,400 @@ + + + +
+ + +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.
+ +