diff --git a/install-docker-appliance.sh b/install-docker-appliance.sh new file mode 100644 index 0000000..85ebc61 --- /dev/null +++ b/install-docker-appliance.sh @@ -0,0 +1,101 @@ +#!/bin/bash +# ------------------------------------------------------------------------------ +# install-docker-appliance.sh +# +# Installs a lightweight Docker management appliance on Debian with Portainer. +# +# Copyright (c) Robbie Ferguson +# https://baldnerd.com +# All rights reserved. +# ------------------------------------------------------------------------------ + +set -e + +APP_NAME="Docker Appliance" +INSTALL_USER="${SUDO_USER:-$(whoami)}" +TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S") +LOG_FILE="/var/log/docker-appliance-install.log" + +log() { + echo "[$TIMESTAMP] $1" | tee -a "$LOG_FILE" +} + +header() { + echo + echo "=====================================" + echo "$1" + echo "=====================================" +} + +header "Starting $APP_NAME Installation" + +log "Updating system..." +apt update && apt upgrade -y + +header "Installing dependencies..." +apt install -y curl ca-certificates gnupg lsb-release software-properties-common apt-transport-https unzip sudo + +header "Installing Docker..." +curl -fsSL https://get.docker.com -o get-docker.sh +sh get-docker.sh +log "Docker installed." + +log "Adding $INSTALL_USER to docker group..." +usermod -aG docker "$INSTALL_USER" + +header "Installing Docker Compose plugin..." +apt install -y docker-compose-plugin +log "Docker Compose plugin installed." + +header "Launching Portainer container..." +docker volume create portainer_data + +docker run -d \ + --name portainer \ + -p 9000:9000 \ + -p 8000:8000 \ + --restart=always \ + -v /var/run/docker.sock:/var/run/docker.sock \ + -v portainer_data:/data \ + portainer/portainer-ce:latest +log "Portainer running on port 9000" + +# ============================ +# Setup NGINX reverse proxy +# ============================ + +header "Installing NGINX..." +apt install -y nginx + +log "Creating reverse proxy for Portainer..." +cat >/etc/nginx/sites-available/portainer <:9000" +log "Reboot recommended to finalize docker group membership."