Actually, I should clarify — I finally snapped last Tuesday. After the third time a Snap update silently broke my Nextcloud permissions on my “stable” Ubuntu LTS server, I decided I was done. No more canonical-forced decisions, no more background daemons eating RAM for features I didn’t ask for. I wiped the drive and installed Debian 13 “Trixie.”
It’s been about six months since Trixie went stable, and honestly? I should have done this years ago. But there is a specific kind of peace that comes with running an operating system that doesn’t view itself as a product, but as a collection of software that just works.
The Hardware Constraints
I’m running this on a Beelink EQ12 mini-PC I picked up used. It’s got an Intel N100 processor and 16GB of RAM. Not exactly a powerhouse, but for a home lab running Home Assistant, Pi-hole, and a media server, it should be plenty. The problem with my previous setup was the overhead.
On the previous OS, idle RAM usage sat at around 1.4GB. Just sitting there. Doing nothing. That’s nearly 10% of my memory budget gone before I even launch a container. I suspected Debian would be lighter, but I didn’t expect the gap to be this wide.
Installation: The “Non-Free” Myth is Dead
If you haven’t touched Debian since the Buster days, you probably remember the nightmare of Wi-Fi drivers. But that’s gone. Since Bookworm, and definitely now in Trixie, the installer just includes the non-free firmware. I plugged in the USB, it detected the Realtek NIC immediately, and I was off to the races.
I went with the netinst ISO. It’s tiny—under 600MB—and it pulls down exactly what you need. During the install task selection, I unchecked everything except “SSH Server” and “Standard System Utilities.” No desktop environment. I don’t need GNOME eating my CPU cycles on a headless box.
The “Boring” Config
Post-install, the first thing I noticed was the silence. Not audio silence—log silence. journalctl wasn’t scrolling by at a million miles an hour with snapd loopback mount messages.
And I did have to tweak the sources list because I prefer using nala over plain apt. It’s just prettier and handles parallel downloads better. If you aren’t using it yet, you’re missing out.
# First, get the basics
apt update && apt install nala -y
# Then, never type apt again
nala fetch
nala update
nala upgrade
One gotcha I ran into: user groups. On Debian, if you set a root password during install, your user isn’t automatically a sudoer. I had to su -, edit /etc/sudoers, and add myself. It’s a five-second fix, but it always catches me off guard.
Performance Benchmark: The Real Numbers
Here is where it gets interesting. I replicated my exact Docker stack from the old server. That’s 14 containers, including a heavy Jellyfin instance and a PostgreSQL 16 database.
Idle RAM Usage (No Containers):
Old Setup: 1.4 GB
Debian 13: 184 MB
Read that again. 184 Megabytes. That is ridiculously efficient. It means I have over a gigabyte of extra headroom for caching or more services.
CPU Idle Temp:
Old Setup: 42°C
Debian 13: 36°C
The temperature drop was a surprise. My theory is fewer background polling services (looking at you, unattended-upgrades and snapd) keeps the CPU in lower C-states for longer.
The Docker Situation
Debian is conservative. That’s the point. But it means the version of Docker in the official repos is usually ancient. I went straight to the official Docker repo.
However, I did run into a weird issue with systemd-resolved conflicting with Docker’s DNS handling on this specific network setup. The fix was forcing Docker to use the host’s DNS settings explicitly in the daemon config.
{
"dns": ["1.1.1.1", "8.8.8.8"],
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
After a quick systemctl restart docker, everything stabilized. I’m currently running Docker version 27.5.1, and it plays nice with the 6.12 kernel.
Stability vs. Stagnation
People call Debian “stale.” But I call it “finished.” When I log into this server in three months, I know the config files will be exactly where I left them. Python won’t have suddenly upgraded to 3.14 and broken my virtual environments. The kernel won’t have introduced a regression that kills my ZFS pool.
I did have to compile one tool from source—btop. The version in the repo was slightly older than I wanted because I needed a specific GPU monitoring flag that was added recently. But that’s the trade-off. You get a rock-solid base, and you layer the bleeding edge stuff on top only where you actually need it.
Final Thoughts
If you are running a home server on low-power hardware like an N100 or an older NUC, do yourself a favor and install Debian. Stop fighting with distros that want to be desktop OSs first and servers second.
The learning curve is slightly steeper—you have to be comfortable editing text files and knowing your way around systemd—but the payoff is a machine you can ignore. And for a sysadmin, being able to ignore a server is the highest praise possible.




