Setting up Proxmox on the Home Lab

I have spent the last couple of days moving my two “home lab” servers over to using Proxmox Virtual Environment as their base operating system.

This is the latest step in my attempt to separate out and containerise the tasks that run on our home network. Starting from one very overloaded Raspberry Pi, a few years ago I bought a couple of Lenovo m93p Tiny mini PCs to do the job instead. I started to move from “everything runs as ian and the home directory is a mess” towards having different users run each task, and then eventually to using Docker to run some of them.

My search for an easy web UI for managing Docker containers led me eventually to Proxmox, which admittedly… doesn’t do that. (I’ve still yet to find an application that does what I originally wanted.) However, Proxmox does seem to be all the rage in amateur “home lab” setups—doing sysadmin work and not getting paid, hooray!

I thought I’d give it a shot, and over a couple of days, I’ve moved all my stuff into Proxmox-managed containers.

Proxmox screenshot showing 10 containers running across a cluster of two nodes

Here’s what I learned:

apt update
apt upgrade -y
apt install -y unattended-upgrades apt-listchanges vim curl sudo avahi-daemon
adduser ian
usermod -aG sudo ian
mkdir /home/ian/.ssh
cp /root/.ssh/authorized_keys /home/ian/.ssh/authorized_keys
chown -R ian:ian /home/ian/.ssh
sed -i 's/PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config
service ssh reload

"How many layers of containerisation are you on?" "Like maybe 5 or 6, right now, my dude." "You are like a little baby, watch this" (Proxmox screenshot showing LXC containers with internal docker containers)

echo 'lxc.cgroup.devices.allow: c 10:200 rwm' >> /etc/pve/lxc/[your_lxc_id].conf
echo 'lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file' >> /etc/pve/lxc/[your_lxc_id].conf
systemctl stop pve-cluster corosync
pmxcfs -l
rm -R /etc/corosync/*
rm /etc/pve/corosync.conf
killall pmxcfs
systemctl start pve-cluster

Console showing the results of rtl_test, with two dongles available, one with a corrupted name that could not be accessed

Well, that sure was a way to spend the weekend. Now I have a nice neat containerised set of network services, and I’m off to do anything other than looking at screens for a while.


I hadn’t heard of that, no. Looks handy, I will check it out, thanks!

Add a Comment