Files
momentry_studio/install.sh
Momentry Studio 313d42be2f fix: 设置默认账号为 demo/demo123,修复数据路径
问题修复:
1. ✅ 默认账号设置
   - db.rs: 默认密码改为 demo123
   - .env.template: 默认密码改为 demo123
   - install.sh: 默认密码改为 demo123

2. ✅ 数据路径动态化
   - db.rs: 使用 dirs::home_dir() 自动检测用户主目录
   - 默认路径: {HOME}/momentry_studio/data/users
   - 支持通过 MOMENTRY_DATA_DIR 环境变量自定义

验证脚本:
- scripts/verify_default_setup.sh: 验证默认账号和数据路径

目标:
- 安装后可直接使用 demo/demo123 登录
- 数据路径随用户主目录自动调整
- 适用于任何用户环境

影响:
- demo 用户: 密码固定为 demo123
- 数据路径: 自动检测 {HOME}/momentry_studio/data/users
- 安装即可使用,无需额外配置
2026-10-12 15:35:22 +08:00

214 lines
5.5 KiB
Bash
Executable File

#!/bin/bash
# Momentry Studio - 通用安装脚本
# 适用于任何用户环境
# 使用: ./install.sh
set -e
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
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"
}
log_step() {
echo -e "${BLUE}[STEP]${NC} $1"
}
# 获取脚本所在目录
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
USER_HOME="${HOME:-$(pwd)}"
echo "================================================================================"
echo " Momentry Studio - 安装向导"
echo "================================================================================"
echo ""
echo "检测到的环境:"
echo " 用户主目录: ${USER_HOME}"
echo " Studio 根目录: ${SCRIPT_DIR}"
echo " 用户名: $(whoami)"
echo ""
# 步骤 1: 检查依赖
log_step "步骤 1/6: 检查依赖..."
check_command() {
local cmd=$1
local name=$2
if command -v $cmd &> /dev/null; then
log_info "✅ $name: $(command -v $cmd)"
else
log_error "❌ $name 未安装"
return 1
fi
}
check_command "node" "Node.js" || exit 1
check_command "npm" "npm" || exit 1
check_command "rustc" "Rust" || exit 1
check_command "cargo" "Cargo" || exit 1
echo ""
# 步骤 2: 创建环境变量文件
log_step "步骤 2/6: 创建环境变量文件..."
if [ -f "${SCRIPT_DIR}/.env" ]; then
log_warn ".env 文件已存在,跳过创建"
else
cp "${SCRIPT_DIR}/.env.template" "${SCRIPT_DIR}/.env"
log_info "✅ 已创建 .env 文件"
log_warn "请编辑 .env 文件,填入实际的 API Keys"
fi
echo ""
# 步骤 3: 生成配置文件
log_step "步骤 3/6: 生成配置文件..."
chmod +x "${SCRIPT_DIR}/generate_config.sh"
"${SCRIPT_DIR}/generate_config.sh"
echo ""
# 步骤 4: 创建数据目录
log_step "步骤 4/6: 创建数据目录..."
mkdir -p "${USER_HOME}/momentry/output"
mkdir -p "${USER_HOME}/momentry/backup"
mkdir -p "${USER_HOME}/momentry/var/sftpgo/data"
mkdir -p "${SCRIPT_DIR}/data/users"
log_info "✅ 已创建数据目录:"
log_info " - Output: ${USER_HOME}/momentry/output"
log_info " - Backup: ${USER_HOME}/momentry/backup"
log_info " - Storage: ${USER_HOME}/momentry/var/sftpgo/data"
log_info " - Database: ${SCRIPT_DIR}/data/users"
echo ""
# 步骤 5: 安装依赖并构建
log_step "步骤 5/6: 安装依赖并构建..."
cd "${SCRIPT_DIR}"
log_info "安装 Node.js 依赖..."
npm install
log_info "构建前端..."
npm run build
log_info "构建 Rust 代理..."
cd src-tauri
cargo build --release
cd ..
log_info "✅ 构建完成"
echo ""
# 步骤 5.5: 初始化默认用户
log_step "步骤 5.5/6: 初始化默认用户..."
# Use demo123 as default password (can be overridden by MOMENTRY_DEFAULT_PASSWORD)
DEFAULT_PASSWORD="demo123"
# Check if custom password is set
if [ -n "${MOMENTRY_DEFAULT_PASSWORD}" ]; then
DEFAULT_PASSWORD="${MOMENTRY_DEFAULT_PASSWORD}"
log_info "使用自定义密码: ${DEFAULT_PASSWORD}"
else
log_info "使用默认密码: demo123"
fi
# Set environment variable for password
export MOMENTRY_DEFAULT_PASSWORD="${DEFAULT_PASSWORD}"
log_info "========================================"
log_info "默认用户账号:"
log_info " 用户名: demo"
log_info " 密码: ${DEFAULT_PASSWORD}"
log_info "========================================"
log_warn "安装完成后请立即修改密码!"
# Save to .env file
if [ -f "${SCRIPT_DIR}/.env" ]; then
# Remove old password if exists
sed -i.bak '/MOMENTRY_DEFAULT_PASSWORD/d' "${SCRIPT_DIR}/.env"
echo "" >> "${SCRIPT_DIR}/.env"
echo "# Default user password" >> "${SCRIPT_DIR}/.env"
echo "MOMENTRY_DEFAULT_PASSWORD=${DEFAULT_PASSWORD}" >> "${SCRIPT_DIR}/.env"
log_info "✅ 密码已保存到 .env 文件"
fi
# Initialize database
cd "${SCRIPT_DIR}/src-tauri"
"${SCRIPT_DIR}/src-tauri/target/release/user_tool" init-demo 2>/dev/null || {
log_warn "用户工具未编译,将在首次启动时初始化"
}
cd "${SCRIPT_DIR}"
echo ""
# 步骤 6: 创建启动脚本
log_step "步骤 6/6: 创建启动脚本..."
cat > "${SCRIPT_DIR}/start.sh" << STARTSCRIPT
#!/bin/bash
# Momentry Studio 启动脚本
# 加载环境变量
if [ -f "${SCRIPT_DIR}/.env" ]; then
source "${SCRIPT_DIR}/.env"
fi
# 设置必要的环境变量
export MOMENTRY_API_KEY=\${MOMENTRY_API_KEY:-your_api_key_here}
export MOMENTRY_DATA_DIR=\${MOMENTRY_DATA_DIR:-${SCRIPT_DIR}/data/users}
# 启动代理
cd "${SCRIPT_DIR}"
./src-tauri/target/release/momentry-proxy
STARTSCRIPT
chmod +x "${SCRIPT_DIR}/start.sh"
log_info "✅ 已创建启动脚本: start.sh"
echo ""
# 总结
echo "================================================================================"
echo " ✅ 安装完成"
echo "================================================================================"
echo ""
echo "安装位置:"
echo " Studio 根目录: ${SCRIPT_DIR}"
echo " 配置文件: ${SCRIPT_DIR}/config/admin_config.json"
echo " 环境变量: ${SCRIPT_DIR}/.env"
echo " 数据目录: ${SCRIPT_DIR}/data/users"
echo ""
echo "下一步:"
echo " 1. 编辑环境变量: vim ${SCRIPT_DIR}/.env"
echo " 2. 加载环境变量: source ${SCRIPT_DIR}/.env"
echo " 3. 启动服务: ${SCRIPT_DIR}/start.sh"
echo " 4. 访问: http://localhost:8888"
echo ""
echo "或者使用 npm 命令:"
echo " npm run proxy # 启动代理服务"
echo ""
echo "================================================================================"