Before you even download that ISO, let's talk about what actually breaks in production. I've deployed hundreds of Ubuntu servers and the same shit goes wrong every time.
Hardware Compatibility Hell
First stupid mistake: not checking hardware compatibility. The Ubuntu certified hardware list exists for a reason. Your fancy new server might boot fine but good luck getting the RAID controller working without proprietary drivers.
Check this shit before you buy:
- Network cards (Intel good, Broadcom bad)
- RAID controllers (LSI works, fake RAID doesn't)
- Remote management (iDRAC/iLO compatibility - check vendor support sites)
I learned this after spending 6 hours debugging why a Dell server's network kept dropping packets. Turns out the Broadcom NIC needed firmware that Ubuntu doesn't ship. Check the linux-firmware package before deployment.
Installation Method - Stop Using Desktop ISOs
Download Ubuntu Server 22.04.5 LTS from the official releases page. Not the desktop version. Not some random derivative. The server ISO is 2GB smaller and doesn't have the GUI bullshit that breaks headless deployments. Verify the SHA256 checksums before installation.
For automated deployments, use cloud-init and autoinstall. This saves your sanity when you need to deploy 50 servers that are configured identically.
Autoinstall YAML template that actually works:
#cloud-config
autoinstall:
version: 1
locale: en_US
keyboard:
layout: us
network:
network:
version: 2
ethernets:
eno1:
dhcp4: false
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
storage:
layout:
name: lvm
identity:
hostname: production-server
username: sysadmin
password: '$6$rounds=4096$saltsalt$hash'
ssh:
install-server: true
authorized-keys:
- ssh-rsa YOUR_SSH_KEY_HERE
packages:
- openssh-server
- fail2ban
- ufw
- htop
- rsync
Partitioning That Won't Screw You
The default installer partitioning is garbage for servers. Here's what actually works:
- Root (/): 50GB minimum - Ubuntu fills up fast with logs and cache
- Swap: Match your RAM up to 32GB, then cap it
- Everything else: Separate
/var
,/tmp
, and/home
if you can - Use LVM: You'll thank me when you need to resize partitions
The Ubuntu Server installer provides a text-based interface that guides you through partitioning, network configuration, and package selection.
The installer defaults to 10GB for root which fills up in 3 months. /var/log
alone will eat 5GB if you don't configure log rotation properly.
Network Configuration - systemd-resolved Will Betray You
Ubuntu 22.04 uses systemd-resolved for DNS which breaks in creative ways. Disable it if you need reliable DNS:
systemctl disable systemd-resolved
systemctl stop systemd-resolved
rm /etc/resolv.conf
echo \"nameserver 8.8.8.8\" > /etc/resolv.conf
Static network config goes in /etc/netplan/01-network-manager-all.yaml
:
network:
version: 2
ethernets:
ens3:
dhcp4: false
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
Apply with netplan apply
and pray it doesn't break SSH. Always test network changes with a console connection.