Post

Homelab Part 2 — VMware Setup and VM Planning

Setting up VMware Workstation 17 Pro, planning the VM layout, configuring networking, and creating the two VMs that power the entire homelab.

Homelab Part 2 — VMware Setup and VM Planning

Why VMware and Not Proxmox

The reference homelab uses Proxmox — a bare-metal Type 1 hypervisor you install by wiping your machine. I’m not doing that. I use my laptop daily for everything, and I’m not ready to commit to a full OS replacement.

VMware Workstation 17 Pro is a Type 2 hypervisor — it runs on top of Windows like any other application. I can start and stop my VMs whenever I want, pause them when I need full performance for other work, and keep my normal Windows setup untouched.

The trade-off is a small performance overhead. For a homelab running media and file storage, that overhead is irrelevant.


VMware Networking — Which Mode to Use

VMware gives you three network modes for VMs. Picking the right one matters.

ModeWhat it doesUse case
NATVM shares host’s IP, hidden from networkDefault — good for internet access but other devices can’t reach the VM
BridgedVM gets its own IP on your real networkWhat I’m using — devices on your network can reach the VM directly
Host-onlyVM can only talk to the hostIsolated testing, no internet

I’m using Bridged mode for both VMs. This means each VM gets its own IP address from my router — they appear as separate devices on my home network, just like a physical computer would. My phone, iPad, and other devices can reach them directly.

[SCREENSHOT]VMware network adapter settings showing Bridged mode selected


VM Planning

I’m creating two VMs. Everything in the homelab runs inside one of these two.

VM 1 — AdGuard Home (DNS)

SettingValue
Namehomelab-dns
OSUbuntu Server 22.04 LTS
RAM1GB
CPU1 core
Disk20GB
NetworkBridged
IPStatic — 192.168.1.50

Small and lightweight. It runs 24/7. I’ll give it a static IP by reserving it in my router’s DHCP settings.

VM 2 — K3s Node

SettingValue
Namehomelab-k3s
OSUbuntu Server 22.04 LTS
RAM24GB
CPU8 cores
Disk200GB (thin provisioned)
NetworkBridged
IPStatic — 192.168.1.51

This is the main VM. Everything — Jellyfin, Nextcloud, all Kubernetes pods — runs here. I’m giving it 24GB RAM (leaving ~15GB for my Windows host and other work) and 8 cores. Thin-provisioned disk means it only uses actual space on my SSD, not the full 200GB upfront.


Creating the VMs

Step 1 — Download Ubuntu Server 22.04 LTS

I download the ISO from ubuntu.com (server edition, not desktop — no GUI, lighter).

[SCREENSHOT]Ubuntu downloads page with Ubuntu Server 22.04.x LTS selected

Step 2 — Create VM in VMware

File → New Virtual Machine → Typical

  • Installer disc image file (ISO): select the Ubuntu ISO
  • Guest OS: Linux → Ubuntu 64-bit
  • Name: homelab-dns (or homelab-k3s)
  • Location: somewhere with enough disk space

[SCREENSHOT]VMware new VM wizard — guest OS selection screen

Step 3 — Customize Hardware Before Finishing

Before clicking Finish, click Customize Hardware:

For homelab-dns:

  • RAM: 1024MB
  • Processors: 1
  • Network Adapter: Bridged (Replicate physical network connection state)

For homelab-k3s:

  • RAM: 24576MB (24GB)
  • Processors: 2 sockets × 4 cores = 8 logical cores
  • Network Adapter: Bridged
  • Hard Disk: 200GB, thin provisioned

[SCREENSHOT]VMware hardware customisation screen showing RAM and processor settings for the K3s VM

Step 4 — Ubuntu Server Installation

Power on the VM and walk through the Ubuntu installer:

  • Language: English
  • Keyboard: your layout
  • Network: leave as DHCP for now (I’ll set static IP after)
  • Storage: use entire disk (the virtual disk only)
  • Profile: set your username and password — I use homelab as the username
  • SSH: check Install OpenSSH server — essential so I can SSH in from Windows

[SCREENSHOT]Ubuntu server installer — OpenSSH server option checked

Installation takes about 5 minutes. Reboot when done.


Setting Static IPs

I don’t want the VM IPs changing. Two ways to do this:

Option A — Router DHCP reservation (easier) Go to my router admin page, find the VM’s MAC address in the DHCP leases table, and assign it a fixed IP. The VM still uses DHCP but always gets the same address.

Option B — Static IP on the VM itself using Netplan (Ubuntu)

1
2
3
4
5
6
7
8
9
10
11
12
13
# /etc/netplan/00-installer-config.yaml
network:
  ethernets:
    ens33:                        # check your interface name with: ip link show
      dhcp4: false
      addresses:
        - 192.168.1.50/24         # change for each VM
      routes:
        - to: default
          via: 192.168.1.1        # your router IP
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1]
  version: 2
1
2
sudo netplan apply
ip addr show ens33               # verify new IP

[SCREENSHOT]Terminal showing the VM’s new static IP after netplan apply

I use Option B — it’s self-contained in the VM and doesn’t depend on my router’s admin panel.


SSH Access from Windows

Once the VMs have static IPs, I SSH into them from Windows Terminal instead of using VMware’s console window. Much more comfortable.

1
2
3
# From Windows PowerShell or Terminal
ssh homelab@192.168.1.50         # AdGuard VM
ssh homelab@192.168.1.51         # K3s VM

First time connecting, accept the host key fingerprint. I also copy my SSH public key so I don’t need a password:

1
2
3
4
5
# Generate key if you don't have one
ssh-keygen -t ed25519

# Copy to VM
ssh-copy-id homelab@192.168.1.51

[SCREENSHOT]Windows Terminal with two SSH sessions — one to each VM


Post-Install Setup (Both VMs)

I run these on every fresh Ubuntu VM before doing anything else:

1
2
3
4
5
6
7
8
9
10
11
12
# Update everything
sudo apt update && sudo apt upgrade -y

# Install useful tools
sudo apt install -y curl wget git htop net-tools unzip

# Disable swap (required for Kubernetes)
sudo swapoff -a
sudo sed -i '/ swap / s/^/#/' /etc/fstab   # comment out swap in fstab permanently

# Set hostname
sudo hostnamectl set-hostname homelab-k3s   # or homelab-dns

Verify swap is off

1
2
free -h
# Swap line should show 0B total

[SCREENSHOT]free -h output showing Swap: 0B 0B 0B


VMware Tools

VMware Tools improves performance and enables features like copy-paste between host and VM. On Ubuntu:

1
2
sudo apt install -y open-vm-tools
sudo systemctl enable open-vm-tools

Resource Management — Running Alongside Daily Work

Since I’m using this laptop daily, I configure VMware to not let the VMs starve my host:

VMware → VM Settings → Processors → Advanced

  • Check: “Limit processor usage” if needed

The approach I use: I suspend the VMs when I’m doing heavy work (video, compiling, etc.) and resume them when I just need them for browsing or writing. VMware suspend/resume is instant — the VMs come back in 2–3 seconds exactly where they left off.

1
VMware toolbar → Suspend (pause icon)  → resumes from exact state later

[SCREENSHOT]VMware showing both VMs — one running, showing power/suspend controls


Where I Am Now

At the end of Part 2 I have:

  • ✅ Two Ubuntu 22.04 VMs created in VMware 17 Pro
  • ✅ Both on Bridged networking with static IPs
  • ✅ SSH access from Windows working
  • ✅ Swap disabled on both
  • ✅ VMware Tools installed

Next: set up AdGuard Home on the DNS VM so I have internal DNS for my homelab hostnames.


You can find me online at:

My signature image

This post is licensed under CC BY 4.0 by the author.