Here is what I did to get this all working:
Install Docker
Reference: https://docs.docker.com/engine/install/ubuntu/
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo docker run hello-world
Install Portainer
Reference: https://docs.portainer.io/start/install/server/docker/linux
sudo docker volume create portainer_data
sudo docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
sudo docker ps
Pi-Hole
Reference: https://www.reddit.com/r/portainer/comments/wdm7j6/portainer_request_failed_with_status_code_500/
Before deploying pi-hole, run the following commands:
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
Transcribe the following .yaml to Portainer settings: https://hub.docker.com/r/pihole/pihole
Optionally I set Hostname and Domain Name under Network.