#!/bin/bash # --- CONFIGURATION --- BASE_DIR="/home/miles" # List of folders to create based on your docker-compose FOLDERS=( "code-config" "projects" "homarr-data" "navidrome-data" "navidrome-music" "trilium-data" "gitea-data" "roms" "romm-data" "ntfy-cache" "qbittorrent-config" "downloads" ) # --- 1. INSTALL DOCKER --- if ! [ -x "$(command -v docker)" ]; then echo "🚀 Docker not found. Installing..." curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo usermod -aG docker $USER echo "✅ Docker installed. (Note: You may need to logout and back in for group changes to take effect)" else echo "✅ Docker is already installed." fi # --- 2. CREATE FOLDERS --- echo "📂 Creating directory structure..." for folder in "${FOLDERS[@]}"; do mkdir -p "$BASE_DIR/$folder" done # Set permissions to PUID 1000 sudo chown -R $USER:$USER $BASE_DIR/ echo "✅ Folders created and permissions set to user $USER." # --- 3. MANAGEMENT MENU --- show_menu() { echo "------------------------------------------" echo " HOME SERVER MANAGEMENT MENU" echo "------------------------------------------" echo "1) Start/Update Stack (Up -d)" echo "2) Stop Stack (Down)" echo "3) View Logs (Follow)" echo "4) Update Images (Pull)" echo "5) Check Container Status" echo "6) Exit" echo "------------------------------------------" } while true; do show_menu read -p "Choose an option [1-6]: " choice case $choice in 1) docker compose up -d ;; 2) docker compose down ;; 3) docker compose logs -f --tail=50 ;; 4) docker compose pull && docker compose up -d ;; 5) docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" ;; 6) exit 0 ;; *) echo "Invalid option. Try again." ;; esac done