Enlisted Submarine Warfare Insignia
← Back to Blog

Building My Home Server with Proxmox

December 7, 2025 12 min read

I recently brought home a retired server from the office to build a personal home lab — not just for learning, but to unify my home network, strengthen my cybersecurity skills, and experiment with virtualization, containerization, and network architecture.

1. Preparing the Server & Accessing iDRAC

After bringing the Dell PowerEdge server home, the first task was gaining remote access via iDRAC. The only display port it has is a VGA and to be honest I don't have any monitors that could support that. Initially, iDRAC was set with an old static IP address from the office, so I had to use the front panel to change it to DHCP. This allowed me to boot it up on my network and access it via whatever IP it got. Once inside iDRAC, I mounted the installation ISO remotely so I could install Proxmox VE without physical media.

2. Installing Proxmox VE

With the ISO mounted:

Initially, the server appeared on my home network but wasn't reachable from another subnet — an issue that would surface again later and become a major troubleshooting point.

3. Installing pfSense as a VM

Next, I spun up a pfSense VM to serve as the network gateway for all lab services.

This created a clean separation between my home network and the lab network.

4. Fixing Routing Between Home LAN and Lab LAN

My home LAN could not reach my lab network. My ISP router (I'll get an aftermarket one eventually) does not support static routes, so traffic destined for the lab had no idea where to go.

To fix this, I manually added a static route on my Windows PC:

route -p add [lab subnet] mask 255.255.255.0 [pfSense IP]

Finally I could access all lab systems through pfSense. This validated the pfSense routing configuration and bypassed the ISP router limitations.

5. Creating the Ubuntu Server VM

Inside Proxmox, I created an Ubuntu Server 24.04 VM:

Initially, Ubuntu installed correctly, but after the first reboot, it lost network connectivity. Running ip a showed no IP assigned.

To fix this, I updated the netplan config:

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

Updated the file to:

network:
  version: 2
  ethernets:
    ens18:
      dhcp4: false
      addresses:
        - [server IP]/24
      gateway4: [Lab gateway]
      nameservers:
        addresses:
          - 1.1.1.1
          - 8.8.8.8

Applied with:

sudo netplan apply

Now I could ping 8.8.8.8 and access the VM from both Proxmox and SSH.

6. Inside Proxmox: Fixing Display Lag (SPICE Console)

Proxmox's noVNC console was laggy, so I switched the display type to SPICE and downloaded the .vv remote viewer file.

SPICE dramatically improved responsiveness and made the VM feel like a native desktop.

7. Installing Docker and Portainer on the Ubuntu Server

After updating the OS, I installed Docker:

sudo apt install docker.io
sudo systemctl enable docker
sudo systemctl start docker

Added my user to the Docker group:

sudo usermod -aG docker $USER
newgrp docker

Created the Portainer volume:

docker volume create portainer_data

Then deployed Portainer:

docker run -d \
  -p 8000:8000 \
  -p 9443:9443 \
  --name portainer \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

Portainer opened successfully at:

https://[Server IP]:9443

This gives me a powerful GUI for managing all containers.

8. Migrating Existing Docker Services (Uptime Kuma)

My existing Uptime Kuma instance on Windows uses a Docker-managed volume. To migrate it:

I identified the volume location with:

docker inspect uptime-kuma

Exported the /app/data folder to a .tar.gz, copied it to the Ubuntu VM, and mounted it into a new container:

docker run -d \
  -p 3001:3001 \
  -v kuma_data:/app/data \
  louislam/uptime-kuma

Once I did that, I could access my monitoring panel from the locally hosted container.

9. Created a Dedicated NAS Using Debian + OpenMediaVault

I also wanted reliable shared storage for ISOs, backups, and future media so I built a full NAS inside Proxmox using the following steps:

Installing Debian as a VM

After OS installation, I hardened the system with:

sudo apt update && sudo apt upgrade -y
sudo apt install ssh sudo cockpit -y

Installing OpenMediaVault (OMV)

OMV was installed directly into Debian using the official script:

wget -O - https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install | sudo bash

This transformed the Debian VM into a fully managed NAS accessible at:

http://<debian-ip>

Configuring OMV

Inside OMV, I configured:

Finally, I mounted the NFS share on Proxmox to allow:

This NAS is now my lab's backbone storage system.

10. Future Container Plans

Now that the base environment is stable, I plan to deploy:

These will all run under Docker on the Ubuntu host.

11. StreamDeck Integration

Just for fun and ease of management, I added buttons on my StreamDeck macro pad to open each of the web portals for the things I'm hosting and even added custom icons. This adds a nice little touch compared to going to each IP/port number in a browser or adding them to bookmarks or the default homepage, in my opinion.

Results

I now have a fully functional home server that has its own segregated network with firewall rules, a Docker server with Portainer to have web access from my PC, as well as a home NAS as a private cloud!

Conclusion

It has been a long day of experimenting and troubleshooting and I definitely learned a lot regarding networking and firewall rules, server OS installation and tuning, resource management and so much more. It's not much but it's enough to be proud of. Not so long ago I would never think I could do things I did today. Definitely looking forward to continuing this journey of building this out and adding more to it.

server home lab networking proxmox