Files
vue-driven-cloud-storage/README.md
237899745 4350113979 fix: 修复配额说明重复和undefined问题
- 在editStorageForm中初始化oss_storage_quota_value和oss_quota_unit
- 删除重复的旧配额说明块,保留新的当前配额设置显示

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 19:39:53 +08:00

517 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 玩玩云 - 现代化云存储管理平台
> 一个功能完整的云存储管理系统支持本地存储和OSS云存储提供文件管理、分享、邮件验证等企业级功能。
<div align="center">
![Version](https://img.shields.io/badge/version-3.1.0-blue.svg)
![License](https://img.shields.io/badge/license-Personal%20Use-green.svg)
![Node](https://img.shields.io/badge/node-20.x-brightgreen.svg)
![Vue](https://img.shields.io/badge/vue-3.x-42b883.svg)
</div>
## ✨ 项目特色
玩玩云是一个现代化的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分钟即可完成部署
```bash
# 使用 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 的用户:
```bash
# 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](./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 规则:
```xml
<!-- 阿里云 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>
```
**各云服务商控制台配置路径:**
- **阿里云 OSS**Bucket 管理 → 权限管理 → 跨域设置 → 创建规则
- **腾讯云 COS**:存储桶管理 → 安全管理 → 跨域访问 CORS 设置
- **AWS S3**Bucket → 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 服务器 (含邮件、API等)
│ ├── database.js # SQLite 数据库操作
│ ├── storage.js # 存储接口 (本地/OSS)
│ ├── auth.js # JWT 认证中间件
│ ├── package.json # 依赖配置
│ ├── Dockerfile # Docker 构建文件
│ ├── .env.example # 环境变量示例
│ ├── data/ # 数据库目录
│ └── storage/ # 本地存储目录
├── frontend/ # 前端代码
│ ├── index.html # 登录注册页面
│ ├── app.html # 主应用页面
│ ├── share.html # 分享页面
│ ├── verify.html # 邮箱验证页面
│ ├── reset-password.html # 密码重置页面
│ └── libs/ # 第三方库 (Vue.js, Axios, FontAwesome)
├── nginx/ # Nginx 配置
│ ├── nginx.conf # 反向代理配置
│ └── nginx.conf.example # 配置模板
├── upload-tool/ # 桌面上传工具
│ ├── upload_tool.py # Python 上传工具源码
│ ├── requirements.txt # Python 依赖
│ ├── build.bat # Windows 打包脚本
│ └── build.sh # Linux/Mac 打包脚本
├── install.sh # 一键安装脚本
├── 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 密钥加密存储
- ✅ 数据库事务支持
- ✅ 定期清理过期分享
- ✅ 安全日志记录
## 🔧 管理维护
### 查看服务状态
```bash
# Systemd 部署
sudo systemctl status vue-cloud-storage
# Docker 部署
docker-compose ps
```
### 查看日志
```bash
# Systemd 部署
sudo journalctl -u vue-cloud-storage -f
# Docker 部署
docker-compose logs -f backend
```
### 重启服务
```bash
# Systemd 部署
sudo systemctl restart vue-cloud-storage
# Docker 部署
docker-compose restart
```
### 备份数据
```bash
# 备份数据库
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/
```
### 更新系统
```bash
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](./VERSION.txt)
## 🤝 贡献指南
欢迎提交 Issue 和 Pull Request
### 开发环境搭建
```bash
# 克隆项目
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: 构建/工具相关
## 📄 许可证
本项目仅供学习和个人使用。
## 💬 联系方式
- **项目地址**: https://git.workyai.cn/237899745/vue-driven-cloud-storage
- **Gitee镜像**: https://gitee.com/yu-yon/vue-driven-cloud-storage
- **问题反馈**: 请在 Gitea 提交 Issue
## 🙏 致谢
感谢所有开源项目的贡献者!
---
**玩玩云** - 让云存储管理更简单 ☁️
<div align="center">
Made with ❤️ by 玩玩云团队
</div>