Choosing & preparing an old PC¶
An alternative to the Synology: run the same media stack on a reused desktop or mini PC with Linux + Docker. The stack pages work unchanged; only the host setup and a few paths differ (see Storage & Docker on Linux).
Why bother
An old Intel PC with an iGPU can hardware-transcode (Quick Sync), which the Atom NAS in Hardware can't. That removes most of the Direct-Play-only limits on the Plex page.
1. What hardware is worth reusing¶
| Part | Minimum / recommended | Why |
|---|---|---|
| CPU | Intel 7th gen (Kaby Lake) or newer, with an iGPU (not an "F" model) | Quick Sync with HEVC 10-bit decode. With Plex Pass, hardware transcoding and HDR → SDR tone mapping run on the iGPU. Newer (11th gen+, N100/N150) adds AV1 decode. |
| RAM | 8 GB, 16 GB is comfortable | Plex, the *arrs and qBittorrent together. More helps a RAM transcode dir. |
| Boot drive | SSD (SATA or NVMe), 120 GB+ | OS + all container configs/databases. Plex metadata is many small files. |
| Data drives | Enough SATA ports and drive bays (or power + space) for the HDDs you plan | A small-form-factor office PC often fits only one 3.5" drive. |
| Network | Gigabit Ethernet, wired | Same as the NAS. Don't use Wi-Fi for a server. |
| PSU / power | Check idle draw with a plug-in meter | An old desktop often idles at 20–40 W vs ~10 W for an N100 mini PC. Over a year that's real money, so factor it in. |
Skip these
AMD CPUs without a supported GPU, Intel 6th gen or older (no HEVC 10-bit decode), "F" CPUs (no iGPU), and anything that needs a discrete GPU just to show a picture. Check your CPU against Plex's hardware-accelerated streaming article.
2. Drives¶
- Separate OS SSD + data HDDs. Reinstalling the OS then never touches the media.
- Use CMR drives (NAS/enterprise lines). Avoid SMR drives for anything RAID-like or ZFS.
- Check every reused drive before you trust it:
sudo apt install smartmontools
sudo smartctl -a /dev/sdX # look at Reallocated/Pending/Uncorrectable sectors and power-on hours
sudo smartctl -t long /dev/sdX # long self-test, then re-run -a when it's done
Any non-zero Reallocated, Current_Pending or Offline_Uncorrectable count: don't use it for data you care about.
3. OS choice¶
Recommended: Ubuntu Server 24.04 LTS (or Debian 12). Headless, long support, and Docker's official repo supports both. This guide's commands assume one of them.
| Alternative | Good at | Honest catch |
|---|---|---|
| Unraid | Mixed drive sizes, easy web UI, app store | Paid licence. Its own way of doing Docker (templates), so the compose files here need translating or the Compose plugin. |
| OpenMediaVault | NAS-style web UI on Debian, compose plugin | Another layer to learn; plugins sometimes lag Debian releases. |
| TrueNAS SCALE | ZFS done properly, snapshots, replication | Wants matching drives and plenty of RAM; apps system has changed between releases, check the current docs. |
4. Wipe and install¶
- Back up anything you want off the old PC, then download the ISO from ubuntu.com/download/server (or debian.org) and write it to a USB stick (balenaEtcher, Rufus or
dd). - Boot from USB. Install to the SSD only; leave the data drives unselected (or unplugged) so you can't wipe the wrong disk.
- Ubuntu: choose Install OpenSSH server. Skip the snaps (no Docker snap, it's installed properly later). Debian: tick SSH server + standard system utilities, untick the desktop.
- Create your admin user (not
root). Add an SSH key, then turn off password logins in/etc/ssh/sshd_config(PasswordAuthentication no). - Update and set the time zone:
sudo apt update && sudo apt full-upgrade -y
sudo timedatectl set-timezone ${TZ}
sudo apt install unattended-upgrades && sudo dpkg-reconfigure -plow unattended-upgrades
5. Static IP / DHCP reservation¶
Easiest: a DHCP reservation on the router for the PC's MAC address → <SERVER_IP>. Nothing to change on the PC.
If you want a static IP on Ubuntu instead, edit the netplan file (name varies, for example /etc/netplan/50-cloud-init.yaml):
network:
version: 2
ethernets:
<NIC>: # from `ip -br link`
dhcp4: false
addresses: [<SERVER_IP>/24]
routes: [{ to: default, via: <ROUTER_IP> }]
nameservers: { addresses: [<ROUTER_IP>] }
sudo netplan try # auto-reverts after 120 s if you lose the connection
Debian 12 uses /etc/network/interfaces by default; a DHCP reservation is simpler there.
6. BIOS / UEFI settings¶
| Setting | Value | Why |
|---|---|---|
| Integrated graphics (iGPU / "IGD") | Enabled, even with no monitor; set as primary display if there's a dGPU | Many boards disable the iGPU when headless or when a card is present, and /dev/dri disappears. |
| iGPU memory (DVMT pre-allocated) | default or 64 MB+ | |
| Restore on AC power loss | Power On | Comes back by itself after a power cut. |
| Sleep / S3 / ErP / deep sleep | Off (also don't suspend in the OS) | A sleeping server isn't a server. |
| SATA mode | AHCI (not RAID/RST) | Linux sees the disks directly. |
| Secure Boot | either; Ubuntu/Debian boot fine with it on | |
| Wake-on-LAN | optional |
Check that the iGPU is visible after the install:
ls -l /dev/dri # expect card0 (or card1) and renderD128
If /dev/dri is missing, recheck the BIOS iGPU setting before anything else.
Next: Storage & Docker on Linux.