I went for the “easiest” way in my opinion.
I installed Ubuntu headless server.
Installed docker using the instructions on their site (not the ubuntu/canonical version).
Install Home Assistant using normal Docker image.
I did not use the HassIO (with supervisor etc.) in docker because i wanted to have flexibility, and also the docker-in-docker seemed odd to me. Not that it isn’t a good setup - but I am very happy with my setup.
I use Portainer for most of my docker management, and a SSH in terminal when Portainer doesn’t have the ability I want. For example when I create a container I use terminal so I can make sure all the flags/volumes/env. stuff is correct. After creation, I manage containers with Portainer.
This has allowed me to learn a lot, but I think it is still an easy process. Adding other containers and communication between them hasn’t been a problem. Container management has been simple enough - and since most things have a web interface, you don’t need to access the containers themselves often.
For configuration files, I have them mapped using volumes to the host machine (for all containers, not just HA). So I can scrap a container and not lose config files. I can also modify them without accessing the docker containers - just modify the files on the host machine and restart the container. You can even use Samba or Syncthing to access the configuration files and never even need to SSH or something similar to the server.
If you have any questions, I’m happy to do my best to answer them.
I am still very new to all of this, but have some experiences so far that I am happy to share!
DeadEnd