Newer
Older
homeassistant-infra / scripts / auto-configure-ha.sh
#!/bin/bash
#
# Automatyczna konfiguracja Home Assistant po pierwszym uruchomieniu
# Użycie: ./auto-configure-ha.sh [test|prod]
#

set -e

ENVIRONMENT="${1:-test}"

if [ "$ENVIRONMENT" = "test" ]; then
    HA_IP="192.168.50.210"
    HA_NAME="Test Home"
elif [ "$ENVIRONMENT" = "prod" ]; then
    HA_IP="192.168.50.211"
    HA_NAME="Production Home"
else
    echo "❌ Użycie: $0 [test|prod]"
    exit 1
fi

HA_URL="http://${HA_IP}:8123"
HA_USER="admin"
HA_PASS="HomeAssistant2024!"
SSH_PASS="QWer!@34"

echo "======================================"
echo "🤖 Automatyczna konfiguracja HA"
echo "======================================"
echo "Środowisko: $ENVIRONMENT"
echo "IP: $HA_IP"
echo "======================================"
echo ""

# Czekanie na uruchomienie HA
echo "⏳ Czekam na uruchomienie Home Assistant..."
MAX_WAIT=30
for i in $(seq 1 $MAX_WAIT); do
    echo -n "   Próba $i/$MAX_WAIT... "
    if curl -s -m 5 "${HA_URL}/api/" > /dev/null 2>&1; then
        echo "✅ HA odpowiada!"
        break
    fi
    if [ $i -eq $MAX_WAIT ]; then
        echo "❌ Timeout - HA nie odpowiada po $((MAX_WAIT * 10)) sekundach"
        echo "   Spróbuj ponownie później lub sprawdź logi VM"
        exit 1
    fi
    echo "czekam..."
    sleep 10
done

echo ""
echo "🔍 Sprawdzanie czy HA jest już skonfigurowane..."
ONBOARDING_STATUS=$(curl -s "${HA_URL}/api/onboarding" 2>/dev/null || echo '{}')

if echo "$ONBOARDING_STATUS" | grep -q '"done":true'; then
    echo "✅ Home Assistant jest już skonfigurowane"
    echo "   Pomijam onboarding"
else
    echo "🎯 Rozpoczynam automatyczny onboarding..."
    
    # Krok 1: Utworzenie pierwszego użytkownika
    echo "👤 Tworzenie użytkownika administratora..."
    USER_RESPONSE=$(curl -s -X POST "${HA_URL}/api/onboarding/users" \
        -H "Content-Type: application/json" \
        -d "{
            \"client_id\": \"${HA_URL}\",
            \"name\": \"Administrator\",
            \"username\": \"${HA_USER}\",
            \"password\": \"${HA_PASS}\",
            \"language\": \"pl\"
        }" 2>/dev/null || echo '{"error":"failed"}')
    
    if echo "$USER_RESPONSE" | grep -q "auth_token"; then
        echo "   ✅ Użytkownik utworzony"
        AUTH_TOKEN=$(echo "$USER_RESPONSE" | grep -o '"auth_token":"[^"]*"' | cut -d'"' -f4)
    else
        echo "   ⚠️  Nie udało się utworzyć użytkownika - może już istnieje"
        # Próba logowania
        LOGIN_RESPONSE=$(curl -s -X POST "${HA_URL}/auth/login_flow" \
            -H "Content-Type: application/json" \
            -d "{
                \"client_id\": \"${HA_URL}\",
                \"handler\": [\"homeassistant\", null],
                \"redirect_uri\": \"${HA_URL}\"
            }" 2>/dev/null)
        # To wymaga bardziej skomplikowanej obsługi flow logowania
    fi
    
    # Krok 2: Konfiguracja core (lokalizacja, nazwa)
    echo "🏠 Konfiguracja podstawowych ustawień..."
    curl -s -X POST "${HA_URL}/api/onboarding/core_config" \
        -H "Content-Type: application/json" \
        -d "{
            \"location_name\": \"${HA_NAME}\",
            \"latitude\": 52.2297,
            \"longitude\": 21.0122,
            \"elevation\": 100,
            \"unit_system\": \"metric\",
            \"currency\": \"PLN\",
            \"time_zone\": \"Europe/Warsaw\"
        }" > /dev/null 2>&1 || echo "   ⚠️  Konfiguracja może być już ustawiona"
    
    # Krok 3: Zakończenie onboardingu
    echo "✅ Finalizacja onboardingu..."
    curl -s -X POST "${HA_URL}/api/onboarding/integration" \
        -H "Content-Type: application/json" \
        -d '{}' > /dev/null 2>&1 || true
fi

echo ""
echo "======================================"
echo "✅ KONFIGURACJA ZAKOŃCZONA"
echo "======================================"
echo ""
echo "📋 Dane dostępowe:"
echo "   URL: ${HA_URL}"
echo "   Username: ${HA_USER}"
echo "   Password: ${HA_PASS}"
echo ""
echo "⚠️  WAŻNE: SSH nie może być włączony automatycznie przez API"
echo "   Musisz to zrobić raz ręcznie przez WebUI:"
echo ""
echo "   1. Zaloguj się: ${HA_URL}"
echo "   2. Settings → Add-ons → Terminal & SSH"
echo "   3. Install → Start"
echo "   4. Configuration → Hasło: ${SSH_PASS}"
echo ""
echo "💡 LUB użyj alternatywnego skryptu setup-ssh-addon.sh"
echo "======================================"