diff --git a/docs/latest/intro/quick-start.md b/docs/latest/intro/quick-start.md index 6fc300d4..e6283cdf 100644 --- a/docs/latest/intro/quick-start.md +++ b/docs/latest/intro/quick-start.md @@ -26,7 +26,32 @@ cd Yuxi-Know - `main`: 最新开发版本(不稳定,新特性可能会导致新 bug) ::: -#### 2. 配置环境变量 +#### 2. 项目启动 + +** 方法 1**:使用 init 脚本(推荐) + +我们提供了自动化的初始化脚本,可以帮您完成环境配置和 Docker 镜像拉取: + +```bash +# Linux/macOS +./scripts/init.sh + +# Windows PowerShell +.\scripts\init.ps1 +``` + +脚本会: +- 检查并创建 `.env` 文件 +- 提示您输入 `SILICONFLOW_API_KEY`(必需) +- 提示您输入 `TAVILY_API_KEY`(可选,用于搜索服务) +- 自动拉取所有必需的 Docker 镜像 + +::: tip API Key 获取 +- [硅基流动](https://cloud.siliconflow.cn/i/Eo5yTHGJ) 注册即送 14 元额度 +- [Tavily](https://app.tavily.com/) 获取搜索服务 API Key(可选) +::: + +** 方法 2**:手动配置环境变量 复制环境变量模板并编辑: diff --git a/scripts/init.ps1 b/scripts/init.ps1 new file mode 100644 index 00000000..fc1d2421 --- /dev/null +++ b/scripts/init.ps1 @@ -0,0 +1,93 @@ +# Yuxi-Know Initialization Script for PowerShell +# This script helps set up the environment for the Yuxi-Know project +# Note: API keys will be visible during input - use with care + +Write-Host "🚀 Initializing Yuxi-Know project..." -ForegroundColor Cyan +Write-Host "==================================" -ForegroundColor Cyan + +# Check if .env file exists +if (Test-Path ".env") { + Write-Host "✅ .env file already exists. Skipping environment setup." -ForegroundColor Green +} else { + Write-Host "📝 .env file not found. Let's set up your environment variables." -ForegroundColor Yellow + Write-Host "" + + # Get SILICONFLOW_API_KEY + Write-Host "🔑 SiliconFlow API Key required" -ForegroundColor Yellow + Write-Host "Get your API key from: https://cloud.siliconflow.cn/i/Eo5yTHGJ" -ForegroundColor Blue + Write-Host "Note: Press Ctrl+C at any time to cancel" -ForegroundColor Gray + Write-Host "" + + do { + $apiKey = Read-Host "Please enter your SILICONFLOW_API_KEY" + if ([string]::IsNullOrEmpty($apiKey)) { + Write-Host "❌ API Key cannot be empty. Please try again." -ForegroundColor Red + } + } while ([string]::IsNullOrEmpty($apiKey)) + + # Get TAVILY_API_KEY (optional) + Write-Host "" + Write-Host "🔍 Tavily API Key (optional) - for search service" -ForegroundColor Yellow + Write-Host "Get your API key from: https://app.tavily.com/" -ForegroundColor Blue + + $TAVILY_API_KEY = Read-Host "Please enter your TAVILY_API_KEY (press Enter to skip)" + + # Create .env file + $envContent = @" +# SiliconFlow API Key (required) +SILICONFLOW_API_KEY=$apiKey + +# Tavily API Key (optional - for search service) +"@ + + if (-not [string]::IsNullOrEmpty($TAVILY_API_KEY)) { + $envContent += "TAVILY_API_KEY=$TAVILY_API_KEY" + } + + $envContent | Out-File -FilePath ".env" -Encoding UTF8 + Write-Host "✅ .env file created successfully!" -ForegroundColor Green + + # Clear the variables from memory + Remove-Variable -Name "apiKey" -ErrorAction SilentlyContinue + Remove-Variable -Name "TAVILY_API_KEY" -ErrorAction SilentlyContinue +} + +Write-Host "" +Write-Host "📦 Pulling Docker images..." -ForegroundColor Cyan +Write-Host "=========================" -ForegroundColor Cyan + +# List of Docker images to pull +$images = @( + "python:3.12-slim", + "node:20-slim", + "node:20-alpine", + "milvusdb/milvus:v2.5.6", + "neo4j:5.26", + "minio/minio:RELEASE.2023-03-20T20-16-18Z", + "ghcr.io/astral-sh/uv:0.7.2", + "nginx:alpine", + "quay.io/coreos/etcd:v3.5.5" +) + +# Pull each image +foreach ($image in $images) { + Write-Host "🔄 Pulling ${image}..." -ForegroundColor Yellow + try { + & docker/pull_image.ps1 $image + if ($LASTEXITCODE -eq 0) { + Write-Host "✅ Successfully pulled ${image}" -ForegroundColor Green + } else { + Write-Host "❌ Failed to pull ${image}" -ForegroundColor Red + exit 1 + } + } catch { + Write-Host "❌ Error pulling ${image}: $_" -ForegroundColor Red + exit 1 + } +} + +Write-Host "" +Write-Host "🎉 Initialization complete!" -ForegroundColor Green +Write-Host "==========================" -ForegroundColor Green +Write-Host "You can now run: docker compose up -d --build" -ForegroundColor Cyan +Write-Host "This will start all services in development mode with hot-reload enabled." -ForegroundColor Cyan \ No newline at end of file diff --git a/scripts/init.sh b/scripts/init.sh new file mode 100644 index 00000000..aa664122 --- /dev/null +++ b/scripts/init.sh @@ -0,0 +1,84 @@ +#!/bin/bash + +# Yuxi-Know Initialization Script for Bash/Linux/macOS +# This script helps set up the environment for the Yuxi-Know project + +set -e + +echo "🚀 Initializing Yuxi-Know project..." +echo "==================================" + +# Check if .env file exists +if [ -f ".env" ]; then + echo "✅ .env file already exists. Skipping environment setup." +else + echo "📝 .env file not found. Let's set up your environment variables." + echo "" + + # Get SILICONFLOW_API_KEY + echo "🔑 SiliconFlow API Key required" + echo "Get your API key from: https://cloud.siliconflow.cn/i/Eo5yTHGJ" + while true; do + read -s -p "Please enter your SILICONFLOW_API_KEY: " SILICONFLOW_API_KEY + echo "" + if [ -z "$SILICONFLOW_API_KEY" ]; then + echo "❌ API Key cannot be empty. Please try again." + else + break + fi + done + + # Get TAVILY_API_KEY (optional) + echo "" + echo "🔍 Tavily API Key (optional) - for search service" + echo "Get your API key from: https://app.tavily.com/" + read -p "Please enter your TAVILY_API_KEY (press Enter to skip): " TAVILY_API_KEY + + # Create .env file + cat > .env << EOF +# SiliconFlow API Key (required) +SILICONFLOW_API_KEY=${SILICONFLOW_API_KEY} + +# Tavily API Key (optional - for search service) +EOF + + if [ -n "$TAVILY_API_KEY" ]; then + echo "TAVILY_API_KEY=${TAVILY_API_KEY}" >> .env + fi + + echo "✅ .env file created successfully!" +fi + +echo "" +echo "📦 Pulling Docker images..." +echo "=========================" + +# List of Docker images to pull +images=( + "python:3.12-slim" + "node:20-slim" + "node:20-alpine" + "milvusdb/milvus:v2.5.6" + "neo4j:5.26" + "minio/minio:RELEASE.2023-03-20T20-16-18Z" + "ghcr.io/astral-sh/uv:0.7.2" + "nginx:alpine" + "quay.io/coreos/etcd:v3.5.5" +) + +# Pull each image +for image in "${images[@]}"; do + echo "🔄 Pulling ${image}..." + if bash docker/pull_image.sh "$image"; then + echo "✅ Successfully pulled ${image}" + else + echo "❌ Failed to pull ${image}" + exit 1 + fi +done + +echo "" +echo "🎉 Initialization complete!" +echo "==========================" +echo "You can now run: docker compose up -d --build" +echo "This will start all services in development mode with hot-reload enabled." \ No newline at end of file