# 部署指南 ## 项目部署到 TrueNAS 服务器 ### 服务器信息 - 服务器地址: 192.168.58.20 - 用户名: root - 部署路径: /mnt/tank/apps/youyidian-3d - 访问地址: http://192.168.58.20:4320 ### 自动部署(推荐) 使用提供的部署脚本: ```bash cd /Users/lanmu/Desktop/gongxiangp2 ./deploy.sh ``` 脚本会自动: 1. 打包项目文件 2. 上传到 NAS 服务器 3. 构建 Docker 镜像 4. 启动容器 5. 运行数据库迁移 ### 手动部署 #### 1. 打包项目 ```bash cd /Users/lanmu/Desktop/gongxiangp2 tar -czf project.tar.gz \ --exclude='node_modules' \ --exclude='.next' \ --exclude='.git' \ --exclude='uploads' \ . ``` #### 2. 上传到服务器 ```bash scp project.tar.gz root@192.168.58.20:/tmp/ ``` #### 3. SSH 登录服务器 ```bash ssh root@192.168.58.20 # 密码: jsjj8888 ``` #### 4. 部署应用 ```bash # 创建项目目录 mkdir -p /mnt/tank/apps/youyidian-3d cd /mnt/tank/apps/youyidian-3d # 解压项目 tar -xzf /tmp/project.tar.gz # 启动服务 docker-compose up -d --build # 查看日志 docker-compose logs -f ``` #### 5. 运行数据库迁移 ```bash docker-compose exec app npx prisma db push ``` ### Docker 命令 ```bash # 查看容器状态 docker-compose ps # 查看日志 docker-compose logs -f # 重启服务 docker-compose restart # 停止服务 docker-compose down # 重新构建并启动 docker-compose up -d --build ``` ### 环境变量 在服务器上修改 `docker-compose.yml` 中的环境变量(如需要): - `DATABASE_URL`: PostgreSQL 数据库连接 - `S3_*`: MinIO S3 存储配置 - `NEXTAUTH_URL`: 应用访问地址 - `NEXTAUTH_SECRET`: 认证密钥(建议生成新的) 生成新的 NEXTAUTH_SECRET: ```bash openssl rand -base64 32 ``` ### 初始化数据库 第一次部署后,需要在数据库中插入初始场景数据: ```bash docker-compose exec app npx prisma db execute --stdin <<< " INSERT INTO scenes (id, name, \"createdAt\") VALUES (gen_random_uuid(), '客厅', NOW()), (gen_random_uuid(), '卧室', NOW()), (gen_random_uuid(), '厨房', NOW()), (gen_random_uuid(), '餐厅', NOW()), (gen_random_uuid(), '书房', NOW()), (gen_random_uuid(), '儿童房', NOW()), (gen_random_uuid(), '主卧', NOW()), (gen_random_uuid(), '次卧', NOW()), (gen_random_uuid(), '阳台', NOW()), (gen_random_uuid(), '卫生间', NOW()), (gen_random_uuid(), '玄关', NOW()), (gen_random_uuid(), '衣帽间', NOW()), (gen_random_uuid(), '办公室', NOW()), (gen_random_uuid(), '会议室', NOW()), (gen_random_uuid(), '展厅', NOW()) ON CONFLICT (name) DO NOTHING; " ``` ### 创建管理员账户 1. 注册一个账户 2. SSH 登录服务器,设置为管理员: ```bash docker-compose exec app npx prisma studio # 或者使用 SQL: docker-compose exec app npx prisma db execute --stdin <<< " UPDATE users SET role='ADMIN', \"isActive\"=true WHERE email='your-email@example.com'; " ``` ### 故障排查 #### 查看容器日志 ```bash docker-compose logs -f app ``` #### 进入容器 ```bash docker-compose exec app sh ``` #### 检查数据库连接 ```bash docker-compose exec app npx prisma db execute --stdin <<< "SELECT 1" ``` #### 重新生成 Prisma Client ```bash docker-compose exec app npx prisma generate ``` ### 备份和恢复 #### 备份上传文件 ```bash cd /mnt/tank/apps/youyidian-3d tar -czf uploads-backup-$(date +%Y%m%d).tar.gz uploads/ ``` #### 备份数据库 数据库在云端,由云服务提供商负责备份。 ### 更新应用 1. 本地修改代码 2. 运行部署脚本: `./deploy.sh` 3. 或手动上传并重新构建 ### 监控和维护 - 定期检查磁盘空间(上传文件会占用空间) - 定期查看日志文件 - 监控容器状态 - 定期更新 Docker 镜像基础版本 ### 安全建议 1. 修改 `NEXTAUTH_SECRET` 为随机生成的值 2. 配置防火墙,只开放必要的端口 3. 定期更新依赖包 4. 使用 HTTPS(可配置 Nginx 反向代理) 5. 定期备份重要数据