#!/bin/bash PRIMARY_NIC=$(ip route | awk '/default/ {print $5}') IP_ADDRESS=$(ip -4 addr show "$PRIMARY_NIC" | awk '/inet / {print $2}' | cut -d/ -f1) if ! [ -x "$(command -v docker)" ]; then read -p "Docker not detected. Do you want to install it?" -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then echo "Installing docker" # https://docs.docker.com/engine/install/ubuntu/ # Add Docker's official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # Add the repository to Apt sources: echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin else exit 1 fi fi if [ ! "$(docker ps -a -q -f name=portainer)" ]; then echo "Installing portainer" if ! (docker volume ls --format "{{.Name}}" | grep -q "^portainer_data$"); then echo "Create portainer volume" docker volume create portainer_data fi 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:lts fi echo "You can now access Portainer on https://$IP_ADDRESS:9443"