127 lines
3.9 KiB
Bash
127 lines
3.9 KiB
Bash
#!/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 ""
|