flnxi-Wu/scripts/tools/install-auto-windows.bat
WuYongJie d1c6efc79d
Some checks failed
CI Check / check (push) Has been cancelled
feat: NAS 部署与 Harbor 推送流程
2025-12-03 14:39:06 +08:00

255 lines
6.9 KiB
Batchfile

@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