## v0.9.20260325_144654 ### Features - API Key Authentication System - Job Worker System - V2 Backup Versioning ### Bug Fixes - get_processor_results_by_job column mapping Co-authored-by: OpenCode
171 lines
5.7 KiB
Bash
171 lines
5.7 KiB
Bash
#!/bin/bash
|
|
#==============================================================================
|
|
# Momentry System - Initial Setup Script
|
|
# 適用於全新 Mac 的系統準備腳本
|
|
#==============================================================================
|
|
|
|
set -e
|
|
|
|
# 顏色定義
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# 變數
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
MOMENTRY_DIR="/Users/accusys/momentry"
|
|
CURRENT_USER=$(whoami)
|
|
|
|
#==============================================================================
|
|
# 函數定義
|
|
#==============================================================================
|
|
|
|
log_info() {
|
|
echo -e "${BLUE}[INFO]${NC} $1"
|
|
}
|
|
|
|
log_success() {
|
|
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
|
}
|
|
|
|
log_warning() {
|
|
echo -e "${YELLOW}[WARNING]${NC} $1"
|
|
}
|
|
|
|
log_error() {
|
|
echo -e "${RED}[ERROR]${NC} $1"
|
|
}
|
|
|
|
check_root() {
|
|
if [ "$EUID" -eq 0 ]; then
|
|
log_warning "不建議使用 root 執行此腳本"
|
|
fi
|
|
}
|
|
|
|
#==============================================================================
|
|
# 主要流程
|
|
#==============================================================================
|
|
|
|
main() {
|
|
echo "=========================================="
|
|
echo "Momentry System - Initial Setup"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
check_root
|
|
|
|
# Step 1: 建立目錄結構
|
|
log_info "Step 1/5: 建立目錄結構..."
|
|
|
|
mkdir -p "$MOMENTRY_DIR"/{var,etc,log,scripts,backup}
|
|
mkdir -p "$MOMENTRY_DIR/var"/{postgresql,mongodb,mariadb,redis,qdrant,n8n,ollama,sftpgo}
|
|
mkdir -p "$MOMENTRY_DIR/etc"/{sftpgo,caddy,gitea,php}
|
|
mkdir -p "$MOMENTRY_DIR/backup"/{daily,weekly,monthly}
|
|
mkdir -p /Users/accusys/workspace/sftpgo
|
|
mkdir -p /Users/accusys/sftpgo_test/{demo,uploads}
|
|
|
|
chown -R "$CURRENT_USER":staff "$MOMENTRY_DIR" 2>/dev/null || true
|
|
chown -R "$CURRENT_USER":staff /Users/accusys/workspace 2>/dev/null || true
|
|
chown -R "$CURRENT_USER":staff /Users/accusys/sftpgo_test 2>/dev/null || true
|
|
|
|
log_success "目錄結構建立完成"
|
|
|
|
# Step 2: 檢查 Homebrew
|
|
log_info "Step 2/5: 檢查 Homebrew..."
|
|
|
|
if ! command -v brew &>/dev/null; then
|
|
log_warning "Homebrew 未安裝"
|
|
echo ""
|
|
echo "請執行以下命令安裝 Homebrew:"
|
|
echo "/bin/bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\""
|
|
echo ""
|
|
echo "安裝完成後,重新執行此腳本"
|
|
exit 1
|
|
fi
|
|
|
|
log_success "Homebrew 已安裝: $(brew --version | head -1)"
|
|
|
|
# Step 3: 檢查必要工具
|
|
log_info "Step 3/5: 檢查必要工具..."
|
|
|
|
TOOLS=("git" "curl" "jq" "tree")
|
|
MISSING_TOOLS=()
|
|
|
|
for tool in "${TOOLS[@]}"; do
|
|
if ! command -v "$tool" &>/dev/null; then
|
|
MISSING_TOOLS+=("$tool")
|
|
fi
|
|
done
|
|
|
|
if [ ${#MISSING_TOOLS[@]} -gt 0 ]; then
|
|
log_warning "缺少以下工具: ${MISSING_TOOLS[*]}"
|
|
echo ""
|
|
read -p "是否自動安裝這些工具? (y/n): " -n 1 -r
|
|
echo ""
|
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
brew install "${MISSING_TOOLS[@]}"
|
|
log_success "工具安裝完成"
|
|
else
|
|
log_warning "跳過工具安裝"
|
|
fi
|
|
else
|
|
log_success "所有必要工具已安裝"
|
|
fi
|
|
|
|
# Step 4: 檢查服務狀態
|
|
log_info "Step 4/5: 檢查服務狀態..."
|
|
|
|
echo ""
|
|
echo " PostgreSQL: $(pg_isready -h 127.0.0.1 -p 5432 >/dev/null 2>&1 && echo '✅ 運行中' || echo '❌ 未運行')"
|
|
echo " Redis: $(redis-cli -a accusys ping >/dev/null 2>&1 && echo '✅ 運行中' || echo '❌ 未運行')"
|
|
echo " MongoDB: $(mongosh --quiet --eval "db.adminCommand('ping')" >/dev/null 2>&1 && echo '✅ 運行中' || echo '❌ 未運行')"
|
|
echo " Ollama: $(curl -s http://localhost:11434/api/tags >/dev/null 2>&1 && echo '✅ 運行中' || echo '❌ 未運行')"
|
|
echo " n8n: $(curl -s http://localhost:5678 >/dev/null 2>&1 && echo '✅ 運行中' || echo '❌ 未運行')"
|
|
echo " SFTPGo: $(curl -s http://localhost:8080 >/dev/null 2>&1 && echo '✅ 運行中' || echo '❌ 未運行')"
|
|
echo " Qdrant: $(curl -s http://localhost:6333/ >/dev/null 2>&1 && echo '✅ 運行中' || echo '❌ 未運行')"
|
|
echo " Momentry API: $(curl -s http://localhost:3002/health >/dev/null 2>&1 && echo '✅ 運行中' || echo '❌ 未運行')"
|
|
echo ""
|
|
|
|
# Step 5: 建立快捷指令
|
|
log_info "Step 5/5: 建立快捷指令..."
|
|
|
|
cat >/Users/accusys/momentry/scripts/health_check.sh <<'HEALTH_EOF'
|
|
#!/bin/bash
|
|
echo "=========================================="
|
|
echo "Momentry System Health Check"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
pg_isready -h 127.0.0.1 -p 5432 > /dev/null 2>&1 && echo "✅ PostgreSQL" || echo "❌ PostgreSQL"
|
|
redis-cli -a accusys ping > /dev/null 2>&1 && echo "✅ Redis" || echo "❌ Redis"
|
|
mongosh --quiet --eval "db.adminCommand('ping')" > /dev/null 2>&1 && echo "✅ MongoDB" || echo "❌ MongoDB"
|
|
curl -s http://localhost:11434/api/tags > /dev/null 2>&1 && echo "✅ Ollama" || echo "❌ Ollama"
|
|
curl -s http://localhost:5678 > /dev/null 2>&1 && echo "✅ n8n" || echo "❌ n8n"
|
|
curl -s http://localhost:8080 > /dev/null 2>&1 && echo "✅ SFTPGo" || echo "❌ SFTPGo"
|
|
curl -s http://localhost:6333/ > /dev/null 2>&1 && echo "✅ Qdrant" || echo "❌ Qdrant"
|
|
curl -s http://localhost:3002/health > /dev/null 2>&1 && echo "✅ Momentry API" || echo "❌ Momentry API"
|
|
|
|
echo ""
|
|
HEALTH_EOF
|
|
|
|
chmod +x /Users/accusys/momentry/scripts/health_check.sh
|
|
log_success "快捷指令已建立: /Users/accusys/momentry/scripts/health_check.sh"
|
|
|
|
# 完成
|
|
echo ""
|
|
echo "=========================================="
|
|
log_success "初始設定完成!"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "下一步:"
|
|
echo " 1. 查看完整安裝指南: docs/FRESH_MAC_INSTALLATION.md"
|
|
echo " 2. 執行健康檢查: /Users/accusys/momentry/scripts/health_check.sh"
|
|
echo " 3. 查閱服務密碼: docs/FRESH_MAC_INSTALLATION.md#第八部分"
|
|
echo ""
|
|
}
|
|
|
|
# 執行
|
|
main "$@"
|