主要更新: 1. FRP服务器诊断与修复 - 发现并修复文件描述符耗尽问题(65,536 → 1,048,576) - 分析并解决用户上传失败问题 - 确认SSH服务器安全未被攻破 2. 安全防护系统部署 - 部署IP黑名单防火墙(封禁20+攻击者) - 设置SSH端口速率限制 - 配置自动化定时任务(每小时更新) - 安装Fail2ban实时防护系统 - 添加白名单保护机制 3. 内网访问优化 - 改进内网检测逻辑 - 添加网络状态API - 优化钉钉登录流程 - 完善信息补充功能 4. 文档完善 - FRP服务器诊断修复报告 - SSH安全评估报告 - Fail2ban使用指南 - 文件描述符详解 - 用户上传失败原因分析 - 防火墙配置说明 - 内网检测改进报告 修复的问题: - ✅ 文件描述符耗尽导致的服务异常 - ✅ 用户上传失败(影响9.5小时) - ✅ SSH暴力破解攻击(91,299+次) - ✅ 第三方项目攻击影响 - ✅ 127.0.0.1误封禁问题 部署的安全措施: - 三重防护体系(Fail2ban + 防火墙 + 强密码) - 自动化监控和封禁 - 实时攻击拦截(秒级响应) - 完整的管理和监控工具 测试环境:开发环境 影响范围:服务器安全、用户上传、系统稳定性 当前状态:✅ 所有问题已修复,系统运行正常
279 lines
6.1 KiB
Markdown
279 lines
6.1 KiB
Markdown
# 🚀 NAS服务器部署成功报告
|
||
|
||
**部署日期:** 2025年10月28日
|
||
**操作人员:** AI助手
|
||
**部署版本:** v2.5(包含部门管理和AI聊天功能)
|
||
|
||
---
|
||
|
||
## ✅ 部署概览
|
||
|
||
### 问题诊断
|
||
- ❌ **旧部署位置:** `/mnt/PoolOne/data1/gongxiangpan`(10月16日旧代码,运行中)
|
||
- ✅ **新部署位置:** `/mnt/PoolOne/apps/youyidian-3d`(10月28日最新代码,已部署)
|
||
- ⚠️ **问题:** 更新脚本将代码上传到新目录但未启动容器
|
||
|
||
### 解决方案
|
||
1. **停止旧容器** - 安全停止旧的web服务
|
||
2. **启动新容器** - 在新目录构建并启动最新代码
|
||
3. **数据库迁移** - 平滑迁移,保留所有现有数据
|
||
4. **修复AI配置** - 更换可用的AI模型
|
||
|
||
---
|
||
|
||
## 📊 部署详情
|
||
|
||
### 1. 服务器信息
|
||
```
|
||
NAS服务器IP: 192.168.58.20
|
||
项目路径: /mnt/PoolOne/apps/youyidian-3d
|
||
容器名称: youyidian-3d-material
|
||
```
|
||
|
||
### 2. 服务状态
|
||
|
||
| 服务 | 状态 | 端口映射 | 运行时间 |
|
||
|------|------|---------|---------|
|
||
| youyidian-3d-material | ✅ Running | 4320→3000 | 刚启动 |
|
||
| gongxiangpan-postgres-1 | ✅ Healthy | 5432→5432 | 12天 |
|
||
| frpc-youyidian | ✅ Running | - | 10天 |
|
||
|
||
### 3. 数据完整性验证
|
||
|
||
✅ **所有数据完好无损**
|
||
|
||
| 数据表 | 记录数 | 状态 |
|
||
|--------|--------|------|
|
||
| 用户 (users) | 11 | ✅ 完整 |
|
||
| 素材 (materials) | 15 | ✅ 完整 |
|
||
| 部门 (departments) | 13 | ✅ 完整 |
|
||
| 分类 (categories) | 7 | ✅ 完整 |
|
||
|
||
---
|
||
|
||
## 🆕 新功能验证
|
||
|
||
### ✅ 部门管理功能
|
||
- **API地址:** `/api/departments`
|
||
- **功能:** 获取、创建、编辑、删除部门
|
||
- **数据:** 13个部门(视觉一到六部,策划一到七部)
|
||
- **状态:** ✅ 正常工作
|
||
|
||
### ✅ AI聊天功能
|
||
- **API地址:** `/api/ai-chat`
|
||
- **配置:**
|
||
- API Base: `https://api.huandutech.com/v1`
|
||
- 模型: `gemini-1.5-flash` (已从gemini-2.0-flash-exp更换)
|
||
- **问题修复:** ✅ 模型不可用问题已解决
|
||
- **状态:** ✅ 正常工作
|
||
|
||
---
|
||
|
||
## 🔧 配置更新
|
||
|
||
### Docker Compose 配置
|
||
```yaml
|
||
服务端口: 4320:3000
|
||
数据库: postgresql://192.168.58.20:5432/lobechat
|
||
AI模型: gemini-1.5-flash (更换后可用)
|
||
存储: S3 (s3.1080p.hk/jsxiangche)
|
||
```
|
||
|
||
### 环境变量更新
|
||
- ✅ `GEMINI_MODEL`: gemini-2.0-flash-exp → gemini-1.5-flash
|
||
- ✅ `DATABASE_URL`: 连接到本地PostgreSQL
|
||
- ✅ `NEXTAUTH_URL`: http://192.168.58.20:4320
|
||
|
||
---
|
||
|
||
## 🌐 访问地址
|
||
|
||
### 内网访问(推荐)
|
||
```
|
||
http://192.168.58.20:4320
|
||
```
|
||
- ✅ 健康检查: http://192.168.58.20:4320/api/health
|
||
- ✅ 部门API: http://192.168.58.20:4320/api/departments
|
||
- ✅ AI聊天: http://192.168.58.20:4320/api/ai-chat
|
||
|
||
### 公网访问(FRP穿透)
|
||
```
|
||
http://180.97.221.140:2320
|
||
```
|
||
- FRP状态: ✅ 运行10天
|
||
- 穿透端口: 本地4320 → 公网2320
|
||
|
||
---
|
||
|
||
## 📝 部署日志
|
||
|
||
### 构建过程
|
||
```
|
||
✅ 排除源码目录避免构建错误
|
||
✅ Next.js 14.2.33 构建成功
|
||
✅ Prisma Client 生成成功
|
||
✅ Docker镜像构建成功
|
||
✅ 容器启动成功
|
||
```
|
||
|
||
### 数据库迁移
|
||
```
|
||
✅ 运行 prisma db push
|
||
✅ 数据库模式同步
|
||
✅ 现有数据完整保留
|
||
```
|
||
|
||
### AI配置修复
|
||
```
|
||
❌ 原问题: gemini-2.0-flash-exp 模型不可用
|
||
✅ 解决方案: 更换为 gemini-1.5-flash
|
||
✅ 容器重启应用新配置
|
||
✅ AI功能正常工作
|
||
```
|
||
|
||
---
|
||
|
||
## 🎯 测试结果
|
||
|
||
### 系统健康检查
|
||
```bash
|
||
curl http://192.168.58.20:4320/api/health
|
||
{"status":"ok","timestamp":"2025-10-28T03:13:31.156Z"}
|
||
```
|
||
|
||
### 部门管理API测试
|
||
```bash
|
||
curl http://192.168.58.20:4320/api/departments
|
||
✅ 返回13个部门数据
|
||
```
|
||
|
||
### 容器日志检查
|
||
```
|
||
✅ 无错误日志
|
||
✅ 数据库查询正常
|
||
✅ API响应正常
|
||
```
|
||
|
||
---
|
||
|
||
## 📂 目录结构
|
||
|
||
### 生产环境
|
||
```
|
||
/mnt/PoolOne/apps/youyidian-3d/
|
||
├── docker-compose.yml (最新)
|
||
├── Dockerfile
|
||
├── app/ (应用代码)
|
||
├── components/
|
||
├── lib/
|
||
├── prisma/
|
||
├── uploads/ (上传文件)
|
||
└── .dockerignore (已更新)
|
||
```
|
||
|
||
### 数据库
|
||
```
|
||
容器: gongxiangpan-postgres-1
|
||
数据库: lobechat
|
||
位置: /mnt/PoolOne/data1/gongxiangpan (PostgreSQL数据卷)
|
||
```
|
||
|
||
---
|
||
|
||
## ⚠️ 重要提醒
|
||
|
||
### 1. 旧容器清理
|
||
```bash
|
||
# 旧的web容器已停止并删除
|
||
# 位置: /mnt/PoolOne/data1/gongxiangpan
|
||
# 状态: 仅保留PostgreSQL数据库容器运行
|
||
```
|
||
|
||
### 2. 部署路径变更
|
||
```
|
||
旧路径: /mnt/PoolOne/data1/gongxiangpan (废弃)
|
||
新路径: /mnt/PoolOne/apps/youyidian-3d (当前)
|
||
```
|
||
|
||
### 3. 端口变更
|
||
```
|
||
旧端口: 3000 (已释放)
|
||
新端口: 4320 (当前使用)
|
||
```
|
||
|
||
---
|
||
|
||
## 🔄 未来部署流程
|
||
|
||
### 更新代码
|
||
```bash
|
||
# 1. 本地打包
|
||
cd /Users/lanmu/Desktop/gongxiangp2
|
||
tar -czf project-update.tar.gz \
|
||
--exclude='node_modules' \
|
||
--exclude='.next' \
|
||
--exclude='源码' \
|
||
--exclude='uploads' \
|
||
.
|
||
|
||
# 2. 上传到服务器
|
||
scp project-update.tar.gz root@192.168.58.20:/mnt/PoolOne/apps/youyidian-3d/
|
||
|
||
# 3. SSH连接并部署
|
||
ssh root@192.168.58.20
|
||
cd /mnt/PoolOne/apps/youyidian-3d
|
||
tar -xzf project-update.tar.gz
|
||
docker compose down
|
||
docker compose up -d --build
|
||
|
||
# 4. 验证
|
||
docker compose logs -f app
|
||
curl http://192.168.58.20:4320/api/health
|
||
```
|
||
|
||
### 或使用部署脚本
|
||
```bash
|
||
bash update-deploy.sh
|
||
```
|
||
|
||
---
|
||
|
||
## 📞 技术支持
|
||
|
||
### 常用命令
|
||
```bash
|
||
# 查看容器状态
|
||
ssh root@192.168.58.20 "docker ps"
|
||
|
||
# 查看应用日志
|
||
ssh root@192.168.58.20 "cd /mnt/PoolOne/apps/youyidian-3d && docker compose logs -f app"
|
||
|
||
# 重启服务
|
||
ssh root@192.168.58.20 "cd /mnt/PoolOne/apps/youyidian-3d && docker compose restart"
|
||
|
||
# 查看数据库数据
|
||
ssh root@192.168.58.20 "docker exec gongxiangpan-postgres-1 psql -U gongxiangpan -d lobechat -c 'SELECT COUNT(*) FROM users;'"
|
||
```
|
||
|
||
### 监控URL
|
||
- 健康检查: http://192.168.58.20:4320/api/health
|
||
- 登录页面: http://192.168.58.20:4320/login
|
||
|
||
---
|
||
|
||
## ✨ 总结
|
||
|
||
✅ **部署成功** - 所有服务正常运行
|
||
✅ **数据完整** - 11用户、15素材、13部门、7分类
|
||
✅ **新功能可用** - 部门管理、AI聊天正常工作
|
||
✅ **配置优化** - AI模型已更换为稳定版本
|
||
✅ **访问正常** - 内网4320端口和公网2320端口均可访问
|
||
|
||
**部署状态:** 🟢 生产环境稳定运行
|
||
|
||
---
|
||
|
||
**生成时间:** 2025-10-28 11:25:00
|
||
**文档版本:** 1.0
|
||
|