#!/bin/bash set -e echo "🤖 ============ JARVIS CORE SETUP ============" echo "" # ============ COLORS ============ GREEN='\033[0;32m' BLUE='\033[0;34m' YELLOW='\033[1;33m' NC='\033[0m' # ============ CONFIGURATION ============ JARVIS_HOME="/home/jarvis-core/jarvis" DOMAIN="${1:-jarvis.local}" echo -e "${BLUE}📍 Setup Directory: $JARVIS_HOME${NC}" echo -e "${BLUE}📍 Domain: $DOMAIN${NC}" echo "" # ============ 1. SYSTEM UPDATE ============ echo -e "${YELLOW}[1/7] System Update...${NC}" sudo apt-get update -qq sudo apt-get upgrade -y -qq sudo apt-get install -y -qq \ curl \ wget \ git \ htop \ net-tools \ openssl > /dev/null echo -e "${GREEN}✅ System updated${NC}" # ============ 2. DOCKER ============ echo -e "${YELLOW}[2/7] Installing Docker...${NC}" if ! command -v docker &> /dev/null; then curl -fsSL https://get.docker.com -o get-docker.sh sudo bash get-docker.sh > /dev/null 2>&1 rm get-docker.sh sudo usermod -aG docker jarvis-core echo -e "${GREEN}✅ Docker installed${NC}" else echo -e "${GREEN}✅ Docker already installed${NC}" fi # ============ 3. DOCKER COMPOSE ============ echo -e "${YELLOW}[3/7] Installing Docker Compose...${NC}" if ! command -v docker-compose &> /dev/null; then COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep 'tag_name' | cut -d'"' -f4) sudo curl -L "https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose > /dev/null 2>&1 sudo chmod +x /usr/local/bin/docker-compose echo -e "${GREEN}✅ Docker Compose installed${NC}" else echo -e "${GREEN}✅ Docker Compose already installed${NC}" fi # ============ 4. PROJECT STRUCTURE ============ echo -e "${YELLOW}[4/7] Creating project structure...${NC}" mkdir -p $JARVIS_HOME/{config,data,logs,api,web} cd $JARVIS_HOME # Create directories mkdir -p data/{postgres,redis,milvus,etcd,ollama,n8n} mkdir -p logs/{api,n8n,nginx} echo -e "${GREEN}✅ Project structure created${NC}" # ============ 5. CONFIGURATION FILES ============ echo -e "${YELLOW}[5/7] Creating configuration files...${NC}" # Copy docker-compose.yml (you'll need to provide this) # This assumes files are available locally if [ ! -f "docker-compose.yml" ]; then echo -e "${YELLOW}⚠️ docker-compose.yml not found. Please copy it to $JARVIS_HOME${NC}" fi # Create .env file cat > .env << EOF DOMAIN=$DOMAIN DB_PASSWORD=$(openssl rand -base64 32) CLAUDE_API_KEY= OLLAMA_MODEL=mistral LOG_LEVEL=info JWT_SECRET=$(openssl rand -base64 32) API_KEY_ADMIN=$(openssl rand -base64 32) N8N_ENCRYPTION_KEY=$(openssl rand -base64 32) EOF echo -e "${GREEN}✅ Configuration created${NC}" echo -e "${YELLOW} 📝 Edit .env with your API keys!${NC}" # ============ 6. VOLUMES & PERMISSIONS ============ echo -e "${YELLOW}[6/7] Setting up volumes...${NC}" sudo chown -R jarvis-core:jarvis-core $JARVIS_HOME chmod -R 755 $JARVIS_HOME chmod 600 .env echo -e "${GREEN}✅ Volumes configured${NC}" # ============ 7. DOCKER NETWORK ============ echo -e "${YELLOW}[7/7] Creating Docker network...${NC}" docker network create jarvis-net 2>/dev/null || true echo -e "${GREEN}✅ Docker network ready${NC}" echo "" echo -e "${GREEN}============================================${NC}" echo -e "${GREEN}🚀 JARVIS CORE READY FOR DEPLOYMENT${NC}" echo -e "${GREEN}============================================${NC}" echo "" echo -e "${BLUE}Next steps:${NC}" echo "1. cd $JARVIS_HOME" echo "2. Edit .env - Add your CLAUDE_API_KEY" echo "3. docker-compose up -d" echo "" echo -e "${BLUE}Services:${NC}" echo " • API: http://$DOMAIN:8000" echo " • n8n: http://$DOMAIN:5678" echo " • Web: http://$DOMAIN:3000" echo " • Traefik: http://$DOMAIN:8080" echo " • Postgres: 5432" echo " • Redis: 6379" echo " • Milvus: 19530" echo " • Ollama: 11434" echo "" echo -e "${YELLOW}⚠️ IMPORTANT: Change default passwords in production!${NC}" echo ""