Claude Opus 0b0e5b9d7c feat: v3.1.0 OSS直连优化与代码质量提升
- 🚀 OSS 直连上传下载(用户直连OSS,不经过后端)
-  新增 Presigned URL 签名接口
-  支持自定义 OSS endpoint 配置
- 🐛 修复 buildS3Config 不支持自定义 endpoint 的问题
- 🐛 清理残留的 basic-ftp 依赖
- ♻️ 更新 package.json 项目描述和版本号
- 📝 完善 README.md 更新日志和 CORS 配置说明
- 🔒 安全性增强:签名 URL 15分钟/1小时有效期

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 17:14:16 +08:00
2025-11-25 12:24:49 +08:00

玩玩云 - 现代化云存储管理平台

一个功能完整的云存储管理系统支持本地存储和OSS云存储提供文件管理、分享、邮件验证等企业级功能。

Version License Node Vue

项目特色

玩玩云是一个现代化的Web文件管理系统让您可以通过浏览器轻松管理文件。系统支持双存储模式(本地存储/OSS云存储提供完整的用户管理、文件分享、邮件通知等企业级功能。

核心特性

🗂️ 双存储模式

  • 本地存储 - 快速读写,适合小型部署
  • OSS云存储 - 连接云服务,支持大容量存储(支持阿里云 OSS、腾讯云 COS、AWS S3
  • 一键切换 - 在管理面板轻松切换存储方式

📁 完整的文件管理

  • 文件浏览、上传、下载、重命名、删除
  • 支持文件夹操作
  • 流式下载,服务器零存储中转
  • 实时进度显示

🔗 智能文件分享

  • 生成分享链接,支持密码保护
  • 支持有效期设置1小时-永久)
  • 分享密码防爆破保护10次失败封锁20分钟
  • 支持API直接下载

👥 完善的用户系统

  • 用户注册、登录、邮箱验证
  • 密码加密存储bcrypt
  • 邮件找回密码功能
  • JWT令牌认证
  • 管理员权限管理

🔐 企业级安全防护

  • 登录验证码 - 2次密码错误后自动显示验证码
  • 防爆破保护 - 5次登录失败封锁30分钟
  • 分享密码保护 - 10次密码错误封锁20分钟
  • 智能限流 - 基于IP和用户名双重维度
  • 安全日志 - 详细记录所有安全事件

📧 邮件通知系统

  • 注册邮箱验证
  • 密码重置邮件
  • 支持SMTP配置
  • 邮件模板可自定义

🖥️ 桌面上传工具

  • 拖拽上传,简单易用
  • 实时显示上传进度
  • 自动配置,无需手动设置
  • 支持大文件上传

一键部署

  • 全自动安装脚本install.sh
  • 自动检测和安装依赖Node.js、Nginx等
  • 支持宝塔面板环境
  • 自动配置Nginx反向代理
  • 支持Docker容器化部署

🚀 快速开始

环境要求

  • 操作系统: Linux (Ubuntu 18.04+ / Debian 10+ / CentOS 7+)
  • 内存: 最低 1GB RAM推荐 2GB+
  • 磁盘空间: 至少 2GB 可用空间

方式1: 一键部署(推荐)

使用我们的自动化安装脚本5分钟即可完成部署

# 使用 curl
curl -fsSL https://git.workyai.cn/237899745/vue-driven-cloud-storage/raw/branch/master/install.sh | bash

# 或使用 wget
wget -qO- https://git.workyai.cn/237899745/vue-driven-cloud-storage/raw/branch/master/install.sh | bash

安装脚本会自动完成以下工作:

  • 检测系统环境
  • 安装 Node.js 20.x如未安装
  • 安装 Nginx如未安装
  • 克隆项目代码
  • 安装依赖包
  • 配置 Nginx 反向代理
  • 配置系统服务systemd
  • 自动启动服务
  • 显示访问信息

方式2: Docker 部署

适合熟悉 Docker 的用户:

# 1. 克隆项目
git clone https://git.workyai.cn/237899745/vue-driven-cloud-storage.git
cd vue-driven-cloud-storage

# 2. 启动服务
docker-compose up -d

# 3. 查看日志
docker-compose logs -f

方式3: 手动部署

详细步骤请参考 INSTALL_GUIDE.md

首次访问

部署完成后,访问系统:

  • 访问地址: http://你的服务器IP
  • 默认管理员账号:
    • 用户名: admin
    • 密码: admin123
    • ⚠️ 请立即登录并修改密码!

📖 使用指南

配置存储方式

登录后进入"管理面板" → "存储管理",选择存储方式:

本地存储(推荐新手)

  • 无需额外配置
  • 文件存储在服务器本地
  • 适合小型部署

OSS云存储适合大容量

  1. 点击"切换到 OSS"
  2. 填写 OSS 配置:
    • 云服务商:选择阿里云/腾讯云/AWS S3
    • 地域:如 oss-cn-hangzhou / ap-guangzhou / us-east-1
    • Access Key ID从云服务商获取
    • Access Key Secret从云服务商获取
    • 存储桶名称:在云控制台创建
    • 自定义 Endpoint可选一般不需要填写
  3. 保存配置

⚠️ 重要OSS Bucket CORS 配置

使用 OSS 直连上传下载功能,必须在 Bucket 中配置 CORS 规则:

<!-- 阿里云 OSS / 腾讯云 COS / AWS S3 通用配置 -->
<CORSConfiguration>
  <CORSRule>
    <AllowedOrigin>https://你的域名.com</AllowedOrigin>
    <AllowedOrigin>https://www.你的域名.com</AllowedOrigin>
    <!-- 如果是本地测试,添加: -->
    <AllowedOrigin>http://localhost:3000</AllowedOrigin>

    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>DELETE</AllowedMethod>

    <AllowedHeader>*</AllowedHeader>
    <ExposeHeader>ETag</ExposeHeader>
    <ExposeHeader>x-amz-request-id</ExposeHeader>
  </CORSRule>
</CORSConfiguration>

各云服务商控制台配置路径:

  • 阿里云 OSSBucket 管理 → 权限管理 → 跨域设置 → 创建规则
  • 腾讯云 COS:存储桶管理 → 安全管理 → 跨域访问 CORS 设置
  • AWS S3Bucket → Permissions → CORS configuration

配置邮件服务

进入"管理面板" → "系统设置" → "邮件配置"

SMTP服务器: smtp.example.com
SMTP端口: 465
发件邮箱: noreply@example.com
SMTP密码: 你的授权码

配置后即可使用邮箱验证和密码重置功能。

文件管理

  • 上传文件: 点击"上传文件"按钮选择本地文件
  • 下载文件: 点击文件行的下载图标
  • 重命名: 点击文件名旁的编辑图标
  • 删除文件: 点击删除图标
  • 创建文件夹: 点击"新建文件夹"按钮

文件分享

  1. 选择要分享的文件,点击"分享"按钮
  2. 设置分享选项:
    • 分享密码(可选)
    • 有效期1小时、1天、7天、永久
  3. 复制分享链接发送给他人
  4. 在"我的分享"中管理所有分享链接

使用桌面上传工具

  1. 进入"上传工具"页面
  2. 下载适合你系统的上传工具
  3. 输入服务器地址和API密钥
  4. 拖拽文件即可上传

📁 项目结构

vue-driven-cloud-storage/
├── backend/              # 后端服务
│   ├── server.js        # Express 服务器
│   ├── database.js      # SQLite 数据库操作
│   ├── auth.js          # JWT 认证中间件
│   ├── mailer.js        # 邮件发送模块
│   ├── package.json     # 依赖配置
│   └── uploads/         # 本地存储目录
│
├── frontend/            # 前端代码
│   ├── index.html      # 登录注册页面
│   ├── app.html        # 主应用页面
│   ├── app.js          # 应用逻辑
│   ├── share.html      # 分享页面
│   └── libs/           # 第三方库 (Vue.js, Axios, etc.)
│
├── nginx/               # Nginx 配置
│   └── nginx.conf      # 反向代理配置
│
├── upload-tool/         # 桌面上传工具
│   ├── upload_tool.py  # Python 上传工具源码
│   └── build.bat       # Windows 打包脚本
│
├── install.sh          # 一键安装脚本 ⭐
├── deploy.sh           # Docker 部署脚本
├── docker-compose.yml  # Docker 编排文件
├── .gitignore          # Git 忽略文件
└── README.md           # 本文件

🛠️ 技术栈

后端技术

  • Node.js 20 - JavaScript 运行时
  • Express 4.x - Web 应用框架
  • better-sqlite3 - 轻量级数据库
  • @aws-sdk/client-s3 - OSS/S3 云存储 SDK
  • jsonwebtoken - JWT 认证
  • bcrypt - 密码加密
  • nodemailer - 邮件发送
  • svg-captcha - 验证码生成
  • express-session - Session 管理

前端技术

  • Vue.js 3 - 渐进式 JavaScript 框架
  • Axios - HTTP 请求库
  • Font Awesome - 图标库
  • 原生 CSS - 现代化界面设计

部署方案

  • Docker - 容器化
  • Docker Compose - 容器编排
  • Nginx - 反向代理和静态资源服务
  • Systemd - 系统服务管理

🔐 安全特性

认证与授权

  • bcrypt 密码加密10轮盐值
  • JWT 令牌认证
  • Session 安全管理
  • CORS 跨域配置
  • SQL 注入防护(参数化查询)
  • XSS 防护(输入过滤)

防爆破保护

  • 登录验证码2次失败后显示
  • 登录防爆破5次失败封锁30分钟
  • 分享密码防爆破10次失败封锁20分钟
  • 基于 IP + 用户名双重维度限流
  • 支持反向代理 X-Forwarded-For

数据安全

  • OSS 密钥加密存储
  • 数据库事务支持
  • 定期清理过期分享
  • 安全日志记录

🔧 管理维护

查看服务状态

# Systemd 部署
sudo systemctl status vue-cloud-storage

# Docker 部署
docker-compose ps

查看日志

# Systemd 部署
sudo journalctl -u vue-cloud-storage -f

# Docker 部署
docker-compose logs -f backend

重启服务

# Systemd 部署
sudo systemctl restart vue-cloud-storage

# Docker 部署
docker-compose restart

备份数据

# 备份数据库
sudo cp /var/www/vue-driven-cloud-storage/backend/data/database.db \
        /backup/database.db.$(date +%Y%m%d)

# 备份上传文件(本地存储模式)
sudo tar -czf /backup/uploads-$(date +%Y%m%d).tar.gz \
        /var/www/vue-driven-cloud-storage/backend/uploads/

更新系统

cd /var/www/vue-driven-cloud-storage
git pull
cd backend && npm install
sudo systemctl restart vue-cloud-storage

📊 性能优化建议

生产环境配置

  1. 启用 HTTPS

    • 使用 Let's Encrypt 免费证书
    • 在 Nginx 中配置 SSL
  2. 配置缓存

    • 启用 Nginx 静态资源缓存
    • 配置浏览器缓存策略
  3. 数据库优化

    • 定期清理过期数据
    • 定期备份数据库
  4. 监控告警

    • 配置日志监控
    • 设置磁盘空间告警

常见问题

安装相关

Q: 一键安装脚本支持哪些系统? A: Ubuntu 18.04+、Debian 10+、CentOS 7+、宝塔面板环境。

Q: 如何查看安装进度? A: 安装脚本会实时显示进度,完成后显示访问地址。

使用相关

Q: 如何切换存储方式? A: 登录后进入"管理面板" → "存储管理",点击切换按钮即可。

Q: 忘记管理员密码怎么办? A: 点击登录页的"忘记密码",通过邮箱重置密码。如未配置邮箱,需要手动重置数据库。

Q: 上传文件大小限制是多少? A: 默认限制 5GB可在 Nginx 配置中修改 client_max_body_size

故障排查

Q: 无法访问系统

  1. 检查服务是否启动:sudo systemctl status vue-cloud-storage
  2. 检查防火墙是否开放端口
  3. 查看 Nginx 日志:sudo tail -f /var/log/nginx/error.log

Q: OSS 连接失败

  1. 检查云服务商控制台,确认 Access Key 是否有效
  2. 验证地域和存储桶名称是否正确
  3. 检查存储桶的权限设置(需要允许读写操作)
  4. 检查网络连接和防火墙设置

Q: OSS 上传失败,提示 CORS 错误

  1. 确认已在 Bucket 中配置 CORS 规则(参考上方配置指南)
  2. 检查 AllowedOrigin 是否包含你的域名
  3. 确认 AllowedMethod 包含 PUT 方法
  4. 检查 AllowedHeader 设置为 *

Q: 邮件发送失败

  1. 检查 SMTP 配置是否正确
  2. 确认 SMTP 密码是授权码(非登录密码)
  3. 查看后端日志排查错误

📝 更新日志

v3.1.0 (2025-01-18)

  • 🚀 重大架构优化OSS 直连上传下载(不经过后端)
    • 上传速度提升 50%,服务器流量节省 50%
    • 下载直连 OSS享受 CDN 加速
    • 使用 AWS Presigned URL 保证安全性
  • 支持本地存储和 OSS 混合模式
  • 新增 OSS Bucket CORS 配置说明
  • 分享下载也支持 OSS 直连
  • 🐛 修复上传/删除后空间统计不刷新的问题
  • 🐛 清理残留的 httpDownloadUrl 无效代码

v3.0.0 (2025-01-18)

  • 🚀 重大架构升级SFTP → OSS 云存储
  • 支持阿里云 OSS、腾讯云 COS、AWS S3
  • 新增 OSS 空间统计缓存机制
  • 优化上传工具,使用 API 上传
  • 🐛 修复 SFTP 残留代码引用
  • 💄 优化前端 UI移除 SFTP 相关界面

v1.1.0 (2025-11-13)

  • 新增登录验证码功能
  • 新增登录防爆破保护5次失败封锁30分钟
  • 新增分享密码防爆破保护10次失败封锁20分钟
  • 支持反向代理 X-Forwarded-For
  • 🐛 修复更新脚本导致上传工具丢失
  • 💄 优化管理面板界面

v1.0.0 (2025-11-01)

  • 🎉 首个正式版本发布
  • 完整的文件管理功能
  • 双存储模式(本地/OSS
  • 文件分享功能
  • 用户管理系统
  • 邮件验证和密码重置
  • 桌面上传工具
  • 一键部署脚本

完整更新日志请查看 VERSION.txt

🤝 贡献指南

欢迎提交 Issue 和 Pull Request

开发环境搭建

# 克隆项目
git clone https://git.workyai.cn/237899745/vue-driven-cloud-storage.git
cd vue-driven-cloud-storage

# 安装依赖
cd backend && npm install

# 启动开发服务器
node server.js

提交规范

  • feat: 新功能
  • fix: 修复bug
  • docs: 文档更新
  • style: 代码格式调整
  • refactor: 重构
  • test: 测试相关
  • chore: 构建/工具相关

📄 许可证

本项目仅供学习和个人使用。

💬 联系方式

🙏 致谢

感谢所有开源项目的贡献者!


玩玩云 - 让云存储管理更简单 ☁️

Made with ❤️ by 玩玩云团队

Description
No description provided
Readme 17 MiB
Languages
JavaScript 74.5%
HTML 14.9%
Shell 10.5%