I’ve been meaning to write a guide like this but haven’t had a chance to complete it yet. In short, I’d recommend setting up an Ubuntu Server instance on some old hardware and using incus with ZFS to setup a separate container or VM for each service you want to run: https://linuxcontainers.org/incus/introduction/
This way, if something doesn’t work out, you can just delete the container or VM. It also makes it easy to make snapshots or backups before you make a change (e.g. perform an upgrade) so you can easily roll back.
You can even try incus online (see the above link) to get an idea of how it works.
This is what I would recommend too - QEMU + libvirt with Sanoid for automatic snapshot management. Incus is also a solid option too