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.
Common questions
How much RAM does Debian 13 use at idle compared to Ubuntu on a home server?
On an Intel N100 Beelink EQ12 mini-PC with 16GB of RAM, idle memory usage dropped dramatically after switching from Ubuntu to Debian 13 Trixie. The previous Ubuntu setup consumed roughly 1.4GB at idle, while a fresh Debian 13 install with SSH and standard utilities used just 184MB. That frees over a gigabyte of headroom for caching or additional Docker containers.
Does the Debian 13 netinst installer include non-free Wi-Fi firmware?
Yes. Since Bookworm, and now firmly in Trixie, the Debian installer bundles non-free firmware directly. The author plugged in a USB with the sub-600MB netinst ISO and the installer detected a Realtek NIC immediately, with no separate firmware juggling required. During task selection he unchecked everything except SSH Server and Standard System Utilities for a minimal headless box.
How do you fix Docker DNS conflicts with systemd-resolved on Debian 13?
Install Docker from the official Docker repository rather than the outdated Debian package, then override DNS in the daemon config. The author added explicit DNS servers (1.1.1.1 and 8.8.8.8) plus json-file log rotation settings to /etc/docker/daemon.json, then ran systemctl restart docker. This stabilized Docker 27.5.1 running alongside the 6.12 kernel with his 14-container stack.
Why does my user not have sudo access after a fresh Debian install?
If you set a root password during the Debian installer, your regular user is not automatically added to the sudoers file. The fix takes about five seconds: run su – to become root, edit /etc/sudoers, and add your username. The author notes this gotcha always catches him off guard even though it’s trivial, and it’s a deliberate Debian default rather than a bug.




