diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..2a50d6c --- /dev/null +++ b/install.sh @@ -0,0 +1,63 @@ +#!/bin/bash + +# Helper function to check a command +command_exists() { + command -v "$1" >/dev/null 2>&1 +} + +DOCKER_OK=true +COMPOSE_OK=true + +# Check for Docker +if ! command_exists docker; then + DOCKER_OK=false +fi + +# Check for Docker Compose (plugin or legacy) +if ! docker compose version >/dev/null 2>&1 && ! command_exists docker-compose; then + COMPOSE_OK=false +fi + +# If either is missing, run install script +if [[ "$DOCKER_OK" = false || "$COMPOSE_OK" = false ]]; then + echo "Missing required tools. Running installer..." + git clone https://git.giovanesaggio.com/Selfhosting/docker_setup.git + ./docker_setup/docker_setup.sh + rm -r docker_setup +fi + +# Parse and prompt for .env variables +ENV_FILE=".env" + +if [[ ! -f "$ENV_FILE" ]]; then + echo "$ENV_FILE not found. Creating a new one." + touch "$ENV_FILE" +fi + +declare -A ENV_VARS + +# Load existing env vars +while IFS='=' read -r key value; do + [[ "$key" =~ ^[A-Z_][A-Z0-9_]*$ ]] || continue + ENV_VARS["$key"]="$value" +done < "$ENV_FILE" + +echo "Configure environment variables (press ENTER to keep current value):" + +# Prompt for each variable +for key in "${!ENV_VARS[@]}"; do + current="${ENV_VARS[$key]}" + read -p "$key [$current]: " new_value + if [[ -n "$new_value" ]]; then + ENV_VARS["$key"]="$new_value" + fi +done + +# Overwrite .env with updated values +> "$ENV_FILE" +for key in "${!ENV_VARS[@]}"; do + echo "$key=${ENV_VARS[$key]}" >> "$ENV_FILE" +done + +# Launch Docker +docker compose up -d