#!/bin/bash
apt update
apt install -y ca-certificates curl gnupg lsb-release wget acl
mkdir -p /etc/apt/keyrings

OSNAME=$(uname -a)
OSDEB='Debian'
OSUB='Ubuntu'

if grep -q $OSDEB <<< $OSNAME
then
        curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
elif grep -q $OSUB <<< $OSNAME
then
        curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
fi

if grep -q $OSDEB <<< $OSNAME
then
        echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
elif grep -q $OSUB <<< $OSNAME
then
        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
fi

apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

wget -O /usr/local/bin/docker-compose https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64
chmod +x /usr/local/bin/docker-compose

wget https://github.com/bcicen/ctop/releases/download/v0.7.7/ctop-0.7.7-linux-amd64 -O /usr/local/bin/ctop
chmod +x /usr/local/bin/ctop

setfacl -m "g:docker:rw" /var/run/docker.sock
addgroup --system docker
adduser ${SUDO_USER:-$USER} docker
usermod -aG docker ${SUDO_USER:-$USER}

echo "Would you like to install the portainer web panel for docker? (y or n)"
read PORTAINER

if [ $PORTAINER == 'y' ]
then
	mkdir /opt/portainer
	chgrp docker /opt/portainer
	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
fi

echo "A restart is required in order to apply group changes, if you don't want to use sudo before each docker related command, you must restart"
echo "Would you like to restart? (y or n)"
read ANSWER

if [ $ANSWER == 'y' ]
then
        reboot
elif [ $ANSWER == 'n' ]
then
        exit
fi
