🖥️ Building Your HomeLab Server - Hardware & Ubuntu Setup [Part 2 of 10]

:desktop_computer: Building Your HomeLab Server - Hardware & Ubuntu Setup [Part 2 of 10]

Choosing the right hardware and installing a rock-solid foundation

:wrench::laptop::penguin::hammer:


You’ve decided to build a HomeLab. Now comes the fun part: building (or repurposing) the server that will run everything.

The good news? You don’t need enterprise-grade hardware or a massive budget. Let’s talk about what actually works.


:brain: Hardware: What You Actually Need

The Reality Check

You probably already have something that will work. That old gaming PC gathering dust? The desktop you replaced last year? Even a retired office workstation can make an excellent HomeLab server.

Don’t let “perfect” be the enemy of “good enough.” Start with what you have, learn the ropes, then upgrade if needed.


:laptop: Hardware Options (Budget to Beast)

Option 1: Repurpose What You Have ($0)

Best for: Getting started, learning, testing

What works:

  • Old gaming PC (5+ years old)

  • Retired desktop or workstation

  • Mini PC with decent specs

  • Even a laptop (if you can keep it cool and plugged in)

Minimum specs:

  • Multi-core CPU (Intel i5/i7, AMD Ryzen 5/7, or equivalent)

  • 16GB RAM (8GB will work but you’ll feel the limits quickly)

  • 256GB+ storage for OS

  • Gigabit Ethernet port

Real talk: I’ve seen HomeLabs running on 10-year-old hardware. If it boots and has network connectivity, you can probably use it.


Option 2: Budget Build ($300-600)

Best for: Dedicated server on a budget

What to look for:

  • Used office workstation (Dell Optiplex, HP ProDesk, Lenovo ThinkCentre)

  • Often available for $200-400

  • Reliable, quiet, low power consumption

  • Easy to find parts

  • Refurbished server (Dell PowerEdge T-series, HP ProLiant ML-series)

  • More expandable

  • Can be louder and use more power

  • Great for learning enterprise hardware

Recommended specs:

  • CPU: Intel i5/i7 (6th gen+) or AMD Ryzen 5/7

  • RAM: 16-32GB DDR4

  • Storage: 256GB SSD for OS + 3-4 drives for RAID

  • Network: Gigabit Ethernet (built-in is fine)

Where to buy:

  • eBay, Craigslist, Facebook Marketplace

  • Local computer shops

  • Corporate surplus sales


Option 3: Mini PC Build ($270-600)

Best for: Compact, quiet, low power consumption

Real-world example (my first HomeLab):

  • Base: PELADN WO4 Mini PC or similar

  • AMD Ryzen 5 5600H (6 cores/12 threads)

  • 16GB RAM (stock)

  • 512GB SSD (stock)

  • Dual 2.5Gbe LAN

  • Price: ~$270

  • Upgrades I added:

  • 32GB RAM upgrade (~$65-100)

  • 2TB SSD upgrade (~$100-150) - Did this immediately to avoid reinstalling

  • Total cost: ~$435-520

Why a mini PC?

  • Small footprint (fits anywhere)

  • Very quiet operation

  • Low power consumption (~15-35W)

  • Dual NIC options available (great for networking projects)

  • Upgrade RAM and storage as needed

  • Perfect for learning without a huge investment

This is where I started - ran multiple Docker containers, learned the basics, then upgraded to bigger hardware later when I needed more power.


Option 4: New Budget Build ($600-1000)

Best for: Building exactly what you want

Sample build:

  • CPU: AMD Ryzen 5 5600 or Intel i5-12400 (~$150-200)

  • Motherboard: B550/B660 with good I/O (~$100-150)

  • RAM: 32GB DDR4 (2x16GB) (~$65-160)

Storage:

  • 500GB NVMe SSD for OS (~$40-60)

  • 4x 4TB HDDs for RAID 5 (~$300-400)

  • Case: ATX case with good airflow (~$50-80)

  • PSU: 550-650W 80+ Bronze (~$50-80)

Total: ~$755-1,130


Option 5: Enthusiast Build / Repurposed Gaming PC ($1000-2000+)

Best for: Future-proofing, heavy workloads, or repurposing high-end hardware

Real-world example (my setup):

  • Source: Retired gaming PC (removed GPU, repurposed for HomeLab)

  • CPU: AMD Ryzen 9 7950X (16 cores/32 threads)

  • RAM: 128GB DDR5

Storage:

  • 1TB NVMe for OS

  • 3x 2TB NVMe in RAID 5 for Docker/data

  • Motherboard: ASUS ROG STRIX X670E-E

Why repurpose a gaming PC?

  • Already have the hardware (free!)

  • High-end components = excellent server performance

  • Remove GPU = lower power consumption

  • Runs 10+ Docker containers simultaneously

  • Room for VMs and future expansion

  • Handles media transcoding, photo processing, etc.

The lesson: Don’t buy new if you have capable hardware sitting around. That old gaming rig makes an excellent HomeLab server.


:bullseye: My Hardware Recommendations by Use Case

Just Starting Out

  • CPU: 4-6 cores minimum

  • RAM: 16GB (upgrade to 32GB later)

  • Storage: 1 SSD + 2-3 HDDs for RAID

  • Budget: $0-400 (repurpose or used)

Running 5-10 Services

  • CPU: 6-8 cores

  • RAM: 32GB

  • Storage: 1 SSD + 3-4 HDDs for RAID

  • Budget: $400-800

Power User / Future-Proofing

  • CPU: 8+ cores

  • RAM: 64GB+

  • Storage: NVMe for OS + 4+ drives for RAID

  • Budget: $1000+


:electric_plug: Don’t Forget These Components

Network Connection

  • Gigabit Ethernet minimum (local network speed, not your ISP)

  • Wired connection (WiFi works but not recommended for a server)

  • Most motherboards have this built-in

Power Protection

  • UPS/Battery backup highly recommended

  • Protects against power outages and surges

  • Gives time for graceful shutdown

Options:

Cooling

  • Stock CPU cooler is usually fine for servers

  • Good case airflow is more important than fancy cooling

  • Keep it in a ventilated area


:penguin: Installing Ubuntu Server

Now that you have hardware, let’s install the operating system.

Why Ubuntu Server?

My choice: Ubuntu Server - Here’s why:

  • Massive community support - Largest user base means easy to find help

  • Long-term support (LTS releases get 5 years of updates)

  • Excellent documentation - Tutorials and guides everywhere

  • Docker-friendly - Everything just works

  • Beginner-friendly - Great for learning Linux server administration

Other solid options:

  • Debian - Lighter weight, more experienced users

  • Ubuntu is based on Debian, so very similar

  • Slightly more minimal and stable

  • Great choice if you want less bloat

  • Proxmox - If you want to run VMs alongside containers

  • CentOS Stream / Rocky Linux - Enterprise-focused (RHEL-based)

Important notes:

  • Most popular distros are Debian or Ubuntu-based anyway

  • We’re installing server (no desktop GUI) - keeps it lightweight

  • You can add a desktop environment later if you want, but it’s not needed

  • For this series, I’m using Ubuntu Server for consistency

Bottom line: Ubuntu Server hits the sweet spot of beginner-friendly + powerful + well-supported.


:inbox_tray: Download Ubuntu Server

  1. Go to Ubuntu Server download page

  2. Download Ubuntu Server 24.04 LTS (or latest LTS version)

  3. You’ll get an .iso file (~2GB)

LTS = Long Term Support - Gets updates for 5 years. Always choose LTS for servers.


:optical_disk: Create Installation Media

You’ll need a USB drive (8GB minimum) to install Ubuntu.

On Windows:

  1. Download Rufus

  2. Insert USB drive

  3. Open Rufus

  4. Select your USB drive

  5. Select the Ubuntu .iso file

  6. Click Start

On Mac:

  1. Download balenaEtcher

  2. Insert USB drive

  3. Open Etcher

  4. Select the Ubuntu .iso file

  5. Select your USB drive

  6. Click Flash

On Linux:


# Find your USB drive (usually /dev/sdb or /dev/sdc)

lsblk

# Write ISO to USB (replace /dev/sdX with your drive)

sudo dd if=ubuntu-24.04-live-server-amd64.iso of=/dev/sdX bs=4M status=progress

sudo sync


:rocket: Installing Ubuntu Server

BIOS/UEFI Settings (Important for Newer Hardware)

Before installing, check these BIOS settings:

Enter BIOS/UEFI:

  • Power on and press F2, F12, Del, or Esc (varies by manufacturer)

Settings to disable (if present):

  • Secure Boot - Can prevent Linux from booting

  • Usually under Security or Boot settings

  • Set to Disabled

  • Fast Boot - Can cause USB boot issues

  • Usually under Boot settings

  • Set to Disabled

Settings to enable:

  • UEFI Boot Mode (not Legacy/CSM)

  • Modern standard, better compatibility

  • Virtualization (Intel VT-x / AMD-V)

  • Needed if you plan to run VMs later

  • Usually under CPU or Advanced settings

Boot order:

  • Set USB drive as first boot device

  • Or use one-time boot menu (usually F12)

Save and exit - Your system will reboot

Boot from USB

  1. Insert USB drive into your server

  2. System should boot from USB automatically

  3. If not, enter boot menu (F12) and select USB drive

Installation Steps

The Ubuntu installer is text-based but straightforward:

1. Language Selection

  • Choose your language (English is fine)

2. Keyboard Layout

  • Select your keyboard layout

  • Test it to make sure it’s correct

3. Installation Type

  • Choose “Ubuntu Server” (not minimal)

4. Network Configuration

  • Use DHCP for now (we’ll set static IP later)

  • Make sure it detects your Ethernet connection

  • Note the IP address shown

5. Proxy Configuration

  • Leave blank unless you need a proxy

  • Most home users don’t

6. Mirror Configuration

  • Use default Ubuntu mirror

  • It will auto-select based on your location

7. Storage Configuration

This is important. You have two options:

Option A: Use Entire Disk (Simple)

  • Select your OS drive (usually the SSD)

  • Choose “Use an entire disk”

  • Enable LVM (Logical Volume Manager)

  • This is fine for getting started

Option B: Custom Partitioning (Advanced)

  • Only if you know what you’re doing

  • We’ll cover RAID setup in Part 3

For now, choose Option A. We’ll add RAID storage later.

8. Profile Setup

  • Your name: Your actual name

  • Server name: homelab-server (or whatever you want)

  • Username: admin (or your preferred username)

  • Password: Choose a strong password (you’ll use this a lot)

9. SSH Setup

  • :white_check_mark: Install OpenSSH server (IMPORTANT!)

  • This lets you manage the server remotely

  • Don’t skip this

10. Featured Server Snaps

  • Don’t select anything here

  • Skip all snap packages

  • We’ll install everything manually using apt (traditional package manager)

Why avoid snaps?

  • Slower startup times

  • Larger disk usage

  • Can have permission issues with Docker volumes

  • We want full control over our installations

  • Throughout this series, we won’t use snaps at all

11. Installation

  • Review your choices

  • Confirm and start installation

  • This takes 10-15 minutes

  • When done, select “Reboot Now”

  • Remove the USB drive when prompted


:white_check_mark: First Boot

After reboot, you’ll see a login prompt:


homelab-server login: _

Log in with:

  • Username: admin (or whatever you chose)

  • Password: (your password)

You’re in! You should see a command prompt:


admin@homelab-server:~$


:wrench: Initial Configuration

Let’s do some basic setup before moving forward.

Update the System


# Update package lists

sudo apt update

# Upgrade installed packages

sudo apt upgrade -y

# Reboot if kernel was updated

sudo reboot

Set Static IP Address

Your server needs a consistent IP address. Right now it’s using DHCP (dynamic).

Find your current network info:


ip addr show

Look for your Ethernet interface (usually eno1, enp0s3, or eth0). Note:

  • Your current IP address (e.g., 192.168.1.100)

  • Your subnet mask (usually /24)

Edit netplan configuration:


sudo nano /etc/netplan/00-installer-config.yaml

Replace the contents with (adjust values for your network):


network:

version: 2

ethernets:

eno1: # Replace with your interface name

dhcp4: false

addresses:

- 192.168.1.100/24 # Your desired static IP

routes:

- to: default

via: 192.168.1.1 # Your router's IP

nameservers:

addresses:

- 192.168.1.1 # Your router (or 8.8.8.8 for Google DNS)

Save and exit: Ctrl+X, then Y, then Enter

Apply the configuration:


sudo netplan apply

Test it:


ip addr show

ping -c 3 google.com

Your server now has a static IP!


:locked: Basic Security

Before we go further, let’s lock down SSH access.

Disable IPv6 (Optional but Recommended)

If you’re not using IPv6 on your network:


sudo nano /etc/sysctl.conf

Add these lines at the end:


net.ipv6.conf.all.disable_ipv6 = 1

net.ipv6.conf.default.disable_ipv6 = 1

net.ipv6.conf.lo.disable_ipv6 = 1

Apply changes:


sudo sysctl -p

Configure Firewall (UFW)

Ubuntu includes UFW (Uncomplicated Firewall). Let’s enable it.

Run these commands on your Ubuntu server:


# Allow SSH from your local network only

# NOTE: Replace 192.168.1.0/24 with YOUR network range

# Common ranges: 192.168.0.0/24, 192.168.1.0/24, 10.0.0.0/24

sudo ufw allow from 192.168.1.0/24 to any port 22 proto tcp comment 'SSH from LAN'

# Enable firewall

sudo ufw enable

# Check status

sudo ufw status numbered

Important:

  • Replace 192.168.1.0/24 with your actual network range

  • To find your network: Look at your server’s IP (e.g., 192.168.1.100)

  • If your IP is 192.168.1.100, your network is 192.168.1.0/24

  • If your IP is 192.168.0.50, your network is 192.168.0.0/24

  • If your IP is 10.0.0.25, your network is 10.0.0.0/24


:brain: TL;DR

  • Hardware: Start with what you have, upgrade later if needed

  • Minimum specs: Multi-core CPU, 16GB RAM, SSD + HDDs

  • OS: Ubuntu Server 24.04 LTS (free, stable, well-supported)

  • Installation: Boot from USB, follow installer, enable SSH

  • Post-install: Update system, set static IP, enable firewall

  • Next: We’ll set up RAID storage in Part 3


:speech_balloon: Your Turn

What hardware are you using for your HomeLab?

Building new or repurposing old equipment?

Hit any snags during Ubuntu installation?

Drop a comment below!


Navigation: ← Part 1 | Part 3 →