I've been running Pi-hole on an old Raspberry Pi 3 for 3 or 4 years now. If you don't know what Pi-hole is, here's a definition from Wikipedia
Pi-hole is a Linux network-level advertisement and Internet tracker blocking application which acts as a DNS sinkhole and optionally a DHCP server, intended for use on a private network.
It's a great tool to block unwanted ads, tracking, and smart devices (like TVs) phoning home and spying on you.
I also ran PiVPN, which, as you might have guessed, runs a VPN server. Running a VPN server at home is great because whenever I'm out and connected to public Wi-Fi or my data connect, I can connect to my VPN and get all the same blocking and protection I normally get. It also makes it more secure to remote into my desktop and work remotely if I need to.
Pi-hole's web interface notified me that it needed to be updated and as I was doing that process I thought to myself "hey it's been awhile since I updated other software and the OS on that PI, I should probably do that too". That turned out to be a colossal mistake on my part. For some reason, I skipped over the part in guide I was following that clearly indicated that I should back up everything first. Yeah… There's an important reason for that.
I ended up breaking my OS install and had to wipe the whole thing clean. What a great way to spend a weekend (note). Fortunately, a Linux live USB helped me transfer the data off to another drive.
Starting fresh, I thought, I'll use containerized Pi-Hole and VPN so that I know exactly where the data is and can easily back it up.
Initially, I started with a repo called wirehole. This repo has a docker compose file that lets me run Pi-Hole, WireGuard (VPN) and Unbound (a more private DNS resolver) in a container. Next time something goes wrong, I can just use backed up data and spin up new containers. I also added Home Assistant to this setup (more on that later).
It turns out that my poor little Pi that I bought in 2014 wasn't really up for the job. I started looking at the new Pi 5 but as of this writing, it's a bit difficult to get and a bit pricey compared to previous models. Once you add a case, power adapter and cable, the price adds up. I don't need the Pi for any of the "maker" stuff like the GPIO pins. All I wanted was a small form factor PC that could run some containers.
Enter the Beelink EQ12 (not sponsored) it's a mini PC that runs Windows 11, comes with a case, power supply, a 500GB M.2 hard drive and a 4 Core x64 CPU. Having a x64 CPU opens things up to running a lot more software. I'm sure some of you will balk at running Windows 11, but it does look as if it can run a Linux distro.
RPI 3 B+ | RPI 5 | EQ12 | |
---|---|---|---|
Processor | 700MHz (ARM) | 2.4GHz (ARM) | 3.4GHz (N100) |
Memory | 512MB DDR2 | 8 GB DDR4 | 16GB DDR 5 |
Ethernet | Gigabit (capped at 300Mbps) x1 | Gigabit x1 | 2.5G x2 |
USB | USB 2.0 x4 | USB 3 x2, 2.0 x2 | USB 3.2 x3 |
Disk space | Max 64Gb SD (sold separate) | SDXC 500GB (sold separate) | 500GB |
Total Price | $160* (shipping, case, etc.) | $144* (shipping, case, etc.) | $231* |
Notes | *I added the cost of an SD based on historical pricing on top of the price that I originally paid. | *This includes the cost of a 500GB SD card from Amazon | *Purchase price. The current price is $279. |
At the current price of the EQ12, you could almost buy 2 RPI 5 if you can find them. However, the specs and extra potential that the EQ12 has, was a win for me. The duel Ethernet provides the potential for a virtual router. A full OS of either flavor offers a different set of workloads.
It's not without its flaws, though. Initially, it came with W11 and I checked it out a bit to make sure things were working, including playing a game on it. I then wiped it and installed Windows Server 2025 Core (in preview) and boy that was a pain.
You haven't really had to worry about basic driver support on Windows since around Windows 7, and it has gotten easier to install Windows, and it just works. Sure, you'll probably want manufacturer drivers for some things, but overall that's not something I have had to waste too much time on in years. It didn't occur to me that I should look at the drivers and devices and make sure I knew what was installed.
It isn't easy to install drivers on Windows Core since the UI tools like Device Manager are not available. More time wasted, another format and with Windows Server 2025 with Desktop Experience and I finally got the Ethernet drivers installed. Windows doesn't seem to recognize a lot of the hardware by default, and I had to spend a lot of time getting all the drivers installed. The Ethernet driver in particular offers several matches, but Windows always complains that whatever I picked is not the correct driver. Despite the error, they do start working. On two occasions, I've had those drivers get reset and the network adapters no longer function.
Once I could move beyond that, I installed Docker Desktop with WSL2 and got my containers running.
Originally, I was going to use Podman. However, I discovered that both Docker and Podman have an issue running on WSL2 on Windows and containers binding to port 25. The most recent version of Docker Desktop seems to have resolved this issue. Pi-hole needs to be able to bind to port 25 for the DNS features.
I wanted to use Home Assistant (HA) as a container, however "host" network mode is not available on Windows. HA needs this host mode so that it can discover devices on the network. HA supports running in other virtualization techs like Hyper-V so that's what I ended up with.
Devices
Networking
I have a Google Nest router (and mesh point) connected to an Arris Surfboard modem and a Netgear gigabit switch. Any wired connection is using gigabit Ethernet cables. The Surfboard and Netgear switch run like champs and I rarely have issues with those. The Google Nest router, on the other hand…
Google Nest Router
My biggest complaint is that you can't manage this from a web interface. You must make any changes from the Google Home App. This is generally ok, except that advanced settings take too much effort to manage. There's also problems where it or the mesh point just randomly stop working. If I do have to reboot the modem, I'll be spending the next 20 minutes trying to convince the router that the internet still exists.
Smart devices
I use Philips Hue smart bulbs. These due require a bridge but otherwise, work pretty well. A Z-Wave thermostat and door bolt that are provided to me as part of my rent plays nicely with Google Home and HA as well.
Weemo Smart Plugs
These plugs are definitely one of the most annoying devices that I have. The Android app is slow and buggy. You're supposed to be able to put a widget on your home screen to toggle them, but that seldom works. Their only redeeming quality is that it works with Google Home and HA, so I can control them by other means.
Google Nest Battery Doorbell
This has been a good device for food or package deliver. It lets me know when someone is at the door or walks by. I've replaced the door peephole with this using a custom (read hacky) solution. I wish the video feed were a bit more accessible by default. It comes with a metal backplate that must be attached; otherwise the camera doesn't work. This has been a bit unfortunate and difficult in the peephole slot, but I realize I'm using it a bit unconventionally. I think I'm going to try to machine something that would let a USB-C cable be attached with the plate and then wire that through the peephole so that I didn't have to detach it to charge.
Google Nest Hub
I got this for my home office for two reasons, 1) to show the Nest Doorbell when someone rings the door and 2) I was hoping to show my weekly calendar when my wife wanted to know my schedule. It does the first part well, but not the second.
Software
As I mentioned, my EQ12 is running Windows Server 2025. I have docker running on that with Pi-hole, Unbound, WireGuard Easy (WG + Web UI) and a hyper-v VM running Home Assistant. All my internet traffic flows to the Google Nest Router, to Pi-hole for DNS, then Unbound (if required) and then out to my ISP.
HA is very similar to Google Home but has a web interface. I can finally control my home devices in a single place from my desktop browser.
Finally, I have a DDNS software updating an A record so that I can point WireGuard to that.
Something I need to investigate is getting Docker to run as a Windows service so that a user doesn't need to be logged in. Additionally, I'll be working on a process to do incremental data backups to an Azure storage account.
Wrap up
Overall, the EQ12 is a nice little box so far. It's definitely a hardware upgrade compared to my old Pi.
I hope that was interesting to you. I'm happy to go to more in-depth discussions if there is interest.
What does your home automation setup look like? I'm curious!
You can check out my wirehole fork on GitHub and run the containers yourself.
Comments
You can also comment directly on GitHub.