Windows Home Server on HP 15s — Part 5: Cost Analysis, Performance Audit, and Hybrid Architecture
This is the engineering case that justifies everything in the previous four parts. We will do the numbers rigorously — not optimistically — and understand exactly where your repurposed laptop stands against commercial alternatives.
1. Electricity Cost: The Real Operating Expense
Your HP 15s-du2077TU's primary ongoing cost as a server is electricity. Unlike a cloud VPS, there are no monthly subscription fees. Let us calculate the exact cost.
1.1 Power Draw Measurements
The Intel Core i5-1035G1 has a configurable TDP of 15W (base) to 25W (boost). In practice, a laptop running as a server draws from the wall:
| Operating State | Wall Power Draw |
|---|---|
| Idle (all Docker services, no AI inference) | ~10–14 W |
| Light load (Nextcloud sync, n8n workflows) | ~15–20 W |
| Medium load (CPU LLM inference, phi3.5) | ~22–28 W |
| Heavy load (8B model inference + other tasks) | ~28–35 W |
| Display on (additional) | +3–5 W |
| Weighted average (server mode, lid closed) | ~13–15 W |
For our calculations, we use a conservative average of 14 W. This accounts for the inference periods, idle background services, and periodic Windows Update activity.
1.2 Monthly Energy Consumption
Formula: Energy (kWh) = Power (W) × Hours ÷ 1000
Monthly consumption:
14 W × 24 hours × 30 days ÷ 1000 = 10.08 kWh/month
Annual consumption:
10.08 × 12 = 120.96 kWh/year
(For reference: an average Indian household consumes 90–200 kWh/month)
Your server adds approximately 10 kWh to your monthly bill.
1.3 State-Wise Monthly Cost in India (2026)
India uses a telescopic slab pricing system — the rate you pay per unit depends on your total household consumption. If your household already uses 300+ units/month, your server's 10 units will be charged at the highest slab rate.
| State | Rate at 200+ units/month | Server Cost/Month | Server Cost/Year |
|---|---|---|---|
| Maharashtra | ₹8.50–₹12.83/unit | ₹85–₹129 | ₹1,020–₹1,548 |
| Delhi | ₹5.00–₹8.00/unit | ₹50–₹80 | ₹600–₹960 |
| Tamil Nadu | ₹5.60–₹11.05/unit | ₹56–₹111 | ₹672–₹1,332 |
| Karnataka | ₹5.45–₹8.10/unit | ₹55–₹81 | ₹660–₹972 |
| Uttar Pradesh | ₹5.50–₹8.00/unit | ₹55–₹80 | ₹660–₹960 |
| Gujarat | ₹4.45–₹7.30/unit | ₹45–₹73 | ₹540–₹876 |
| West Bengal | ₹5.49–₹8.50/unit | ₹55–₹85 | ₹660–₹1,020 |
| Average | ~₹7/unit | ~₹70/month | ~₹840/year |
Key insight: At the Indian average of ₹7/unit, running the HP 15s as a 24/7 server costs approximately ₹70 per month in electricity.
This is less than a single cup of coffee at Starbucks.
2. Three-Year Total Cost of Ownership (TCO) Analysis
TCO includes: hardware acquisition (amortized), electricity, and any software/service costs.
2.1 HP 15s-du2077TU TCO Breakdown
One-time Hardware Costs (already owned):
Original laptop price (2020): ₹48,000
16 GB RAM upgrade (8 GB × 2): ₹4,000 (approximate current market price)
Vertical laptop stand: ₹800
Surge protector/UPS (recommended): ₹2,500
──────────────────────────────────────────────
Total Hardware Investment: ₹55,300
If the laptop was already owned (bought for personal use):
Marginal cost of converting to server: ₹7,300 (RAM + stand + UPS)
3-Year Ongoing Costs:
Electricity (₹70/month × 36 months): ₹2,520
Domain name (if not owned): ₹600–₹2,000/year × 3 = ₹6,000
Backblaze B2 storage (~5 GB): ₹0 (free tier)
Cloudflare Tunnel: ₹0 (free)
Software licenses: ₹0 (all open-source)
──────────────────────────────────────────────
Total 3-Year Operating Cost: ₹8,520–₹11,520
3-Year Total (hardware already owned):
₹7,300 (RAM + accessories) + ₹8,520 (operating) = ₹15,820
3-Year Total (hardware freshly bought):
₹55,300 + ₹8,520 = ₹63,820
2.2 Commercial VPS Comparison: What the Same Money Buys
Let us compare three tiers that provide roughly equivalent capability to what our home server delivers:
Tier 1: Entry Level VPS (basic self-hosting without AI)
| Provider | Plan | Monthly Cost | 3-Year Cost | RAM | Storage |
|---|---|---|---|---|---|
| Hetzner Cloud CPX11 | 3 vCPU, 4 GB | €4.85 (~₹450) | ₹16,200 | 4 GB | 40 GB SSD |
| Hostinger KVM1 | 1 vCPU, 4 GB | ₹720/mo | ₹25,920 | 4 GB | 50 GB NVMe |
| AWS Lightsail | 2 vCPU, 4 GB | $18 (~₹1,500) | ₹54,000 | 4 GB | 80 GB SSD |
| HP 15s server | 4C/8T, 16 GB | ₹70/mo | ₹2,520 | 16 GB | 1.25 TB |
At entry level, the HP 15s dominates on every dimension.
Tier 2: Mid-Range VPS (capable of AI inference, but not local)
Note: VPS providers cannot run local LLM inference efficiently because they do not provide GPU access at this price range. If you want AI inference on a VPS, you need either GPU instances (expensive) or you use cloud APIs (more expensive).
| Provider | Plan | Monthly Cost | 3-Year Cost |
|---|---|---|---|
| Hetzner CPX41 | 8 vCPU, 16 GB | €14.63 (~₹1,350) | ₹48,600 |
| Hostinger KVM4 | 4 vCPU, 16 GB | ₹3,200/mo | ₹1,15,200 |
| AWS Lightsail 16GB | 4 vCPU, 16 GB | $80 (~₹6,700) | ₹2,41,200 |
| HP 15s server | 4C/8T, 16 GB | ₹70/mo | ₹2,520 |
For a 16 GB equivalent VPS, the 3-year cost difference is staggering.
Tier 3: AI-Capable Cloud (with actual LLM inference)
If you wanted to replicate the local AI capability (running phi3.5 or 8B models) on cloud infrastructure, you would need GPU instances:
| Provider | GPU Plan | Monthly Cost | 3-Year Cost |
|---|---|---|---|
| AWS G4dn.xlarge (T4 GPU) | 4 vCPU, 16 GB, T4 16GB | ₹11,34,000 | |
| RunPod (community GPU) | RTX 3090 on demand | ~₹2,500–₹8,000 | ₹90,000–₹2,88,000 |
| Groq API (cloud LLM) | ~1M tokens/month | ₹75,600 | |
| HP 15s (local) | Real local GPU (iGPU) | ₹70/mo | ₹2,520 |
Local inference wins on cost. The tradeoff is speed (3–15 t/s vs. 100+ t/s on a dedicated GPU), but for personal use, that is acceptable.
2.3 3-Year Savings Summary
Comparison: HP 15s Home Server vs. Hetzner CPX41 (closest equivalent)
Hetzner CPX41 (3 years): ₹48,600
HP 15s operating cost (3 years): ₹2,520
────────────────────────────────────────────────
Savings vs. Hetzner: ₹46,080
Comparison: HP 15s Home Server vs. AWS Lightsail 16GB (3 years)
AWS Lightsail 16 GB (3 years): ₹2,41,200
HP 15s operating cost (3 years): ₹2,520
────────────────────────────────────────────────
Savings vs. AWS: ₹2,38,680 (≈ ₹2.4 Lakh)
Including hardware investment (RAM + accessories):
Net savings vs. Hetzner: ₹46,080 - ₹7,300 = ₹38,780
Net savings vs. AWS: ₹2,38,680 - ₹7,300 = ₹2,31,380
The payback period for the RAM upgrade investment (₹4,000) vs. the cheapest comparable VPS (Hetzner ₹1,350/month) is less than 4 months.
3. Performance Audit: WSL2 vs. Bare-Metal Linux
For readers who want to know exactly what they sacrifice by staying on Windows instead of installing bare-metal Ubuntu Server:
3.1 CPU Performance
| Benchmark | WSL2 (Windows 10) | Bare-Metal Ubuntu | Difference |
|---|---|---|---|
| sysbench CPU (events/s) | ~12,400 | ~12,700 | -2.4% |
| Node.js compute | ~96% of native | 100% | -4% |
| Python compute | ~97% of native | 100% | -3% |
| Docker image build | ~94% of native | 100% | -6% |
| LLM token speed | Identical | Identical | 0% (memory-bound) |
CPU overhead is negligible for server workloads. The ~3–5% difference is imperceptible in production use.
3.2 Memory Overhead
| Metric | WSL2 | Bare-Metal | Impact |
|---|---|---|---|
| Base OS overhead | ~2.8 GB (Windows) | ~180 MB (Ubuntu) | -2.6 GB usable |
| Effective container RAM | ~13 GB (of 16) | ~15.8 GB (of 16) | -2.8 GB |
| RAM for AI models | Up to ~10 GB | Up to ~13 GB | Can't run 13B |
The 2.8 GB Windows overhead is the most significant real trade-off. On 16 GB, you can still run 7B–8B models comfortably. The 13B size class is borderline (possible with model unloading everything else, risky) vs. comfortable on bare metal.
3.3 Disk I/O Performance
| Access Pattern | WSL2 | Bare-Metal | Difference |
|---|---|---|---|
| Internal VHDX sequential read | ~1,400 MB/s | ~1,500 MB/s | -7% |
| Internal VHDX random 4K read | ~190K IOPS | ~200K IOPS | -5% |
| Cross-OS /mnt/c sequential read | ~120 MB/s | N/A | -92% vs NVMe |
| Docker build (volumes in VHDX) | Near-native | Native | -5% |
The critical rule bears repeating: Never store active Docker volumes
on /mnt/c/ or any cross-OS mount. Always store them inside the WSL2
VHDX (~/server/). This is the single most impactful performance decision.
3.4 WSL2 Latency Characteristics
| Operation | WSL2 Latency | Bare-Metal Latency | Notes |
|---|---|---|---|
| Container-to-container HTTP | ~0.2 ms | ~0.1 ms | Both on same network |
| Container-to-Windows host HTTP | ~1–2 ms | N/A | WSL2 NAT bridge |
| Disk fsync (database writes) | ~0.5–1 ms | ~0.3–0.8 ms | Acceptable for SQLite |
| systemctl service start | ~300 ms | ~150 ms | systemd overhead |
For web application response times (where your services add 5–50 ms of business logic anyway), these sub-millisecond differences are invisible.
3.5 The Verdict: When to Choose Which
Stay on Windows + WSL2 if:
- You use the laptop as a personal computer and need Windows for specific applications (Office, software that requires Windows)
- You prefer not to reinstall the OS
- Your workload fits comfortably in 13 GB of container RAM
- You do not need models larger than 8B parameters
Switch to bare-metal Ubuntu Server if:
- This laptop is 100% dedicated as a server (never used as a desktop)
- You want maximum container density and RAM headroom for 13B+ models
- You prefer a simpler architecture (no WSL2 layer, no Windows quirks)
- You are comfortable with an SSH-only workflow
4. 15-Dimension Evaluation Matrix
A systematic comparison of the self-hosted approach vs. cloud VPS:
| Dimension | HP 15s (WSL2) | Hetzner VPS | AWS Lightsail |
|---|---|---|---|
| Monthly cost | ₹70 | ₹1,350 | ₹6,700 |
| RAM available | ~13 GB | 16 GB | 16 GB |
| Storage | 1.25 TB | 40 GB | 80 GB |
| LLM inference | ✅ Yes (CPU, local) | ❌ No GPU | ❌ No GPU |
| Network speed | LAN: 1 Gbps / WAN: ISP speed | 1 Gbps | 1 Gbps |
| Uptime guarantee | Depends on power/ISP | 99.9% SLA | 99.9% SLA |
| Data privacy | ✅ Your hardware | ⚠️ EU jurisdiction | ⚠️ US company |
| Backup control | ✅ Full control | ✅ Backups available | ✅ Snapshots |
| Physical security | Your premises | Data center | Data center |
| Setup complexity | High (this guide!) | Low-Medium | Low |
| Free tier possible | ✅ Yes (just power) | ❌ No | ❌ No |
| Data egress cost | ₹0 | ₹0 | ₹8.50/GB |
| Scalability | Fixed hardware | Resize with click | Resize with click |
| ISP dependency | High (CGNAT risk) | None (datacenter) | None (datacenter) |
| Energy efficiency | 14 W | ~30 W/4 vCPU | Shared, unknown |
Net assessment: For individuals in India who already own compatible hardware and can tolerate the setup complexity, self-hosting on the HP 15s is dramatically more cost-effective, more private, and surprisingly more capable (local AI) than any commercial VPS at equivalent price points.
5. Hybrid Architecture: Best of Both Worlds
Pure self-hosting has one real weakness: availability during power outages, ISP downtime, or laptop failure. The solution is a hybrid architecture that uses free cloud services to cover the gaps.
┌─────────────────────────────────────────────────────────────────────┐
│ HYBRID ARCHITECTURE OVERVIEW │
│ │
│ PUBLIC INTERNET │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────┐│
│ │ CLOUDFLARE EDGE (Global CDN — Free) ││
│ │ ├── DNS (authoritative, global) ││
│ │ ├── WAF (Web Application Firewall — Free tier) ││
│ │ ├── CDN Cache (static assets cached at edge) ││
│ │ ├── Pages (blog.yourdomain.com → Cloudflare Pages, free) ││
│ │ └── Tunnel (dynamic apps → HP 15s home server) ││
│ └────────────────────────────────────┬────────────────────────────┘│
│ │ │
│ ┌────────────────────┼────────────────────┐ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────┐ ┌──────────────────┐ ┌─────────────┐ │
│ │ STATIC TIER │ │ DYNAMIC TIER │ │ DATA TIER │ │
│ │ (Cloud Free)│ │ (HP 15s Local) │ │ (Hybrid) │ │
│ │ │ │ │ │ │ │
│ │ Cloudflare │ │ Nextcloud │ │ Neon DB │ │
│ │ Pages │ │ Vaultwarden │ │ (Postgres │ │
│ │ (blog, │ │ n8n workflows │ │ serverless │ │
│ │ portfolio) │ │ Odysseus agents │ │ free tier) │ │
│ │ │ │ Ollama (AI) │ │ │ │
│ │ GitHub │ │ Open WebUI │ │ Backblaze │ │
│ │ (code, │ │ Flowise │ │ B2 (backups │ │
│ │ CI/CD) │ │ Uptime Kuma │ │ ~free 10GB)│ │
│ └─────────────┘ └──────────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
5.1 Tier 1: Static Assets → Cloudflare Pages (Free)
Your blog, portfolio, documentation site, and any static frontend assets should be hosted on Cloudflare Pages — not on your home server. Reasons:
- Cloudflare Pages is free (unlimited static asset bandwidth).
- It is globally distributed across 300+ PoPs — ~20 ms latency anywhere.
- If your home server is offline, static pages remain available.
- Zero configuration SSL/TLS.
Deployment:
# In your blog repository (e.g., blog.oriz.in)
# .github/workflows/deploy.yml
name: Deploy to Cloudflare Pages
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install dependencies and build
run: npm ci && npm run build
- name: Publish to Cloudflare Pages
uses: cloudflare/pages-action@v1
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
projectName: blog-oriz-in
directory: ./dist
gitHubToken: ${{ secrets.GITHUB_TOKEN }}
5.2 Tier 2: Dynamic Apps → Home Server (via Cloudflare Tunnel)
Heavy, stateful applications belong on your home server:
- Nextcloud — 1 TB of local storage impossible on free cloud tiers.
- Ollama + Open WebUI — no cloud provider gives you local inference.
- Vaultwarden — your password vault must be under your control.
- n8n — complex workflows requiring persistent state and file access.
- Odysseus — agent workspace requiring local model and file access.
5.3 Tier 3: Serverless Database → Neon DB (Free Tier)
For applications that need a PostgreSQL database but where you do not want to manage the DB server yourself (e.g., a side project API):
Neon DB Free Tier (2026):
- 0.5 GB storage
- 190 compute hours/month
- Automatic scaling to zero (no idle cost)
- PostgreSQL 16 compatible
- Connection string format compatible with any pg client
# Use Neon for API databases while keeping Nextcloud/n8n local
# Example: a simple link shortener API on Cloudflare Workers + Neon
# In your Cloudflare Worker:
# DATABASE_URL = "postgresql://user:[email protected]/neondb?sslmode=require"
5.4 Failure Mode Analysis: What Fails When
Understanding what breaks under each failure scenario is essential for planning:
| Failure Scenario | Static Sites | Dynamic Apps | AI Features | Recovery Time |
|---|---|---|---|---|
| Home Internet goes down | ✅ Still up | ❌ Down | ❌ Down | ISP SLA (usually 1–4 hrs) |
| BSNL/Jio CGNAT issue | ✅ Still up | ❌ Tunnel down | ❌ Down | Fix: re-auth tunnel |
| Windows Update restart | ✅ Still up | ~5 min down | ~5 min down | Autologon restores |
| Power outage (no UPS) | ✅ Still up | ❌ Hard crash | ❌ Down | Need AC + Autologon |
| Laptop hardware failure | ✅ Still up | ❌ Down | ❌ Down | Buy new hardware |
| Cloudflare outage | ⚠️ May be affected | ❌ Tunnel down | ✅ LAN works | ~rare, short |
| SSD failure | ✅ Still up | ❌ Data at risk | ❌ Down | Restore from Restic |
Mitigation strategies:
-
Power outages: A ₹2,500 mini-UPS (like APC Back-UPS BX600C) provides 10–15 minutes of runtime at 14W — enough to survive 99% of Indian power cuts.
-
Hardware failure: Keep a weekly Restic backup to B2. If the laptop dies, restore to any machine with WSL2 in under 2 hours.
-
ISP downtime: Secondary mobile hotspot (Jio/Vi/Airtel) + cloudflared can failover. Or accept that personal services go down when internet does — for home use, this is usually fine.
5.5 Monthly Cost Summary: Full Hybrid Stack
Complete Hybrid Architecture — Monthly Operating Cost (India):
HP 15s electricity: ₹70
Domain name (amortized): ₹50 (₹600/year)
Cloudflare Tunnel: ₹0 (free)
Cloudflare Pages: ₹0 (free)
GitHub (private repos): ₹0 (free with up to 2,000 CI mins)
Neon DB (free tier): ₹0 (free up to 0.5 GB)
Backblaze B2 (up to 10 GB): ₹0 (free)
────────────────────────────────────
TOTAL: ₹120/month
For comparison:
A comparable Hetzner + Cloudflare + managed DB stack: ₹3,500–₹5,000/month
A comparable AWS stack: ₹8,000–₹15,000/month
Annual savings vs. Hetzner equivalent: ₹40,560–₹58,560
Annual savings vs. AWS equivalent: ₹93,360–₹1,76,160
6. The Final Complete Service Inventory
Here is everything you now run on a ₹70/month home server:
┌─────────────────────────────────────────────────────────────────────┐
│ COMPLETE HP 15s HOME SERVER — SERVICE INVENTORY │
├─────────────────────────────────┬───────────────────────────────────┤
│ Service │ Cloud Equivalent (Monthly cost) │
├─────────────────────────────────┼───────────────────────────────────┤
│ Nextcloud (cloud storage) │ Google One 100 GB: ₹170/mo │
│ Vaultwarden (password manager) │ 1Password Family: ₹450/mo │
│ n8n (workflow automation) │ Make.com Starter: ₹1,900/mo │
│ Open WebUI + Ollama (AI chat) │ ChatGPT Plus: ₹1,700/mo │
│ Odysseus (AI workspace) │ No direct equivalent; Claude Pro: ₹1,700/mo |
│ Flowise (AI pipeline builder) │ LangSmith Plus: ₹2,500/mo │
│ Uptime Kuma (monitoring) │ Better Uptime Basic: ₹400/mo │
│ Portainer (container mgmt) │ Docker Hub Pro: ₹700/mo │
│ Qdrant (vector database) │ Qdrant Cloud Starter: ₹1,700/mo │
│ CloudFlare Tunnel │ Cloudflare Zero Trust: ₹0 │
├─────────────────────────────────┼───────────────────────────────────┤
│ Combined Cloud Equivalent: │ ₹11,220/month │
│ Your Cost: │ ₹70/month (electricity only) │
│ Monthly Savings: │ ₹11,150/month │
│ Annual Savings: │ ₹1,33,800/year │
└─────────────────────────────────┴───────────────────────────────────┘
7. Roadmap: What to Add Next
This guide covers the foundation. As you grow comfortable with the stack, here are logical next steps:
7.1 Immich — Self-Hosted Google Photos
If you use Google Photos, Immich replaces it with local storage + machine learning for face recognition and object search. With your 1 TB HDD, you can store years of photos.
# Add to docker-compose.yml
immich_server:
image: ghcr.io/immich-app/immich-server:release
container_name: immich_server
volumes:
- /mnt/d/server-data/photos:/usr/src/app/upload
ports:
- "127.0.0.1:2283:2283"
environment:
DB_HOSTNAME: immich_postgres
DB_USERNAME: immich
DB_PASSWORD: immich_password
DB_DATABASE_NAME: immich
depends_on:
- immich_postgres
- immich_redis
networks:
- server_net
7.2 Jellyfin — Self-Hosted Streaming
Jellyfin streams your local movie and TV collection with full library management, subtitle support, and remote access through Cloudflare Tunnel. The i5-1035G1 supports Intel Quick Sync Video for hardware-accelerated transcoding — though this requires passing the GPU through to the Docker container (complex on WSL2; easier on bare-metal Linux).
7.3 Gotify — Self-Hosted Push Notifications
Replace Telegram bots for alerts with Gotify — a lightweight notification server with Android/iOS apps. All health alerts, backup completions, and system events route through your own notification server.
7.4 Gitea / Forgejo — Self-Hosted Git
For code that is too sensitive for GitHub (internal tooling, scripts with API keys, private work), Gitea provides a full GitHub-like experience: repositories, issues, CI/CD via Gitea Actions, and web-based code editing.
7.5 Tailscale — Private WireGuard Mesh Network
Cloudflare Tunnel gives you public HTTPS access. Tailscale gives you a private VPN mesh that allows your phone, other computers, and devices to access the server directly via private IP — bypassing Cloudflare entirely. Free for up to 100 devices.
# Install Tailscale on Windows
winget install --id Tailscale.Tailscale -e --silent
# Follow the login prompt
# Your HP 15s gets a stable private IP like 100.x.x.x
# Access Portainer at http://100.x.x.x:9000 from your phone
Final Summary: Series Complete
Over five parts, we have:
| Part | What We Built |
|---|---|
| 1 | Foundation: Windows power config, WSL2, native Docker Engine |
| 2 | Networking: Cloudflare Tunnel, Caddy proxy, core services |
| 3 | AI Stack: Ollama + Open WebUI + Odysseus + Flowise + Qdrant |
| 4 | Operations: Self-healing monitoring, Telegram alerts, Restic backup |
| 5 | Analysis: Electricity cost, 3-year TCO, hybrid architecture |
Your HP 15s-du2077TU, purchased in 2020 for everyday tasks, now runs the equivalent of ₹11,220/month worth of cloud services — for ₹70/month in electricity.
The laptop that was gathering dust is now a private cloud, an AI research station, an automation engine, a password vault, and a file server — all under your control, in your home, on hardware you already own.
This series was written for the HP 15s-du2077TU (i5-1035G1, 16 GB DDR4-2666, 256 GB NVMe + 1 TB HDD, Windows 10 Home). All scripts and configurations are tested against this exact hardware profile.
Comments
Comments are powered by giscus. Set
PUBLIC_GISCUS_REPO_IDandPUBLIC_GISCUS_CATEGORY_IDin your environment to enable them.