Docker Host
KVM versus Proxmox
I originally started using Linux KVM based VM, with QEMU and Libvirt on Ubuntu bare metal, circa 2014, this before was I was aware that Proxmox existed. Around 2020 I moved to Debian as my preferred bare metal distribution for server and desktop, I stopped using Windows as my main home desktop around this time. When I started playing around with Docker to create my own container images I preferred use of the Alpine distribution and where necessary using the S6-rc init system. I avoid the use of Ubuntu now as I find it bloated and some of their practices unpalatable, e.g. forced use of Snaps, requiring registration for latest package updates. I see no point re-engaging with Ubuntu at this time, as the dissatisfaction that made me move are still there. Beside, I simply prefer Debian now, stable for servers and testing for main desktop. I have been happily using XFCE for about 7 year now as my main Linux desktop GUI (2024-04).
Interestingly as I understand it Proxmox uses Debian and Linux KVM VM, however they also provide a lot of additional functionally, such as nice web interface, nice VM backup, and LXC container system, as well as other functionality.
I use nftables as my main edge router / firewall on bare metal. I could probably run this on a VM within Proxmox, but the Router hardware is not especially powerful and at this time I prefer to run the main firewall on bare metal.
I may try Proxmox in the future, there is currently no compelling reason for me to do so at this time.
As my old router became too unreliable to use circa November 2024, I have ordered a replacement. My old router tl;dr
My main home server is based upon an Intel Atom C3750 server, this is still currently adequately meeting my needs. I have upgraded with a 2.5Gb/s PCIe card. tl;dr I also still operate an older Intel Atom C2750 as a back-up server. This gets started by the main server once a week to run a Restic back-up with a Python script I wrote.
Setup VM
I use Linux KVM with libvirt, virsh and qemu.
- Install standard Debian files. See kvm setup
- I simply do not normally need a GUI. Where convenient I may separately install a GUI that can be accessed via VNC. I often install on my main VM host, but not router host.
- Add user to libvirt and libvirt-qemu, e.g.
sudo usermod -a -G libvirt-qemu baumkp
- If you are ssh'ing into the host machine remember to add the ssh key to allow password-less login. e.g.
ssh-copy-id 192.168.1.21
from the host machined where192.168.1.21
is the remote machine. If you do not do this the VM installer can ask for password continuously to the point of making use non-functional.- The user ssh keys are stored here
~/.ssh/known_hosts
. If there is a problem with ssh key have a look here.- Check file permission is local user
- Delete old key in file if necessary
- Delete whole file if necessary
sudo apt install vim
to install vim- Set static ip address and a bridge network (this varies on the install type)
- For networkd:
sudo apt install bridge-utils
KVM commonly uses a bridge network connection to access the host- The KVM virtual machine does not necessarily need a bridge network, but does usually need a static IP address
- Docker does not specifically require a HOST with bridge
/etc/network/interfaces
Reference
A list of self hosted applications: