@echo off REM ============================================ REM FLNXI素材库 - Windows 全自动安装脚本 REM ============================================ echo ======================================== echo FLNXI素材库 - 全自动安装 echo ======================================== echo. echo 此脚本将检查并安装: echo - Docker Desktop echo - FLNXI素材库系统 echo. REM 检查管理员权限 net session >nul 2>&1 if %errorlevel% neq 0 ( echo 警告: 建议以管理员身份运行此脚本 echo 右键点击脚本 - 选择"以管理员身份运行" echo. pause ) REM 检查 Docker echo [1/3] 检查 Docker Desktop... docker --version >nul 2>&1 if errorlevel 1 ( echo. echo Docker Desktop 未安装! echo. echo 请按以下步骤安装: echo 1. 访问: https://www.docker.com/products/docker-desktop/ echo 2. 下载 Docker Desktop for Windows echo 3. 安装并启动 Docker Desktop echo 4. 安装完成后重新运行此脚本 echo. echo 是否现在打开下载页面? set /p OPEN="输入 Y 打开浏览器: " if /i "%OPEN%"=="y" start https://www.docker.com/products/docker-desktop/ pause exit /b 1 ) else ( echo 成功 - Docker 已安装 docker --version ) REM 检查 Docker 是否运行 echo. echo 检查 Docker 是否运行... docker ps >nul 2>&1 if errorlevel 1 ( echo. echo Docker Desktop 未运行! echo 请启动 Docker Desktop 后重新运行此脚本 echo. pause exit /b 1 ) else ( echo 成功 - Docker 运行正常 ) REM 检测 docker-compose 命令 docker compose version >nul 2>&1 if errorlevel 1 ( docker-compose --version >nul 2>&1 if errorlevel 1 ( echo. echo 错误: Docker Compose 未安装 echo 请更新 Docker Desktop 到最新版本 pause exit /b 1 ) else ( set DOCKER_COMPOSE=docker-compose ) ) else ( set DOCKER_COMPOSE=docker compose ) echo 成功 - 使用命令: %DOCKER_COMPOSE% REM 配置环境 echo. echo [2/3] 配置环境... if not exist .env ( echo. echo 创建配置文件... REM 获取本机IP for /f "tokens=2 delims=:" %%a in ('ipconfig ^| findstr /c:"IPv4"') do ( set IP=%%a goto :ip_found ) :ip_found set SERVER_IP=%IP: =% if "%SERVER_IP%"=="" set SERVER_IP=localhost echo 检测到IP地址: %SERVER_IP% set /p CUSTOM_IP="是否使用此IP? (直接回车确认 / 输入新IP): " if not "%CUSTOM_IP%"=="" set SERVER_IP=%CUSTOM_IP% REM 生成随机密码(简化版) set POSTGRES_PASSWORD=youyidian_%RANDOM%%RANDOM% set MINIO_PASSWORD=minio_%RANDOM%%RANDOM% set AUTH_SECRET=auth_%RANDOM%%RANDOM%%RANDOM% REM 创建 .env 文件 ( echo # FLNXI素材库 - 环境配置 echo # 生成时间: %date% %time% echo. echo # 服务器配置 echo SERVER_IP=%SERVER_IP% echo APP_PORT=4320 echo. echo # 数据库配置 echo POSTGRES_USER=postgres echo POSTGRES_PASSWORD=%POSTGRES_PASSWORD% echo POSTGRES_DB=flnxi echo. echo # MinIO 配置 echo MINIO_ROOT_USER=minioadmin echo MINIO_ROOT_PASSWORD=%MINIO_PASSWORD% echo MINIO_API_PORT=9000 echo MINIO_CONSOLE_PORT=9001 echo S3_BUCKET=youyidian3d echo. echo # 应用安全配置 echo NEXTAUTH_SECRET=%AUTH_SECRET% ) > .env echo 成功 - 配置文件已创建 REM 保存系统信息 ( echo ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ echo FLNXI素材库 - 系统信息 echo ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ echo. echo 安装时间: %date% %time% echo 服务器IP: %SERVER_IP% echo. echo 访问地址: echo 应用首页: http://%SERVER_IP%:4320 echo MinIO控制台: http://%SERVER_IP%:9001 echo. echo MinIO 管理员账号: echo 用户名: minioadmin echo 密码: %MINIO_PASSWORD% echo. echo 数据库信息: echo 数据库名: flnxi echo 用户名: postgres echo 密码: %POSTGRES_PASSWORD% echo. echo ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ echo 重要提示:请妥善保管此文件! echo ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ) > 系统信息.txt echo. echo 重要信息已保存到: 系统信息.txt echo 请妥善保管此文件! ) else ( echo 成功 - 检测到已存在的配置文件 ) REM 创建必要目录 if not exist uploads mkdir uploads echo 成功 - 数据目录已创建 REM 安装应用 echo. echo [3/3] 安装应用... echo 停止旧容器... %DOCKER_COMPOSE% down 2>nul echo. echo 拉取 Docker 镜像... echo 这可能需要几分钟,请耐心等待... %DOCKER_COMPOSE% pull if errorlevel 1 ( echo. echo 错误: 拉取镜像失败 echo 请检查网络连接或镜像仓库配置 pause exit /b 1 ) echo. echo 启动服务... %DOCKER_COMPOSE% up -d if errorlevel 1 ( echo. echo 错误: 启动服务失败 echo 查看详细日志: %DOCKER_COMPOSE% logs pause exit /b 1 ) echo. echo 等待服务启动... timeout /t 15 /nobreak >nul echo. echo 初始化数据库... %DOCKER_COMPOSE% exec -T app npx prisma db push --accept-data-loss 2>nul if errorlevel 1 ( echo. echo 数据库初始化可能需要更多时间... echo 请稍后手动执行: %DOCKER_COMPOSE% exec app npx prisma db push ) else ( echo 成功 - 数据库初始化完成 ) REM 读取配置显示结果 for /f "tokens=2 delims==" %%a in ('findstr "SERVER_IP" .env') do set SERVER_IP=%%a for /f "tokens=2 delims==" %%a in ('findstr "APP_PORT" .env') do set APP_PORT=%%a for /f "tokens=2 delims==" %%a in ('findstr "MINIO_CONSOLE_PORT" .env') do set MINIO_PORT=%%a echo. echo ======================================== echo 安装完成! echo ======================================== echo. echo 访问地址: echo 应用首页: http://%SERVER_IP%:%APP_PORT% echo MinIO控制台: http://%SERVER_IP%:%MINIO_PORT% echo. echo MinIO 账号信息请查看: 系统信息.txt echo. echo 首次使用: echo 1. 访问应用首页 echo 2. 注册账号 echo 3. 设置管理员权限(详见文档) echo. echo 常用命令: echo 查看服务: %DOCKER_COMPOSE% ps echo 查看日志: %DOCKER_COMPOSE% logs -f echo 重启服务: %DOCKER_COMPOSE% restart echo 停止服务: %DOCKER_COMPOSE% down echo. echo ======================================== echo. REM 询问是否打开浏览器 set /p OPEN_BROWSER="是否现在打开应用? (Y/n): " if /i not "%OPEN_BROWSER%"=="n" start http://%SERVER_IP%:%APP_PORT% pause