home / blog / ubuntu install ← fresh install smell (not really)

Infrastructure & OS

Bare-Metal Linux: How to Install Ubuntu Server on Any Physical or Virtual Machine

Published: July 12, 2026 • 11 min read · ← Back to Blog

Quick Reference Sheet

What it is for:
Provisioning bare-metal computers or virtual hypervisors with a stable Ubuntu Linux Server core for hosting active workloads.
Who uses it:
Systems Administrators, Homelab Operators, DevOps Engineers, and Infrastructure Builders deploying private cloud servers.
Where it is useful:
Turning old PCs or server hardware into high-performance web hosts, NAS drives, Docker daemons, or testing labs.

Before launching database clusters, deploying Docker daemons, or configuring reverse proxy routes, you need a stable host operating system. Ubuntu Server is the industry standard for hosting enterprise software due to its stability, extensive hardware driver support, and massive community ecosystem. This guide walks you through installing Ubuntu Server on bare-metal hardware or inside a virtual machine hypervisor.

1. Downloading the Installer Image

Always download official ISO images directly from Canonical. Using unofficial sources introduces security risks and outdated packages. Obtain the latest Long Term Support (LTS) ISO image (e.g. Ubuntu Server 24.04 LTS or 22.04 LTS):

Download Official Ubuntu Server ISO

2. Preparing the Bootable Installation Drive

If installing on a physical computer (bare-metal), flash the downloaded ISO file to a USB flash drive (minimum 8GB capacity) using a flashing tool:

Open the flashing utility, select your target USB drive, load the Ubuntu Server ISO, and click Flash/Start.

Note: If deploying inside a Virtual Machine hypervisor (like Proxmox, VMware ESXi, VirtualBox, or Hyper-V), bypass USB flashing. Directly upload the ISO image to the hypervisor storage pool and attach it to the virtual CD/DVD drive.

3. Booting Into the Installation Interface

Insert the bootable USB into the target computer. Turn on the machine and immediately tap the Boot Menu Key to override the default boot drive. Common keys by manufacturer:

  • F12: Dell, Lenovo, Gigabyte
  • F8: ASUS
  • F11: MSI, ASRock
  • F9: HP

Select your USB device from the list (choose the UEFI option if supported). Select Try or Install Ubuntu Server from the GRUB bootloader screen.

Troubleshooting: USB Boot drive not detected
Workaround: Restart the machine and enter your BIOS/UEFI settings (usually F2, Del, or F10). Find the Boot Options or Security tab and temporarily disable Secure Boot. Some motherboards block unsigned Linux loaders from running unless secure boot is turned off.

4. Stepping Through the Installer

The Ubuntu Subiquity installer is keyboard-controlled. Use the Arrow Keys, Spacebar (to select options), and Enter Key (to confirm):

  • Language & Keyboard: Select your preferred locale settings.
  • Type of Install: Choose standard Ubuntu Server (minimizes default package bloat).
  • Network Connections: If connected via Ethernet, the system requests an IP via DHCP. To configure a static IP on initial boot, select your interface, press Enter, edit IPv4, change to manual, and enter your gateway and subnet details.
  • Configure Proxy / Archive Mirror: Keep default mirror addresses unless you require localized package cache mirrors.
  • Storage Configuration: Select the drive where Ubuntu will be installed. Check Use an entire disk. We recommend keeping Set up this disk as an LVM group checked. LVM (Logical Volume Manager) allows you to expand partitions easily in the future.
    Important: Ensure "Minimize/Unmount existing partitions" is checked if you want to wipe a pre-installed OS. This wipes all existing data on the drive.
    Caution: Permanent Data Loss
    Formatting the disk and writing the partition table is destructive. Ensure you have targeted the correct storage unit (e.g. /dev/sda or virtual disks) to prevent accidental loss of important data on other drives. Double-check your drive labels before choosing "Confirm".
  • Profile Setup: Create your primary administrative account. Pick a system hostname, administrator username, and a secure password.
  • SSH Setup: Check Install OpenSSH Server. This allows you to immediately manage the server remotely using SSH once the installation completes.

5. Post-Install Tasks: Static IP & System Updates

Once the installer displays Installation Complete, select Reboot Now and remove the USB drive.

To access the server remotely, find its IP address by logging in locally and running: ip a. Next, SSH into the machine from your personal computer:

How to Connect from Different Devices

  • PowerShell / Command Prompt (Windows/macOS/Linux):
    Open your host machine terminal and execute the connection command:
    ssh administrator_user@192.168.1.200
  • Under the Credentials section, enter your administrator Username and Password (or tap Keys to import your generated id_ed25519 private key file).
  • Save the profile, then double-tap or select the Host to initialize the secure remote terminal connection.

Perform a system package refresh to apply the latest security patches:

sudo apt update && sudo apt upgrade -y
Troubleshooting: APT update hangs or connection timeout
Workaround: Check if your internet connection is active by running ping -c 3 1.1.1.1. If this works but ping google.com fails, your DNS resolver is not configured. Edit your network configuration to ensure a valid nameserver is declared.

Configuring static network details via Netplan

If you didn't configure a static IP during installation, edit the network configuration file under Netplan. But first, identify your actual active network interface name - this varies by hardware and driver (e.g. enp3s0, eth0, eno1). Run this on your server terminal to find it:

ip route show | grep default

The output will look like: default via 192.168.1.1 dev enp3s0 proto dhcp. The value after dev is your interface name. Use that name in the Netplan config below. Then open the network configuration file:

sudo nano /etc/netplan/50-cloud-init.yaml

Configure it to bind a static address to your interface card (replace enp3s0 with the interface name you found above):

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      dhcp4: no
      addresses:
        - 192.168.1.200/24
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses:
          - 1.1.1.1
          - 8.8.8.8

Save changes, verify the configuration formatting, and apply it:

sudo netplan try
sudo netplan apply

Your server will now maintain this static IP address permanently, ensuring stable connections for your reverse proxies, Docker configurations, and dashboard interfaces.

Troubleshooting: Netplan fails to apply or network drops
Workaround: YAML config format is highly sensitive to spacing. Do not use Tab characters; indent each sub-block using exactly two spaces. If you get completely cut off from network access, log into the server locally, open /etc/netplan/50-cloud-init.yaml, revert your changes to dynamic DHCP (dhcp4: true), and run sudo netplan apply to restore DHCP access.
Congratulations - Your Server is Live.

You now have an Ubuntu Server installed, network-configured with a static IP, SSH-hardened, and fully updated. Your old machine is now a working server ready to host anything you throw at it.

What's Next: Give Your Server a Dashboard

A bare Ubuntu Server is powerful but headless - everything is done through the terminal. The logical next step is installing a server management UI that lets you deploy web apps, databases, and services visually, with automatic SSL and reverse proxy built in.

We recommend Coolify - an open-source, self-hosted alternative to Vercel, Heroku, and Railway. With a single install command on your server, you get a full deployment platform: deploy apps from GitHub, spin up databases, manage domains, and monitor services - all from a sleek web dashboard.

http://your-server-ip:8000
Projects
4
Active deployments
Services
7
Running containers
Databases
2
PostgreSQL · Redis
SSL / Domains
Auto
Let's Encrypt via Caddy
This is what Coolify's dashboard looks like after setup - accessible at http://your-server-ip:8000
View Coolify Official Site

Related Reads

“Linux is only free if your time has no value.”

— Jamie Zawinski