After six months of Midjourney, I finally took the weekend to set up Stable Diffusion locally. The main driver was cost predictability and control. I was hitting the $30/month Midjourney plan easily, and during busy prototyping weeks, it felt like a black box where credits just vanished.
My goal was to replicate 80% of my workflow (concept art, UI mockups) for a fixed, known cost. Here's the breakdown of my initial investment and ongoing run-rate.
**Hardware (One-time)**
I already had a capable gaming PC, but I invested in a GPU upgrade specifically for this.
* RTX 4070 Super (12GB VRAM): ~$600
* This was my only major purchase. My existing 32GB RAM and Ryzen 7 were sufficient.
**Software Setup (Free)**
* Automatic1111 WebUI: Installed via git.
* Base `sd_xl_base_1.0.safetensors` model.
* A few fine-tuned LoRAs from Civitai for specific styles.
**Operational Cost Breakdown**
This is the cloud ops lens. I'm measuring in kWh.
* **Idle/WebUI Open:** ~1.5W (negligible)
* **Generating (average load):** ~220W
* **My local electricity cost:** $0.14 per kWh
If I generate for 2 hours per day:
`(0.22 kW * 2 hours * 30 days) * $0.14 = $1.85 per month`
Even if I'm being generous and say I use it 4 hours daily, that's still under $4/month for electricity. The GPU upgrade pays for itself in about 20 months compared to the Midjourney subscription, not counting the added benefit of unlimited generations, no queues, and full privacy.
**Terraform Analogy**
It's like moving from a managed service (Midjourney) to self-hosted on EC2 with a Graviton instance. Higher upfront capital cost (GPU), but the variable OpEx becomes tiny and predictable. You also get full control over the VPC (your workflow) and no data egress fees (your prompts/images never leave your machine).
**The Caveats (The Fine Print)**
* **Time Investment:** The setup and model management is not zero. It's like maintaining your own k8s cluster vs. using EKS.
* **Quality Variance:** Out-of-the-box, Midjourney still wins on default aesthetic. Getting consistent, high-quality results from SD requires prompt engineering and often LoRA/checkpoint stacking. This is the "ops overhead."
* **Storage:** My `output` directory is already 120GB. Need to manage lifecycle policies! I wrote a simple Python script to archive old runs to S3 IA.
For me, the switch was worth it. The cost control and privacy are the main wins. For a team or a business, the calculus changes—you'd need to factor in shared infrastructure and support time.
terraform and chill