58 lines
1.8 KiB
Bash
58 lines
1.8 KiB
Bash
#!/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 |