Most of us pay for too many subscriptions. If you’ve ever added up what you spend on cloud storage, streaming, VPNs, and smart home hubs, the number gets embarrassing fast. That’s what drives a lot of people to self-hosting.
The problem is that most guides out there either assume you already know what a reverse proxy is, or they’re so dumbed down they just tell you to buy a Synology NAS and call it a day. This guide is for the person in the middle. You’re curious, maybe a little intimidated by Linux, but you’re not afraid to open a terminal and type some commands.
We’re going to build a Linux home server for under $200 that can handle media streaming, network-wide ad blocking, smart home control, cloud file storage, and secure remote access. All self-hosted, all on hardware that fits on a shelf. Let’s get into it.
Why Bother Self-Hosting?
Before we spend any money, let’s talk about why you’d want to do this in the first place.
Your data stays yours. When your photos live on Google’s servers, Google’s terms of service dictate what happens to them. When they live on your server, in your house, you’re in control. Period.
It saves real money over time. A Plex Pass is $120/year. iCloud storage, $36/year. A VPN subscription, another $60-100. A decent NAS from Synology runs $300+ before you add drives. A used mini PC running free, open-source alternatives to all of this costs you a one-time $100-150 and maybe $3/month in electricity.
You actually learn something. I’m not going to pretend this is passive. You’ll learn Linux basics, networking fundamentals, Docker, and a bit about security. That knowledge compounds. Every new service you add gets easier than the last one.
It’s genuinely fun. There’s something deeply satisfying about streaming a movie to your TV from a tiny box sitting on your shelf that you set up yourself. Call it nerd pride. Most people who’ve gone down this path describe it as a surprisingly good weekend project. 🖥️
The Hardware: Used Mini PCs Are the Move
Here’s where most guides lose people. They either recommend a $500 custom build or a Raspberry Pi and then gloss over its limitations. I’m going to give you the actual best option for under $200: a used enterprise mini PC.
Companies like Dell, Lenovo, and HP cycle through thousands of office desktops every few years. When they do, those machines hit the refurbished market for a fraction of their original price. And these aren’t junky machines. They were built for reliability, quiet operation, and 24/7 uptime. Exactly what you want in a home server.
What to Look For
Here are my top picks, all regularly available on eBay and Amazon for under $200:
Dell OptiPlex 7060/7070 Micro ($80-$160 refurbished)
Intel i5-8500T or i5-9500T, 16GB RAM, 256GB SSD. The OptiPlex Micro is about the size of a thick paperback book. It sips power (idles around 8-12W), runs completely silent under light loads, and has USB 3.1, DisplayPort, and Gigabit Ethernet. This is my go-to recommendation.
Lenovo ThinkCentre M90q Gen 1 ($120-$200 refurbished)
10th Gen Intel, same 1-liter form factor, built like a tank. ThinkCentre Tiny machines have excellent thermal management and Lenovo’s enterprise firmware support. Slightly newer silicon than the OptiPlex 7060, so you might get a bit more headroom.
HP EliteDesk 800 G5 Mini ($100-$170 refurbished)
The HP option in the trio. i5-9500T, compact, quiet, and well-documented in the home server community. ServeTheHome’s Project TinyMiniMicro has done extensive testing on these exact machines for server use.
All three of these will handle everything we’re going to set up in this guide without breaking a sweat. Aim for at least 16GB of RAM and a 256GB SSD. If the listing comes with 8GB, budget another $15-20 for a RAM upgrade since DDR4 SODIMMs are dirt cheap right now.
Storage Note
The internal SSD is fine for your operating system and Docker containers. If you plan to store a large media library (movies, TV shows, music), plug in a USB 3.0 external drive. A 4TB external HDD runs about $80-100 these days and is more than enough to start.
What About a Raspberry Pi 5?
I know someone’s going to ask, so let me address it directly.
The Raspberry Pi 5 is a solid little board, and the 8GB model ($125 as of mid-2026, up significantly from its launch price) paired with a case, power supply, and NVMe HAT will run you around $170-190 total. It works great for lightweight tasks: Pi-hole, Home Assistant, a WireGuard VPN endpoint, basic Docker containers.
Where it falls short is media transcoding. The Pi 5 can direct-play media, but if a client device needs the server to transcode a 4K file (which happens more than you’d think), the Pi doesn’t have Intel Quick Sync or any hardware encoding support. It’ll choke. An i5-based mini PC handles transcoding effortlessly because Intel Quick Sync has been baked into their processors for years.
The Pi 5 also caps at 8GB of RAM (the 16GB model is $205 and lands well over budget), and the ARM architecture means occasional compatibility headaches with Docker images that only ship x86 builds.
My take: If you only want Pi-hole and Home Assistant, a Pi 5 is fine. But a used mini PC now costs about the same or less once you add the Pi’s required accessories, and you get hardware transcoding and x86 compatibility on top. For a do-everything home server, the mini PC wins on every line.
Picking Your Linux Distro
This is where people get paralyzed by choice. There are dozens of Linux distributions, and the internet will argue about them forever. Let me simplify it.
For Most People: Ubuntu Server 24.04 LTS (or 26.04 if you’re installing after April 2026)
Ubuntu Server is free, has the largest community of any Linux distro, and nearly every tutorial you’ll Google is written for it. Ubuntu 26.04 LTS launched in April 2026 and is a fine choice if you’re installing now. Ubuntu 24.04 LTS is also still supported until 2029 and works for everything in this guide. Either version is fine, just know most tutorials floating around currently reference 24.04, so don’t be surprised if screenshots or menu labels look slightly different. The LTS releases get five years of security updates, so you install it once and don’t think about major upgrades for a long time.
It comes with nothing you don’t need. No desktop environment, no bloat. Just a clean terminal prompt waiting for you to tell it what to do. Install Docker on top of it, and you’ve got a server that can run basically anything.
For the Tinkerer: Proxmox VE
Proxmox is a free, open-source virtualization platform. Instead of running everything directly on the OS, Proxmox lets you create virtual machines and Linux containers (LXCs), each isolated from the others.
Why would you want that? Because you can run Ubuntu in one container, experiment with a totally different setup in another, and if something breaks, you just delete that container without touching the rest of your system. It’s a playground with guardrails.
Proxmox also has a slick web UI for managing everything, which is nice if you’re not comfortable living in the terminal 24/7.
The downside: it’s an extra layer of complexity. If you just want to run some Docker containers and be done with it, Proxmox is overkill. But if you enjoy learning and want the flexibility to experiment, it’s fantastic.
My Recommendation
Start with Ubuntu Server. Get comfortable. Run some containers. Once you feel limited by a single-OS setup (or you catch the homelab bug and want to experiment), wipe the drive and install Proxmox. You’ll appreciate it more once you understand what problem it solves.
Setting Up Your Linux Home Server (The Actual Steps)
Alright, you’ve got your hardware. Let’s set this thing up. I’m going to walk through Ubuntu Server since that’s what I’m recommending for beginners.
1. Flash the installer. Download Ubuntu Server 24.04 LTS and flash it to a USB drive using balenaEtcher or Rufus. Plug it into your mini PC, boot from USB (usually F12 or F2 at startup), and follow the installer prompts.
2. Set a static IP. During installation, or immediately after, give your server a static IP address on your local network. This way it doesn’t change every time your router feels like reassigning addresses. You can do this in the Ubuntu installer’s network config screen, or in your router’s DHCP settings by assigning a reservation.
3. Enable SSH. The installer will ask if you want to install OpenSSH server. Say yes. This lets you manage your server from any other computer on your network without needing a monitor plugged into it. Once it’s set up, you can disconnect the monitor and keyboard forever.
# From your laptop/desktop, connect to your server:
ssh yourname@192.168.1.100
4. Update everything.
sudo apt update && sudo apt upgrade -y
5. Basic security hardening. Don’t skip this. Seriously.
# Disable root login over SSH
sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
# Set up a basic firewall
sudo ufw allow OpenSSH
sudo ufw enable
Consider setting up SSH key authentication instead of passwords. It’s more secure and honestly more convenient once you set it up. There are a million good tutorials for this, so I won’t rehash it here.
Docker: The Secret Weapon
If there’s one concept that makes self-hosting accessible to normal humans, it’s Docker. Here’s the short version: Docker lets you run applications in isolated containers, each with its own dependencies, without them stepping on each other. And Docker Compose lets you define your entire server setup in a single YAML file.
Install Docker and Docker Compose:
# Install Docker
curl -fsSL https://get.docker.com | sudo sh
# Add yourself to the docker group so you don't need sudo every time
sudo usermod -aG docker $USER
# Log out and back in, then verify
docker --version
docker compose version
Now you can deploy almost any self-hosted application with a single command. Most projects ship a docker-compose.yml file that handles everything. You just create it, fill in a few config values, and run docker compose up -d. That’s it.
What to Actually Run on This Thing
Here’s the fun part. These are the services I’d recommend setting up first, roughly in order of “you’ll use this immediately” to “you’ll be glad you have it.”
Jellyfin (Media Streaming)
Jellyfin is the free, open-source alternative to Plex. No subscription, no account required, no phoning home to corporate servers. You point it at your media library, and it organizes everything with artwork, metadata, and subtitle support. Stream to your TV, phone, tablet, or browser.
On an i5-based mini PC with Intel Quick Sync, hardware-accelerated transcoding works beautifully. Multiple simultaneous streams, no problem.
# docker-compose.yml snippet for Jellyfin
services:
jellyfin:
image: jellyfin/jellyfin
container_name: jellyfin
volumes:
- ./jellyfin/config:/config
- /media/movies:/media/movies
- /media/tv:/media/tv
ports:
- 8096:8096
devices:
- /dev/dri:/dev/dri # Intel Quick Sync
restart: unless-stopped
Pi-hole (Network-Wide Ad Blocking)
Pi-hole blocks ads at the DNS level for every device on your network. Your smart TV, your phone, your kids’ tablets. All of them stop showing ads in apps and browsers without installing anything on each device. You just point your router’s DNS settings to your server’s IP address.
It also gives you a slick dashboard showing how many queries it’s blocking. Fair warning: watching that number climb is oddly addictive.
Home Assistant (Smart Home Control)
If you have any smart home devices, Home Assistant is the hub that ties them all together. It supports over 3,000 device types and runs locally, so your automations keep working even if your internet goes down.
The real power is automations that span different ecosystems. Your Zigbee motion sensor triggers your Hue lights while your Ecobee thermostat adjusts. That kind of thing is impossible with individual apps but trivial with Home Assistant.
Nextcloud (Your Own Cloud Storage)
Nextcloud is self-hosted Google Drive (plus calendar, contacts, notes, and more). Sync files between devices, share links with friends, and stop paying for cloud storage tiers. The mobile apps handle automatic photo backup, which alone might justify the setup.
Fair warning: Nextcloud is the most resource-hungry app on this list. Give it at least 2GB of RAM and expect to spend some time tweaking the config for good performance. It’s worth it, but it’s not a “set and forget” install.
Tailscale (Secure Remote Access)
Tailscale isn’t self-hosted (though Headscale is, if you want to go full self-hosted), but it solves the “how do I access my server when I’m not home” problem so elegantly that I’m including it anyway.
Tailscale creates a WireGuard-based mesh VPN between your devices. Install it on your server and your phone, and you can access all your services from anywhere as if you were on your home network. No port forwarding. No exposing anything to the public internet. No fiddling with dynamic DNS.
The free tier covers up to 100 devices, which is more than enough for anyone reading this.
# Install Tailscale on your server
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
That’s it. Three commands and you’ve got secure remote access. 🔒
Stuff I Wish Someone Had Told Me
A few hard-won lessons from setting up and maintaining home servers:
Back up your Docker Compose files and volumes. Your compose files are your server’s blueprint. If the drive dies, you can rebuild everything from those files in an hour. Without them, you’re starting from scratch and trying to remember every config choice you made. Keep copies somewhere off the server.
Don’t expose services directly to the internet. Use Tailscale or a VPN. The moment you open a port to the public internet, bots will find it. Server logs typically show hundreds of login attempts within hours of SSH being exposed to the public internet. Just don’t.
Start small. It’s tempting to install everything at once. Don’t. Set up one service, make sure it works, learn how it’s configured, then add the next one. You’ll troubleshoot problems much faster when you know exactly what changed.
USB drives can be flaky for 24/7 use. If you’re storing important data on an external USB drive, invest in one with its own power supply rather than a bus-powered portable drive. Bus-powered drives can randomly disconnect under sustained load, and that’s a bad day if it happens during a file write.
Check your power bill after a month. These mini PCs idle at 8-12W, which is basically nothing. Even running 24/7, you’re looking at maybe $1-3/month in electricity depending on your rates. That said, if you go down the homelab rabbit hole and end up with a full rack in your closet (it happens to more people than you’d expect), the power costs scale up fast.
Join r/selfhosted and r/homelab. The communities are genuinely helpful, and browsing them will give you ideas for new services to run. Just be warned: those subreddits are a gateway drug to spending way more than $200. 😄
The $200 Budget Breakdown
Just to put it all together:
- Used Dell OptiPlex 7060 Micro (i5, 16GB RAM, 256GB SSD): ~$100-130
- 4TB External HDD (for media storage, optional): ~$80-100
- USB flash drive (for the installer): ~$5, or use one you already have
Total for the base server: $100-130. Total with media storage: $180-230. Everything running on it (Ubuntu, Docker, Jellyfin, Pi-hole, Home Assistant, Nextcloud, Tailscale) is free and open-source.
Compare that to annual subscriptions for Plex Pass ($120), iCloud 200GB ($36), a VPN ($80), and a smart home hub ($80-130), and this thing pays for itself within a year.
Sources
- Mini PC Buying Guide 2026 (2ndBoot)
- Best Mini PCs for Home Servers 2026 (selfhosting.sh)
- Best Mini PC for Home Server (Mini PC Lab)
- Project TinyMiniMicro (ServeTheHome)
- 5 Reasons I Prefer Ubuntu Over Proxmox (XDA Developers)
- Unraid vs Proxmox vs Ubuntu (eFundies)
- How to Self-Host Everything: 2026 Beginner’s Guide (selfhostable.dev)
- Is the Raspberry Pi 5 Worth It in 2026? (IoT Studioz)
- Stop Buying Raspberry Pis for These Home Server Tasks (XDA Developers)
- Tailscale Setup for Self-Hosting (selfhosting.sh)
- Self-Hosting Guide (GitHub)
Got a home server running already? I want to hear what you’re hosting and what hardware you’re using. Drop it in the comments. And if this is your first build, come back and tell me how it went. I’m genuinely curious what services you end up running first.

