#!/bin/bash # AI Server Start Script for Ubuntu # Optimized for RTX 2060 set -e # Colors GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' echo -e "${BLUE}🚀 Запуск AI Server...${NC}" # Check if running as root for system services if [[ $EUID -eq 0 ]]; then echo -e "${YELLOW}Запуск системных сервисов...${NC}" # Start Ollama service echo "🤖 Запуск Ollama..." systemctl start ollama # Wait for Ollama to start sleep 5 # Check Ollama status if systemctl is-active --quiet ollama; then echo -e "${GREEN}✅ Ollama запущен${NC}" else echo -e "${RED}❌ Ошибка запуска Ollama${NC}" journalctl -u ollama --no-pager -l | tail -10 exit 1 fi # Start Web UI service echo "🌐 Запуск веб-интерфейса..." systemctl start ai-server-webui # Wait for containers to start sleep 10 # Check Web UI status if systemctl is-active --quiet ai-server-webui; then echo -e "${GREEN}✅ Веб-интерфейс запущен${NC}" else echo -e "${RED}❌ Ошибка запуска веб-интерфейса${NC}" journalctl -u ai-server-webui --no-pager -l | tail -10 exit 1 fi else echo -e "${YELLOW}Запуск пользовательских сервисов...${NC}" # Change to working directory cd /opt/ai-server # Check if Ollama is running echo "🤖 Проверка Ollama..." if ! curl -s http://localhost:11434 >/dev/null 2>&1; then echo -e "${YELLOW}Ollama не отвечает, попытка запуска...${NC}" sudo systemctl start ollama sleep 5 # Check again if ! curl -s http://localhost:11434 >/dev/null 2>&1; then echo -e "${RED}❌ Не удается запустить Ollama${NC}" echo "Попробуйте: sudo systemctl status ollama" exit 1 fi fi echo -e "${GREEN}✅ Ollama доступен${NC}" # Start web interface containers echo "🌐 Запуск веб-интерфейса..." docker compose up -d # Wait for containers sleep 10 # Check container status if docker compose ps | grep -q "running"; then echo -e "${GREEN}✅ Веб-интерфейс запущен${NC}" else echo -e "${RED}❌ Ошибка запуска контейнеров${NC}" docker compose logs --tail=20 exit 1 fi fi # Get server IP SERVER_IP=$(hostname -I | awk '{print $1}') echo "" echo -e "${GREEN}🎉 AI Server успешно запущен!${NC}" echo "" echo -e "${BLUE}📍 Доступные сервисы:${NC}" echo " 🌐 Веб-интерфейс: http://${SERVER_IP}:3000" echo " 🤖 Ollama API: http://${SERVER_IP}:11434" echo " 📊 Portainer: http://${SERVER_IP}:9000 (если включен)" echo "" echo -e "${BLUE}💡 GPU информация:${NC}" if command -v nvidia-smi &> /dev/null; then nvidia-smi --query-gpu=name,memory.used,memory.total,utilization.gpu --format=csv,noheader,nounits 2>/dev/null | \ awk -F', ' '{printf " GPU: %s\n VRAM: %d/%d MB (%.1f%%)\n Загрузка: %d%%\n", $1, $2, $3, ($2/$3)*100, $4}' else echo " ❌ NVIDIA GPU недоступен" fi echo "" echo -e "${YELLOW}📋 Полезные команды:${NC}" echo " ai-status - проверка статуса" echo " ai-stop - остановка сервера" echo " ai-logs - просмотр логов" echo " ai-models - список моделей" echo "" echo -e "${GREEN}Готово к работе! 🎯${NC}"