Lab on proxmox

updated: 28-12-2025

Proxmox is an OpenSource virtualization platform that is very well suited for a homelab.
It can be downloaded from proxmox.com.

I will take you on this yourney (almost live), updating this as I progress, making mistakes, correcting them...
And I will write it all down here..
When the lab works, this document will be revised... hiding my errors and F-ups..
As I am stil learning how proxmox works, never knew it existed until a few weeks ago.

In these pages we are building our homelab step-by-step, using containers and VM's for various appliances.
To name a few things we are going to make:
- 2 nat networks (dev and prod)
- A nameserver
- A reverse proxy server (used for this site)
- A nginx server in dev
- A nginx server in prod
- A gitlab server
- A gitlab runner
- A wireguard vpn server
- and many more ....

What I set out to do with my homelab, is testing ansible playbooks and creating Configuration as Code for ansible automation platform. So when all the basic services are in place I will be installing the contianerized version of the ansible automation platform.

In my "lab in a box" installation I had a version(2.4) of automation platform already running, including configuration as code. My goal is to do the same in this proxmox installation with automation platform 2.5 or higher.

As I got further with the functionality, I realized that having 2 extra NAT networks was not as convinient as I thought it would be. I changed these into (SDN) lan segments with a seperate network address range, with a linux router running in a lxc container.

This network setup is a much more versatile configuration for me.

selecting hardware

First we need to select the hardware for proxmox, we want good performance and lots of memory.
The first tests I did with a refurbished HP EliteDesk mini PC with an i5 4 core cpu and 32GB memory. Having some experience with virtualization, more memory is always better.
For the next exercise, I chose for a mini PC system with 64GB memory and a i9 laptop cpu with 14 cores, that should be enough for now.
The storage is this mini PC is NVME2 1TB and a 2.5Gb network adapter make this system complete.

Possibly a bit too much, but when we want to use RedHat ansible automation platform on this, we need some resources.

Keeping the first mini PC as services machine, the core services for the "Enterprise" will land on the "old" proxmox box. We will migrate these to the big machine in time.

Having a NAS is a great addition to the configuration, this way you can offload backups to an external system.
So when one of the machines in your cluster fails, you have backups of your containers and VM's.

Installing proxmox

The installation of the proxmox software is super simple, just follow the instructions on the proxmox site. The configuration after installation was the tricky bit for me, because I wanted the network to have a particular layout.

Install_and_configure

Esure remote access

To be able to use your homelab remotely, create a vpn service. A vpn service is also usable as secure connection on open wifi networks.
Add VPN container

Add nameserver to your network

A DNS service is essential in an Enterprise like setup. Your hosts must be reachable by name and not by ip addess. Install and configure a caching nameserver..

Install_and_configure_nameserver

Add docker host

To be able to use recent developments in containers like microservices, we could convert all images to lxc images. This could be an enormous task. So to use these images as they are delivered, we will add a docker host to our homelab.

Add docker host

Add LDAP server

For authentication in applications a LDAP server is essential to have.
We want Ansible Automation Platform to authenticate against our LDAP server.
To accomplish this, we need to build one in our lab.

Install ldap server

Add RH repository server

To be able to install additional packages after deployment, we need a repoository if the internet is slow, on a fast network, just connect to the internet.

Install reposerver

Add a PKI certificate server

Encrypted communication is mandatory, so we will need certificates and a CA.
You could use Let'sEncrypt which makes certificates easy. Let'sEncrypt has a downside, it only generates certificates for official registered domains that are resolvable. For that, just use Let'sEncrypt, its the best.
I chose to use easyrsa, which has some more steps, but can create certificates for internal domains.
I wanted to have some form of control.

Create PKI

Add a gitlab server to the local installation

As we create ansible code and run this code through automation platform, we need a place to store all this. We could use an online git service, but when we want to run pipelines, things get complicated. So we will run the gitlab service locally, on this proxmox cluster we have here.

Install Automation platform

This is for me the most important part of the homelab, a enterprise like installation
of the ansible automation platform.

Install Automation Platform

The homelab environment is now complete for me to run any tests with ansible I want to run.
Refer to the configuration as code section for a description of configuration as code for ansible automation platform 2.4.
A desription of ansible automation platform 2.5 configuration as code can be found here: ConfigAsCode for RHAAP v 2.5
and for automation platform 2.6 here:
ConfigAsCode for RHAAP V 2.6.

Using Automation platform on proxmox

It would be nice to be able to use ansible and automation platform on our proxmox homelab.
After installation and configuring the basics it is time to start using the platform for what it is made for..

The first thing we need on any platform for rhaap to be functional, is an inventory. While we could create a static inventory that we can extend on each deployment, we can also create a dynamic inventory that gets updated every run.

Dynamic inventory on proxmox

One thing could be added still, that is monitoring.. something like grafana with prometeus, to be able to send alerts to the EDA of ansible automation platform. Then you could handle events as they happen to realize self healing infrastructure..
There are always more options to configure and test.

Have fun!