Files
momentry_core/scripts/setup_fresh_mac.sh
accusys 383201cacd feat: Initial v0.9 release with API Key authentication
## 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
2026-03-25 14:53:41 +08:00

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 "$@"