#!/bin/bash # Momentry Studio - m4promini 部署路径修复脚本 # 用途: 将所有硬编码的 /Users/accusys 路径替换为部署环境路径 # 使用: ./fix_paths_for_m4promini.sh set -e # 目标环境配置 TARGET_USER="nextorageai" TARGET_HOME="/Users/nextorageai" # 颜色输出 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' log_info() { echo -e "${GREEN}[INFO]${NC} $1" } log_warn() { echo -e "${YELLOW}[WARN]${NC} $1" } log_error() { echo -e "${RED}[ERROR]${NC} $1" } echo "================================================================================" echo " Momentry Studio - m4promini Path Fixer" echo "================================================================================" echo "" echo "Target User: ${TARGET_USER}" echo "Target Home: ${TARGET_HOME}" echo "" # 检查是否在项目根目录 if [ ! -f "package.json" ]; then log_error "请在项目根目录运行此脚本" exit 1 fi # 备份 log_info "创建备份目录..." BACKUP_DIR="backups/path_fix_$(date +%Y%m%d_%H%M%S)" mkdir -p ${BACKUP_DIR} log_info "备份目录: ${BACKUP_DIR}" # 备份关键文件 log_info "备份关键文件..." cp config/admin_config.json ${BACKUP_DIR}/admin_config.json.bak cp src-tauri/src/main.rs ${BACKUP_DIR}/main.rs.bak cp start-proxy.sh ${BACKUP_DIR}/start-proxy.sh.bak 2>/dev/null || true echo "" # 1. 修复 config/admin_config.json log_info "修复 config/admin_config.json..." # 创建新的配置 cat > config/admin_config.json << 'JSONEOF' { "vlm_prompts": { "scene": { "system_prompt": "Analyze this video frame and provide a detailed description.", "user_prompt_template": "Describe the scene in detail, including environment, objects, and activities.", "max_tokens": 500, "temperature": 0.7, "output_language": "en" }, "trace": { "system_prompt": "Describe the person's appearance and clothing in this frame.", "user_prompt_template": "Describe the person, focusing on clothing, accessories, and notable features.", "max_tokens": 300, "temperature": 0.6, "output_language": "en" } }, "llm_config": { "model": "gpt-4o", "max_tokens": 2000, "temperature": 0.7, "api_base": "http://localhost:8080/v1" }, "processor_config": { "asr": { "enabled": true, "language": "auto", "model": "large-v3" }, "ocr": { "enabled": true, "languages": ["en", "zh"], "min_confidence": 0.5 }, "face": { "enabled": true, "min_confidence": 0.7, "min_size": 32 } }, "filter_config": { "face": { "min_confidence": 50.0, "min_size": 32, "min_capture_quality": 30.0 } }, "paths": { "output_dir": "/Users/nextorageai/momentry/output", "backup_dir": "/Users/nextorageai/momentry/backup", "scripts_dir": "/Users/nextorageai/momentry_core/scripts", "python_path": "/opt/homebrew/bin/python3.11", "ffmpeg_path": "/opt/homebrew/bin/ffmpeg" }, "concurrency": { "max_concurrent_jobs": 6, "poll_interval": 10, "batch_size": 10, "processor_timeout_secs": 3600 }, "feature_flags": { "cache_enabled": true, "auto_pipeline_enabled": false, "watcher_auto_register": false, "summary_enabled": true }, "server": { "port": 3002, "media_base_url": "https://wp.momentry.ddns.net", "serve_base_url": "https://m5wp.momentry.ddns.net/files", "storage_root": "/Users/nextorageai/momentry/var/sftpgo/data" }, "admin_settings": { "session_timeout": 3600, "max_login_attempts": 5, "api_key_expiry_days": 365, "system_stats_refresh_sec": 5 }, "face_filter_defaults": { "min_confidence": 50.0, "min_size": 32, "min_capture_quality": 25.0 } } JSONEOF log_info "✅ config/admin_config.json 已更新" echo "" # 2. 修复 src-tauri/src/main.rs log_info "修复 src-tauri/src/main.rs..." # 使用 sed 替换路径 sed -i.m4promini \ -e "s|/Users/accusys/momentry_core|/Users/nextorageai/momentry_core|g" \ -e "s|/Users/accusys/momentry_studio|/Users/nextorageai/momentry_studio|g" \ -e "s|/Users/accusys/markbase|/Users/nextorageai/markbase|g" \ -e "s|/Users/accusys/MarkBaseEngine|/Users/nextorageai/MarkBaseEngine|g" \ -e "s|/Users/accusys/momentry|/Users/nextorageai/momentry|g" \ -e "s|\"/Users/accusys\"|\"/Users/nextorageai\"|g" \ src-tauri/src/main.rs log_info "✅ src-tauri/src/main.rs 已更新" echo "" # 3. 修复 start-proxy.sh if [ -f "start-proxy.sh" ]; then log_info "修复 start-proxy.sh..." sed -i.m4promini \ -e "s|/Users/accusys/momentry_studio|/Users/nextorageai/momentry_studio|g" \ start-proxy.sh log_info "✅ start-proxy.sh 已更新" fi echo "" # 4. 创建环境变量模板 log_info "创建环境变量模板..." cat > .env.m4promini.template << 'ENVEOF' # Momentry Studio - m4promini Environment Variables # 根目录 MOMENTRY_ROOT=/Users/nextorageai/momentry MOMENTRY_CORE_ROOT=/Users/nextorageai/momentry_core MARKBASE_ROOT=/Users/nextorageai/markbase MOMENTRY_STUDIO_ROOT=/Users/nextorageai/momentry_studio # 存储 STORAGE_ROOT=/Users/nextorageai/momentry/var/sftpgo/data OUTPUT_DIR=/Users/nextorageai/momentry/output BACKUP_DIR=/Users/nextorageai/momentry/backup # 数据库 MOMENTRY_DATA_DIR=/Users/nextorageai/momentry_studio/data/users # 二进制工具 PYTHON_PATH=/opt/homebrew/bin/python3.11 FFMPEG_PATH=/opt/homebrew/bin/ffmpeg # API Keys (需要实际值) MOMENTRY_API_KEY=your_api_key_here # 外部服务 MOMENTRY_LLM_VISION_URL=http://localhost:8080/v1/chat/completions MOMENTRY_LLM_CHAT_URL=http://localhost:8080/v1/chat/completions # 数据库 DATABASE_URL=postgres://nextorageai@localhost:5432/momentry QDRANT_URL=http://localhost:6333 QDRANT_API_KEY=Test3200Test3200Test3200 # Redis (可选) REDIS_URL=redis://localhost:6379 ENVEOF log_info "✅ 环境变量模板已创建: .env.m4promini.template" echo "" # 5. 创建部署说明 log_info "创建部署说明..." cat > DEPLOYMENT_m4promini.md << 'MDEOF' # Momentry Studio - m4promini 部署说明 **部署日期**: $(date +"%Y-%m-%d") **目标用户**: nextorageai **目标主目录**: /Users/nextorageai --- ## 部署步骤 ### 1. 环境准备 ```bash # 在 m4promini 上 cd /Users/nextorageai # 检查依赖 node --version # v18+ rustc --version # 1.70+ psql --version # 14+ ``` ### 2. 复制项目 ```bash # 复制或克隆项目到目标目录 cd /Users/nextorageai git clone momentry_studio cd momentry_studio ``` ### 3. 运行路径修复脚本 ```bash chmod +x fix_paths_for_m4promini.sh ./fix_paths_for_m4promini.sh ``` ### 4. 配置环境变量 ```bash # 复制环境变量模板 cp .env.m4promini.template .env # 编辑 .env 文件,填入实际值 vim .env # 加载环境变量 source .env ``` ### 5. 构建项目 ```bash # 安装依赖 npm install # 构建前端 npm run build # 构建 Rust 代理 cd src-tauri cargo build --release cd .. ``` ### 6. 初始化数据库 ```bash # 创建数据目录 mkdir -p data/users # 数据库将自动创建在: # /Users/nextorageai/momentry_studio/data/users/demo.sqlite ``` ### 7. 启动服务 ```bash # 方式 1: 使用环境变量 export MOMENTRY_API_KEY=your_key_here export MOMENTRY_DATA_DIR=/Users/nextorageai/momentry_studio/data/users ./src-tauri/target/release/momentry-proxy # 方式 2: 使用启动脚本 npm run proxy # 验证 curl http://localhost:8888/health ``` --- ## 路径映射 | 功能 | m5max48 (当前) | m4promini (目标) | |------|---------------|------------------| | 用户主目录 | `/Users/accusys` | `/Users/nextorageai` | | Studio 根目录 | `/Users/accusys/momentry_studio` | `/Users/nextorageai/momentry_studio` | | Core API 根目录 | `/Users/accusys/momentry_core` | `/Users/nextorageai/momentry_core` | | MarkBase 根目录 | `/Users/accusys/markbase` | `/Users/nextorageai/markbase` | | 存储目录 | `/Users/accusys/momentry/var/sftpgo/data` | `/Users/nextorageai/momentry/var/sftpgo/data` | | 输出目录 | `/Users/accusys/momentry/output` | `/Users/nextorageai/momentry/output` | | 数据库目录 | `/Users/accusys/momentry_studio/data/users` | `/Users/nextorageai/momentry_studio/data/users` | --- ## 验证清单 - [ ] 环境变量已配置 - [ ] 配置文件路径正确 - [ ] 前端构建成功 - [ ] Rust 代理构建成功 - [ ] 数据库目录已创建 - [ ] 服务启动成功 - [ ] 健康检查通过 --- ## 故障排除 ### 问题 1: 服务启动失败 **检查**: ```bash # 检查日志 tail -f /tmp/momentry_proxy.log # 检查环境变量 echo $MOMENTRY_API_KEY echo $MOMENTRY_DATA_DIR ``` ### 问题 2: 路径错误 **验证**: ```bash # 检查配置文件 cat config/admin_config.json | grep "/Users" # 应该看到 /Users/nextorageai ``` ### 问题 3: 权限问题 **修复**: ```bash # 确保目录权限 chown -R nextorageai:staff /Users/nextorageai/momentry_studio chmod -R 755 /Users/nextorageai/momentry_studio ``` --- **部署完成后访问**: http://localhost:8888 --- **维护**: 保持 .env 文件的安全,不要提交到版本控制。 MDEOF log_info "✅ 部署说明已创建: DEPLOYMENT_m4promini.md" echo "" # 总结 echo "================================================================================" echo " ✅ 路径修复完成" echo "================================================================================" echo "" echo "修复的文件:" echo " - config/admin_config.json" echo " - src-tauri/src/main.rs" echo " - start-proxy.sh (如果存在)" echo "" echo "创建的文件:" echo " - .env.m4promini.template (环境变量模板)" echo " - DEPLOYMENT_m4promini.md (部署说明)" echo "" echo "备份位置: ${BACKUP_DIR}/" echo "" echo "下一步:" echo " 1. 编辑 .env.m4promini.template 并保存为 .env" echo " 2. 运行: source .env" echo " 3. 构建: npm run build && cd src-tauri && cargo build --release" echo " 4. 启动: npm run proxy" echo "" echo "详细说明请查看: DEPLOYMENT_m4promini.md" echo "================================================================================"