gongxiangp2/DEPLOYMENT_REPORT_20251028.md
chenpei 383772d39f 🛡️ 服务器安全加固和FRP问题修复
主要更新:
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 + 防火墙 + 强密码)
- 自动化监控和封禁
- 实时攻击拦截(秒级响应)
- 完整的管理和监控工具

测试环境:开发环境
影响范围:服务器安全、用户上传、系统稳定性
当前状态:✅ 所有问题已修复,系统运行正常
2025-11-06 13:42:36 +08:00

6.1 KiB
Raw Blame History

🚀 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 配置

服务端口: 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

公网访问(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功能正常工作

🎯 测试结果

系统健康检查

curl http://192.168.58.20:4320/api/health
{"status":"ok","timestamp":"2025-10-28T03:13:31.156Z"}

部门管理API测试

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. 旧容器清理

# 旧的web容器已停止并删除
# 位置: /mnt/PoolOne/data1/gongxiangpan
# 状态: 仅保留PostgreSQL数据库容器运行

2. 部署路径变更

旧路径: /mnt/PoolOne/data1/gongxiangpan (废弃)
新路径: /mnt/PoolOne/apps/youyidian-3d (当前)

3. 端口变更

旧端口: 3000 (已释放)
新端口: 4320 (当前使用)

🔄 未来部署流程

更新代码

# 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 update-deploy.sh

📞 技术支持

常用命令

# 查看容器状态
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


✨ 总结

✅ 部署成功 - 所有服务正常运行
✅ 数据完整 - 11用户、15素材、13部门、7分类
✅ 新功能可用 - 部门管理、AI聊天正常工作
✅ 配置优化 - AI模型已更换为稳定版本
✅ 访问正常 - 内网4320端口和公网2320端口均可访问

部署状态: 🟢 生产环境稳定运行


生成时间: 2025-10-28 11:25:00
文档版本: 1.0