diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..7e9ad56 --- /dev/null +++ b/install.sh @@ -0,0 +1,74 @@ +#!/usr/bin/env bash +set -euo pipefail + +# install.sh +# Automated installation script for Docker and Docker Compose on Debian/Ubuntu systems. + +echo "Starting installation process..." + +# 1. OS Detection (Basic check for Debian/Ubuntu) +if [ -f /etc/os-release ]; then + . /etc/os-release + OS=$NAME + VER=$VERSION_ID + echo "Detected OS: $OS $VER" + if [[ "$ID" != "debian" && "$ID" != "ubuntu" && "$ID_LIKE" != *"debian"* && "$ID_LIKE" != *"ubuntu"* ]]; then + echo "⚠️ Warning: This script is optimized for Debian/Ubuntu. Your system ($ID) might require different steps." + read -p "Press Enter to continue anyway, or Ctrl+C to abort..." + fi +else + echo "❌ Error: Cannot detect OS. /etc/os-release not found." + exit 1 +fi + +# 2. Check for curl +if ! command -v curl >/dev/null 2>&1; then + echo "Installing curl..." + sudo apt-get update && sudo apt-get install -y curl +fi + +# 3. install Docker +if command -v docker >/dev/null 2>&1; then + echo "✅ Docker is already installed." +else + echo "Installing Docker..." + curl -fsSL https://get.docker.com -o get-docker.sh + sudo sh get-docker.sh + rm get-docker.sh + echo "✅ Docker installed successfully." +fi + +# 4. Post-installation steps (Manage Docker as a non-root user) +if getent group docker >/dev/null 2>&1; then + if groups "$USER" | grep &>/dev/null "\bdocker\b"; then + echo "✅ User '$USER' is already in the 'docker' group." + else + echo "Adding user '$USER' to the 'docker' group..." + sudo usermod -aG docker "$USER" + echo "⚠️ You will need to log out and log back in for this change to take effect." + fi +else + echo "Creating 'docker' group and adding user..." + sudo groupadd docker + sudo usermod -aG docker "$USER" + echo "⚠️ You will need to log out and log back in for this change to take effect." +fi + +# 5. Check Docker Compose +if docker compose version >/dev/null 2>&1; then + echo "✅ Docker Compose plugin is installed." +else + echo "⚠️ Docker Compose plugin seems missing even after Docker installation." + echo "Attempting to install 'docker-compose-plugin' via apt..." + sudo apt-get update && sudo apt-get install -y docker-compose-plugin +fi + +echo "Detailed verification:" +docker --version +docker compose version + +echo "==========================================" +echo "Installation complete!" +echo "If you saw a warning about group membership, please log out and log back in." +echo "Then run './start.sh' to check requirements and start the app." +echo "==========================================" diff --git a/start.sh b/start.sh index 482afb2..0fa3431 100755 --- a/start.sh +++ b/start.sh @@ -3,6 +3,31 @@ set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$ROOT_DIR" + +check_requirements() { + echo "Checking system requirements..." + + if ! command -v docker >/dev/null 2>&1; then + echo "❌ Error: 'docker' command not found." + echo " Please install Docker: https://docs.docker.com/get-docker/" + exit 1 + fi + + if ! docker info >/dev/null 2>&1; then + echo "❌ Error: Docker daemon is not running or you need to add your user to the 'docker' group." + exit 1 + fi + + if ! docker compose version >/dev/null 2>&1; then + echo "❌ Error: 'docker compose' command not found." + echo " Please install Docker Compose plugin." + exit 1 + fi + + echo "✅ Docker requirements met." +} + +check_requirements AUTO_UPDATE="${AUTO_UPDATE:-1}" AUTO_X11_AUTH="${AUTO_X11_AUTH:-1}"