Choosing an Operating System
Comparing general-purpose Linux distros against purpose-built homelab OSes, and which to pick for what you're actually doing at this tier.
At this tier you want an OS that's boring and well-documented, not interesting. Save the interesting choices for services running on top of it.
Debian or Ubuntu Server (recommended default)
For a general-purpose Docker host, pick Debian or Ubuntu Server. Both are free, rock-solid, and have the largest amount of homelab documentation and troubleshooting content available anywhere - when something breaks at 11pm, someone else has already hit the same error on one of these two distros.
- Debian - slower-moving, extremely stable, no telemetry, no vendor involvement. The safer long-term default.
- Ubuntu Server - based on Debian, slightly more current package versions, marginally more "opinionated" defaults. Also completely fine.
Either is a correct choice; don't spend more than five minutes deciding between them. This guide's setup steps (Initial Server Setup onward) work on both without modification.
Fedora Server / other general distros
Fine if you already know and prefer them, but there's no specific homelab advantage over Debian/Ubuntu, and you'll find less homelab-specific documentation for edge cases. Not recommended as a first choice if you don't already have a preference.
Purpose-built storage OSes: TrueNAS and Unraid
These aren't general-purpose Linux distributions you install Docker on top of - they're appliance-style OSes built around storage first, with Docker/app support layered in. They matter more once storage is a dedicated concern (see Centralized Storage in Intermediate), but it's worth knowing the difference now:
- TrueNAS (Scale) - built on Debian, ZFS-native, free and open-source. Excellent if storage integrity (checksums, snapshots, redundancy) is the primary goal of the machine.
- Unraid - paid license, more flexible mixed-disk-size storage array, a polished app ecosystem. Popular for combined storage+services boxes.
For this tier, skip both. They add complexity you don't need yet for "one machine, Docker, a few services." Revisit this decision in Intermediate once you're deciding how to handle storage as a dedicated concern.
What to actually do
Install Debian or Ubuntu Server (the non-desktop, no-GUI server image) directly on your chosen hardware, or in a VM if you're testing this on existing hardware you don't want to repartition yet. During install:
- Enable OpenSSH server if the installer offers it, so you can manage the machine headless from here on.
- Use a non-root user with sudo, not a "root" login - see Initial Server Setup for why.
- Skip the desktop environment entirely. You won't need it, and it's one more thing to update and secure.
Next: Initial Server Setup.