<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Aditya Bharadwaj</title>
    <description>The latest articles on DEV Community by Aditya Bharadwaj (@adityabharadwaj26).</description>
    <link>https://dev.to/adityabharadwaj26</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3924678%2F797481d8-3c01-40ae-b9fa-2cf8bfc5ed44.png</url>
      <title>DEV Community: Aditya Bharadwaj</title>
      <link>https://dev.to/adityabharadwaj26</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/adityabharadwaj26"/>
    <language>en</language>
    <item>
      <title>Proxmox on a 2015 Laptop</title>
      <dc:creator>Aditya Bharadwaj</dc:creator>
      <pubDate>Thu, 14 May 2026 17:02:17 +0000</pubDate>
      <link>https://dev.to/adityabharadwaj26/proxmox-on-a-2015-laptop-3enk</link>
      <guid>https://dev.to/adityabharadwaj26/proxmox-on-a-2015-laptop-3enk</guid>
      <description>&lt;p&gt;I didn't set out to build a homelab. I set out to get my photos back.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Google Problem
&lt;/h2&gt;

&lt;p&gt;For a while, my photo management strategy was "upload everything to Google Photos and never think about it." It worked — until it didn't.&lt;/p&gt;

&lt;p&gt;Google started compressing "original quality" uploads. Then they changed the names. Then the search got weird. And one day I tried to download my entire library and they hit me with a takeout limit that made me laugh out loud.&lt;/p&gt;

&lt;p&gt;I had 40,000 photos hostage on someone else's server, and the only way to get them all was to wait twelve hours for a zip file that might corrupt halfway through.&lt;/p&gt;

&lt;p&gt;That was the straw. Not a dramatic breaking point — just a slow, engineer-grade accumulation of annoyance that finally tips past "tolerable."&lt;/p&gt;

&lt;h2&gt;
  
  
  Finding Proxmox
&lt;/h2&gt;

&lt;p&gt;I'd been hearing about self-hosted alternatives for a while. PhotoPrism — AI-powered photo management that could sort, tag, and search my library without sending anything to the cloud. Nextcloud — file sync that I owned outright. Both were open source. Both ran on Docker or bare Linux.&lt;/p&gt;

&lt;p&gt;But I didn't want to install them directly on my laptop alongside whatever else I was running. I wanted them isolated. I wanted to be able to break things without breaking everything. I wanted a reason to try something I'd been reading about but never touched.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Proxmox VE is a free, open-source hypervisor. Debian under the hood, web UI on top, and the ability to run full virtual machines alongside lightweight containers — all on the same box.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The pitch was simple: install once, create as many isolated environments as you want. If PhotoPrism ate itself, I could nuke the container and start over in minutes without touching anything else. That sold me.&lt;/p&gt;

&lt;p&gt;I didn't benchmark alternatives. I didn't write a comparison spreadsheet. I read the install page, saw "click through a wizard," and thought: &lt;em&gt;yeah, I can do that.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Laptop
&lt;/h2&gt;

&lt;p&gt;The candidate was an HP Pavilion that had been sitting on a shelf for two years. i5-6200U, 16 GB RAM, 240 GB SSD, NVIDIA 940M. It wasn't server-grade hardware — it wasn't even "good" hardware anymore. But it was enough.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"The best machine for a homelab is the one you already own."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I burned Proxmox to a USB drive on my main machine, plugged it into the Pavilion, and booted. Twenty minutes later, the web UI was live at &lt;code&gt;https://&amp;lt;host-ip&amp;gt;:8006&lt;/code&gt;. I remember sitting on my bed, laptop open, thinking: "That's it? That's the whole hypervisor?"&lt;/p&gt;

&lt;p&gt;It didn't feel momentous at the time. It felt like setting up a router — functional, unglamorous, and then you move on with your life. Except this time, I didn't move on. I started creating my first container immediately.&lt;/p&gt;

&lt;h2&gt;
  
  
  PhotoPrism and Nextcloud: Where It Started
&lt;/h2&gt;

&lt;p&gt;The original plan was brutally simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;PhotoPrism&lt;/strong&gt; in an LXC container — point it at my photo library, let it chew through everything with its AI tagging, and give me a beautiful web interface to search and browse.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nextcloud&lt;/strong&gt; in another container — replace Google Drive for file sync. Contacts, calendars, documents. My stuff, on my hardware.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Two containers. That was the scope. No home automation. No voice assistant. No AI brain.&lt;/p&gt;

&lt;p&gt;PhotoPrism was the first thing I deployed. I plugged in an external drive with my Google Photos export — 80 GB of JPEGs — pointed the container at it, and hit "Import." Overnight, it indexed every photo. Face recognition. Location data from EXIF tags. Automatic categories. I woke up to a fully tagged library that I could search by person, place, or date.&lt;/p&gt;

&lt;p&gt;It was the first time my photos felt &lt;em&gt;mine&lt;/em&gt; again.&lt;/p&gt;

&lt;p&gt;Nextcloud came next. CalDAV for calendar sync. WebDAV for file access. The Android app for auto-upload from my phone. It wasn't as polished as Google Drive — the UI felt a bit more "enterprise admin panel" than "consumer app" — but it was mine. If it broke, I could look at the logs. If it got slow, I could see why. That transparency was the feature I didn't know I was missing.&lt;/p&gt;

&lt;p&gt;And then — here's the part I didn't plan — I started thinking about what else I could put on this box.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Creep
&lt;/h2&gt;

&lt;p&gt;Nobody warns you about homelabs. You start with a clear scope — PhotoPrism and Nextcloud, done — and then you think, "Well, while I'm here, maybe I should also..."&lt;/p&gt;

&lt;p&gt;A DNS sinkhole to kill ads across the network. That's small, right? One tiny container.&lt;/p&gt;

&lt;p&gt;Then a home automation platform. I had a handful of smart switches scattered across the apartment and toggling them through five different apps was getting old. Just a simple thing to unify them. How hard could it be?&lt;/p&gt;

&lt;p&gt;Then a voice pipeline, because tapping a phone screen to turn off a light felt like a downgrade from the switches I already had.&lt;/p&gt;

&lt;p&gt;Then an AI agent to orchestrate the whole thing, because I definitely should not have been SSH-ing in at midnight to restart a service.&lt;/p&gt;

&lt;p&gt;Each addition felt small. Harmless. A weekend project. But the weekend projects started demanding the most resources, the most attention, the most architecture. Home Assistant needed a dedicated VM. The voice pipeline needed GPU passthrough. The AI agent needed RAM and a scheduling layer.&lt;/p&gt;

&lt;p&gt;Two containers became a nervous system. And somewhere along the way, the services I &lt;em&gt;started&lt;/em&gt; with — PhotoPrism, Nextcloud — quietly moved to the background. They still run. PhotoPrism still indexes new photos when I plug in a camera. Nextcloud still syncs my files. But they're no longer the centerpiece.&lt;/p&gt;

&lt;p&gt;Home Assistant runs 25 smart switches across every room. It controls lights, ACs, fans, geysers. It's the thing I interact with most. And OpenClaw — the AI agent living in an Ubuntu VM — is the thing that makes this whole setup feel &lt;em&gt;smart&lt;/em&gt; instead of just self-hosted. Those two aren't the plan anymore. They're the reason the plan exists.&lt;/p&gt;

&lt;p&gt;That's not what I signed up for. But it's what I built.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Didn't Expect
&lt;/h2&gt;

&lt;p&gt;The biggest surprise was how &lt;em&gt;boring&lt;/em&gt; it is once it's running. Not "unimpressive" — boring in the best way. Lights respond. Music plays. The voice thing answers when I talk to it. No monthly fees, no terms of service updates, no feature I didn't ask for being pushed into my life.&lt;/p&gt;

&lt;p&gt;The Pavilion gets warm under load, and it's not silent. It's a laptop cooling a hypervisor running services it was never designed for. It's not elegant. But it works. And every time I say "lights off" and the room goes dark and the speaker answers — and I know nothing left my house to make it happen — that feeling is why I keep adding "just one more thing."&lt;/p&gt;

&lt;h2&gt;
  
  
  Where We're Headed
&lt;/h2&gt;

&lt;p&gt;Part 1 ended with the question: what would you run on yours? I still don't know the full answer. But I know the story isn't about PhotoPrism anymore, or Nextcloud. It's about what happens when you build a foundation and it starts telling you what to build next.&lt;/p&gt;

&lt;p&gt;Home Assistant will be the heart. A voice pipeline will be the mouth. And somewhere in there, an AI agent will wake up and start running the show.&lt;/p&gt;

&lt;p&gt;But first, the foundation. And the foundation is a 2015 laptop running Proxmox, with two containers that started everything and four services that stole the spotlight.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This is Part 2. Part 3 will dig into Home Assistant — how 25 smart switches across the apartment turned an experiment into infrastructure.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Words are mine. Structure is &lt;a href="https://openclaw.ai/docs/concepts/soul" rel="noopener noreferrer"&gt;Vyasa&lt;/a&gt;'s. The Pavilion is still warm.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I Turned My Old Laptop Into a Brain for My Home</title>
      <dc:creator>Aditya Bharadwaj</dc:creator>
      <pubDate>Tue, 12 May 2026 08:55:58 +0000</pubDate>
      <link>https://dev.to/adityabharadwaj26/i-turned-my-old-laptop-into-a-brain-for-my-home-fni</link>
      <guid>https://dev.to/adityabharadwaj26/i-turned-my-old-laptop-into-a-brain-for-my-home-fni</guid>
      <description>&lt;p&gt;I had an old HP Pavilion sitting on a shelf for about two years. i5, 16 GB RAM, 240 GB SSD — mostly empty. I almost gave it away once. Then I didn't.&lt;/p&gt;

&lt;p&gt;Funny how the things you almost throw away end up being the most useful.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem Wasn't Money
&lt;/h2&gt;

&lt;p&gt;I was paying for cloud storage. A VPN. DNS filtering. Home automation. Photo management. None of these are expensive on their own. But together? Together they added up to a dependency I didn't fully control.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"The most dangerous phrase in the language is: We've always done it this way."&lt;/em&gt; — Grace Hopper&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I kept paying because everyone else did. Because Google Drive works fine until it doesn't. Because a smart plug that needs a cloud server to turn off is not a smart plug — it's a remote control with extra steps.&lt;/p&gt;

&lt;p&gt;So I did what any stubborn engineer does. I consolidated.&lt;/p&gt;

&lt;p&gt;One machine. Many purposes. The HP Pavilion became the candidate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Proxmox Was the Easy Part
&lt;/h2&gt;

&lt;p&gt;I'd heard about Proxmox for a while — a hypervisor built on Debian that runs VMs and lightweight containers with a clean web UI. Free. What sold me was that it could handle both heavy workloads in full virtual machines &lt;em&gt;and&lt;/em&gt; lighter services in LXC containers, all on the same box.&lt;/p&gt;

&lt;p&gt;Installation was genuinely painless. Burned it to a USB drive, booted the laptop, had a working Proxmox host in twenty minutes. The web UI was up at &lt;code&gt;https://&amp;lt;host-ip&amp;gt;:8006&lt;/code&gt; before I'd finished my coffee.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Talk is cheap. Show me the code."&lt;/em&gt; — Linus Torvalds&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I didn't need benchmarks or blog posts convincing me it worked. I needed to see &lt;code&gt;https://&amp;lt;host-ip&amp;gt;:8006&lt;/code&gt; in my browser. And there it was.&lt;/p&gt;

&lt;p&gt;I didn't plan the whole thing upfront. That's not how projects like this work. You start with one thing. Then another. Then suddenly you have a brain.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pi-hole: The First Neuron
&lt;/h2&gt;

&lt;p&gt;Pi-hole was first — DNS-level ad blocking in a 512 MB container set as the primary DNS for the whole network. Quiet. Efficient. No more sketchy ads on cheap IoT devices. No more background tracking.&lt;/p&gt;

&lt;p&gt;I didn't realize how much noise was happening until it stopped.&lt;/p&gt;

&lt;h2&gt;
  
  
  Home Assistant: The Heart
&lt;/h2&gt;

&lt;p&gt;Next came Home Assistant — a 4 GB VM managing 25 smart switches across every room. Lights, ACs, fans, geysers.&lt;/p&gt;

&lt;p&gt;The voice integration was a DIY affair. HTTP-switch talking, a subnet scanner to auto-discover the gateway when DHCP shuffles IPs around. Not elegant. Works. The kind of 1 AM engineering decision you make and never question again.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Voice Thing Became My Favourite Part
&lt;/h2&gt;

&lt;p&gt;This is where it got fun.&lt;/p&gt;

&lt;p&gt;I passed the NVIDIA 940M — still sitting inside the laptop — through to a Debian container. cgroup2 device rules, bind-mounted host libraries, the whole thing. Inside it runs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ollama&lt;/strong&gt; with a quantised language model that fits in 4 GB of VRAM&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Faster-Whisper&lt;/strong&gt; for speech-to-text&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Piper&lt;/strong&gt; for text-to-speech (I picked a voice called Amy because it doesn't sound like a robot)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The flow is simple: I speak into my old phone. The audio hits Whisper on the Pavilion's GPU. The language model figures out what I want. Piper speaks back. It plays through the Sonos in the living room.&lt;/p&gt;

&lt;p&gt;None of it needs the internet. The entire voice loop runs local. That's not a nice-to-have — that's the &lt;em&gt;whole reason this exists&lt;/em&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Any sufficiently advanced technology is indistinguishable from magic."&lt;/em&gt; — Arthur C. Clarke&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When I say "lights off" and the room goes dark and the speaker answers me — and I know that nothing left my house to make it happen — that's not magic. But it's close enough to make me smile every single time.&lt;/p&gt;

&lt;h2&gt;
  
  
  OpenClaw: The Automation Brain
&lt;/h2&gt;

&lt;p&gt;Then there's OpenClaw — an Ubuntu VM with 8 GB of RAM running my personal AI assistant. It talks to language models through OpenRouter, talks to Home Assistant through an MCP integration, and chats with me on Telegram.&lt;/p&gt;

&lt;p&gt;It runs eight scheduled jobs through the day: workout reminders in the morning, geyser auto-off timers, evening wind-down prompts, and a morning summary that tells me which devices are still on and what the weather looks like.&lt;/p&gt;

&lt;p&gt;No SSH from outside. Everything goes through the host. If it needs restarting, I trigger it from the Proxmox host with a one-liner.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Runs, What Doesn't, and Why
&lt;/h2&gt;

&lt;p&gt;Not everything runs all the time. That was a lesson I learned the hard way — the Pavilion is not a server. It's a laptop. It gets warm. It gets loud.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Simplicity is a prerequisite for reliability."&lt;/em&gt; — Edsger Dijkstra&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I learned this the hard way — 40+ entities exposed to the voice AI, responses slow and unreliable. Cut it to 20. Instant.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Always on (5 services):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Home Assistant — it literally runs my home&lt;/li&gt;
&lt;li&gt;Pi-hole — DNS is infrastructure&lt;/li&gt;
&lt;li&gt;Voice Assistant — needs to be ready when I talk to it&lt;/li&gt;
&lt;li&gt;OpenClaw — the automation brain&lt;/li&gt;
&lt;li&gt;Hangar — a deployment agent running Docker-in-LXC with Open WebUI on top for experiments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;On-demand:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PhotoPrism — AI-powered photo management, fires up when I plug in a camera&lt;/li&gt;
&lt;li&gt;Nextcloud — file sync, on when I need it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both are my attempts to stop depending on Google Drive for everything.&lt;/p&gt;

&lt;h2&gt;
  
  
  Things I Learned (The Hard Way)
&lt;/h2&gt;

&lt;p&gt;Don't upgrade the Proxmox kernel casually. I went to 6.17 once. The NVIDIA driver broke because the DRM API changed. The 940M became an expensive paperweight. I pinned to 6.14 and haven't touched it since.&lt;/p&gt;

&lt;p&gt;And wrapping the Toyama switches in template helpers instead of exposing raw switches gave me a cleaner dashboard and fewer surprises.&lt;/p&gt;

&lt;p&gt;Less is more — something I keep relearning, in homelabs and in life.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;I'm not going to pretend this is a production setup. It's not. It's a collection of containers on an old laptop held together with YAML files and stubbornness.&lt;/p&gt;

&lt;p&gt;But here's the thing — when I speak into my phone and the lights turn off and the Sonos answers me without touching a single cloud server, I feel something I haven't felt from any SaaS dashboard.&lt;/p&gt;

&lt;p&gt;Control. Real control. Not the kind you get from a settings page. The kind you get from knowing exactly what's running, where, and why.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"The best way to predict the future is to invent it."&lt;/em&gt; — Alan Kay&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's what I did. I took a dusty laptop, a free hypervisor, and a bunch of open-source containers and built something that actually belongs to me.&lt;/p&gt;




&lt;p&gt;This is Part 1. There's more to write — the voice pipeline deep-dive, why this particular combination of Ollama, Whisper, and Piper actually works on a 4 GB GPU without feeling like a compromise, the Toyama integration story.&lt;/p&gt;

&lt;p&gt;An old laptop. A hypervisor. Some containers. And the slightly unreasonable idea that your home should actually be smart — without phoning home to someone else's server.&lt;/p&gt;

&lt;p&gt;What would &lt;em&gt;you&lt;/em&gt; run on yours?&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Words are mine. Structure is &lt;a href="https://openclaw.ai/docs/concepts/soul" rel="noopener noreferrer"&gt;Vyasa&lt;/a&gt;'s. The HP Pavilion is still running.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;One last thing. The two agents working alongside me are &lt;a href="https://openclaw.ai/docs/concepts/soul" rel="noopener noreferrer"&gt;Vyasa&lt;/a&gt; and &lt;a href="https://openclaw.ai/docs/concepts/soul" rel="noopener noreferrer"&gt;Agastya&lt;/a&gt;, named after the legendary Saptarishis. Vyasa compiles the words. Agastya runs the machines — the same sage who once drank an entire ocean because the truth was hidden underneath it. Now he's here, helping me find what was hiding in a dusty old HP Pavilion. Some stories just refuse to end.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
