Proxmox - VMs and containers for your homelab
Project Licence, Red., Internet Article, 2026.
LLMs were asked while researching this topic.
Setting up a Proxmox Virtual Environment (VE) homelab is like building your own private cloud right inside your house. Instead of using one physical computer for just one purpose, Proxmox allows you to chop up that hardware to run dozens of Virtual Machines (VMs) and Containers (LXCs) simultaneously.
This guide will help to install and set up Proxmox. All you need is an old network-capable (mini)PC and probably some external case with extra HDDs for additional storage. In addition you might want to connect the box to your digital TV-box for more convenience.
Part 1: The Bare Metal Setup
Proxmox is a Type-1 Hypervisor. This means it doesn't run inside Windows or macOS. It is the operating system, meaning it completely replaces whatever is on the target machine.
1. Preparation
The Machine: A spare PC, mini-PC (like an Intel NUC), or an old laptop. It needs a 64-bit CPU, at least 8GB of RAM (16GB+ recommended), and an SSD.
A USB Flash Drive: 8GB or larger (it will be entirely wiped).
Download the Tools:
Go to proxmox.com and download the latest Proxmox VE ISO Installer.
Download Rufus (Windows) or BalenaEtcher (Mac/Linux) to flash the ISO onto your USB.
2. Flashing the Installer USB
Plug in your USB and open Rufus or BalenaEtcher.
Select your USB drive under "Device."
Click SELECT and choose the downloaded Proxmox ISO.
Click START. If you are asked to choose between ISO or DD image mode, select DD Image mode (this is critical for Proxmox to flash correctly).
3. The Installation Process
Plug the flashed USB into your target homelab computer, connect keyboard, mouse and monitor and boot it up.
Mash your computer's BIOS trigger key (
F2,F12, orDel) to open the boot menu and select your USB Drive.Choose Install Proxmox VE (Graphical).
Target Hard Disk: Pick the primary SSD where Proxmox will live.
⚠️ Warning: This will wipe everything on that chosen drive!
Location & Time Zone: Set your country and timezone.
Password & Email: Create a strong root password (do not lose this) and type in your email address.
Management Network Configuration:
Management Interface: Select your network card (use an Ethernet cable connection, not Wi-Fi).
Hostname: Give it a local name like
pve.homelab.local.IP Address: Proxmox will auto-fill one. Make sure it doesn't clash with something else on your network. It's highly recommended to write this down. ⚠️ Warning: It helps to closely note down the steps, users and passwords as well as the IP of you machine! Normally you will connect directly through a browser and not at the machine and therefore need to find it first. The IP normally looks something like
https://192.168.1.100:8006/.Gateway / DNS: Leave these as the auto-detected defaults (usually your home router's IP).
Click Install. Once finished, remove the USB drive and click Reboot.
Part 2: First-Time Login & Post-Install Tweak
Once your computer reboots, the physical screen will display a text URL that looks something like this:
https://192.168.1.100:8006/
Go to a different computer on the same home network, open a web browser, and type in that exact address (including the
httpsand the:8006).Your browser will show a scary-looking "Your connection is not private" warning. This is normal because Proxmox uses a self-signed security certificate. Click Advanced -> Proceed Anyway.
Login credentials:
Username:
rootPassword: The administrator password you created during installation.
Quick Tweak: Remove the "No Subscription" Warning
Because your homelab is free, Proxmox will show a nag screen every time you log in saying you don't have a enterprise subscription. Let's fix your software updates repository so things work cleanly:
Click on your main node on the left side menu (usually named pve).
Go to Updates -> Repositories.
Select the entry that says
pve-enterpriseand click Disable.Click Add, select No-Subscription from the dropdown menu, and click Add.
Go back to the Updates tab at the top and click Refresh, then click Upgrade to make sure your host is fully up to date.
Part 3: Running Your First Virtual Machine (VM)
A Virtual Machine emulates an entire physical computer system. It has its own dedicated kernel, making it perfect for operating systems like Windows or complete Linux distributions (like Ubuntu).
Step 1: Upload an ISO
To build a VM, you need an installation disc image (ISO).
On the left tree, expand your node and click on the storage named local.
Click ISO Images, then click Download from URL (or upload an ISO from your desktop).
Paste an ISO URL (for example, the download link for Ubuntu Server) and click Query URL, then click Download.
Step 2: Run the Wizard
Look at the top right corner of the web UI and click Create VM.
General: Give it a name (e.g.,
ubuntu-test).OS: Select your local storage and choose the ISO you just downloaded.
System: Leave defaults.
Disks: Set the size you want (e.g., 32 GB).
CPU: Give it 2 or more cores depending on your hardware capacity.
Memory: Allocate the RAM (e.g.,
2048MB for 2GB).Network: Leave it on
vmbr0(this bridges the VM directly into your home router's network).Confirm and click Finish.
Step 3: Launch it!
Click on your newly created VM on the left menu (it will have an ID like 100). Click Start at the top, then click Console to look inside the virtual screen and run through the standard OS installation.
Part 4: Running Your First Linux Container (LXC)
Containers share the host operating system's kernel. They are incredibly lightweight, use almost zero idle resources, boot instantly, and are perfect for isolated microservices (like Pi-hole, Plex, or Docker hosts).
Step 1: Download a Template
Instead of massive ISOs, containers use pre-built templates.
Click on your local storage on the left sidebar.
Click CT Templates, then click the Templates button.
Select a lightweight Linux base (like
debian-12-standardorubuntu-24.04-standard) and click Download.
Step 2: Create the Container
Click Create CT at the very top right of your screen (right next to Create VM).
General: Give it a hostname and type in a root password for the container.
Template: Choose the template you downloaded in the step before.
Disks / CPU / Memory: Since containers are tiny, you can easily get away with giving them 1 Core, 512MB or 1GB of RAM, and 8GB of disk space.
Network: For simplicity as a beginner, change the IPv4 setting to DHCP so your home router automatically hands it a working IP address. Leave IPv6 on Static or blank.
Click Finish.
Once the task finishes, select your new Container ID (e.g., 101) on the left, click Start, and open the Console. You instantly have a fully isolated Linux environment running smoothly on a fraction of the system resources a VM would take!
Proxmox VE Community Scripts
The easiest way to install anything are Community-driven scripts for Proxmox VE — You can browse, install, and manage containers and VMs with a single command.
The Proxmox VE Community Scripts Website offers the largest collection for VE and LXC for all purposes in a large collection of automation scripts designed to simplify the setup and management of Proxmox environments: Proxmox VE Community Scripts Website.
⚠️ Warning: Verify the source. Copycat or lookalike websites may exist. Always verify you are on the official site and check all script sources thoroughly before running anything on your systems.
Setting and filling up additional Storage Devices
Adding an external hard drive to Proxmox and sharing it with an LXC (Linux Container) is a fantastic way to expand your storage for media servers, backups, or network shares.
Because LXC containers share the host's kernel, the best and most efficient way to do this is via a Directory Storage Mount Point.
Here is the complete, beginner-friendly guide to getting it done.
Step 1: Connect and Identify Your External Drive
First, plug your external USB hard drive into your Proxmox hardware.
Open your Proxmox Web UI.
Click on your main Proxmox Node (the server name) on the left menu.
Go to Disks.
Look for your external drive in the list (it will usually be something like
/dev/sdbor/dev/sdcand will match your drive's size). Note down this device name.
Step 2: Format and Mount the Drive on the Proxmox Host
If your drive already has data on it, skip the formatting part. If it's a fresh drive, we need to format it to ext4 (the standard Linux file system).
Click on the Shell in your Proxmox Web UI to open the command line.
Format the drive (Skip this if you have data! Replace
sdXwith your drive letter from Step 1):Bashmkfs.ext4 /dev/sdXCreate a mount point (a folder where the drive's contents will live on the host):
Bashmkdir -p /mnt/external-hddFind the drive's UUID (a unique ID that doesn't change even if you unplug the USB):
Bashblkid /dev/sdXCopy the long string inside the quotes after
UUID="..."".Make the mount permanent so it survives a reboot:
Bashnano /etc/fstabScroll to the bottom of the file and add this line (replace
YOUR-UUID-HEREwith the actual UUID you copied):PlaintextUUID=YOUR-UUID-HERE /mnt/external-hdd ext4 defaults,nofail 0 2Note:
nofailensures your Proxmox server still boots up normally even if the external drive is unplugged.Save and exit (
Ctrl+O,Enter, thenCtrl+X).Mount the drive right now:
Bashmount -a
Step 3: Pass the Storage into Your LXC Container
Now that the host can see the drive at /mnt/external-hdd, we will "bind mount" it into your container.
Make sure your LXC container is turned off (Stopped).
In the Proxmox Shell, open your specific container's configuration file. Replace
100with your actual LXC ID:Bashnano /etc/pve/lxc/100.confAdd a new line at the bottom of the file to map the host folder to a folder inside the container:
Plaintextmp0: /mnt/external-hdd,mp=/mnt/container-storagemp0stands for Mount Point 0. If you add more later, you would usemp1,mp2, etc./mnt/external-hddis the folder on your Proxmox host.,mp=/mnt/container-storageis where you want it to appear inside the container.
Save and exit (
Ctrl+O,Enter, thenCtrl+X).
Step 4: Fix Permissions (Crucial Step)
By default, Unprivileged LXC containers (the safe, standard type) won't have permission to write to this new drive. Let's fix that easily.
In the Proxmox Shell, give everyone read/write access to the host mount folder so the container can use it:
Bashchmod -R 777 /mnt/external-hdd
Step 5: Verify Everything Works
Start your LXC container from the Proxmox Web UI.
Go to the container's Console.
Type the following command to see if your drive is there:
Bashdf -h
You should see /mnt/container-storage listed at the bottom with the full size of your external hard drive! You can now read and write files to this folder, and they will be saved directly onto your external HDD.
