- 🐛 修复数据库路径检查(ftp-manager.db → data/database.db) - 🐛 修复数据库迁移函数中的旧数据库路径 - 🐛 修复上传限制检查中的数据库路径 - 🐛 删除对不存在字段的引用 - ✅ 优化数据库迁移逻辑 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
玩玩云 - 现代化云存储管理平台
一个功能完整的云存储管理系统,支持本地存储和OSS云存储,提供文件管理、分享、邮件验证等企业级功能。
✨ 项目特色
玩玩云是一个现代化的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云存储(适合大容量)
- 点击"切换到 OSS"
- 填写 OSS 配置:
- 云服务商:选择阿里云/腾讯云/AWS S3
- 地域:如
oss-cn-hangzhou/ap-guangzhou/us-east-1 - Access Key ID:从云服务商获取
- Access Key Secret:从云服务商获取
- 存储桶名称:在云控制台创建
- 自定义 Endpoint:可选,一般不需要填写
- 保存配置
⚠️ 重要: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>
各云服务商控制台配置路径:
- 阿里云 OSS:Bucket 管理 → 权限管理 → 跨域设置 → 创建规则
- 腾讯云 COS:存储桶管理 → 安全管理 → 跨域访问 CORS 设置
- AWS S3:Bucket → Permissions → CORS configuration
配置邮件服务
进入"管理面板" → "系统设置" → "邮件配置":
SMTP服务器: smtp.example.com
SMTP端口: 465
发件邮箱: noreply@example.com
SMTP密码: 你的授权码
配置后即可使用邮箱验证和密码重置功能。
文件管理
- 上传文件: 点击"上传文件"按钮选择本地文件
- 下载文件: 点击文件行的下载图标
- 重命名: 点击文件名旁的编辑图标
- 删除文件: 点击删除图标
- 创建文件夹: 点击"新建文件夹"按钮
文件分享
- 选择要分享的文件,点击"分享"按钮
- 设置分享选项:
- 分享密码(可选)
- 有效期(1小时、1天、7天、永久)
- 复制分享链接发送给他人
- 在"我的分享"中管理所有分享链接
使用桌面上传工具
- 进入"上传工具"页面
- 下载适合你系统的上传工具
- 输入服务器地址和API密钥
- 拖拽文件即可上传
📁 项目结构
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
📊 性能优化建议
生产环境配置
-
启用 HTTPS
- 使用 Let's Encrypt 免费证书
- 在 Nginx 中配置 SSL
-
配置缓存
- 启用 Nginx 静态资源缓存
- 配置浏览器缓存策略
-
数据库优化
- 定期清理过期数据
- 定期备份数据库
-
监控告警
- 配置日志监控
- 设置磁盘空间告警
❓ 常见问题
安装相关
Q: 一键安装脚本支持哪些系统? A: Ubuntu 18.04+、Debian 10+、CentOS 7+、宝塔面板环境。
Q: 如何查看安装进度? A: 安装脚本会实时显示进度,完成后显示访问地址。
使用相关
Q: 如何切换存储方式? A: 登录后进入"管理面板" → "存储管理",点击切换按钮即可。
Q: 忘记管理员密码怎么办? A: 点击登录页的"忘记密码",通过邮箱重置密码。如未配置邮箱,需要手动重置数据库。
Q: 上传文件大小限制是多少?
A: 默认限制 5GB,可在 Nginx 配置中修改 client_max_body_size。
故障排查
Q: 无法访问系统
- 检查服务是否启动:
sudo systemctl status vue-cloud-storage - 检查防火墙是否开放端口
- 查看 Nginx 日志:
sudo tail -f /var/log/nginx/error.log
Q: OSS 连接失败
- 检查云服务商控制台,确认 Access Key 是否有效
- 验证地域和存储桶名称是否正确
- 检查存储桶的权限设置(需要允许读写操作)
- 检查网络连接和防火墙设置
Q: OSS 上传失败,提示 CORS 错误
- 确认已在 Bucket 中配置 CORS 规则(参考上方配置指南)
- 检查 AllowedOrigin 是否包含你的域名
- 确认 AllowedMethod 包含 PUT 方法
- 检查 AllowedHeader 设置为 *
Q: 邮件发送失败
- 检查 SMTP 配置是否正确
- 确认 SMTP 密码是授权码(非登录密码)
- 查看后端日志排查错误
📝 更新日志
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: 构建/工具相关
📄 许可证
本项目仅供学习和个人使用。
💬 联系方式
- 项目地址: https://git.workyai.cn/237899745/vue-driven-cloud-storage
- Gitee镜像: https://gitee.com/yu-yon/vue-driven-cloud-storage
- 问题反馈: 请在 Gitea 提交 Issue
🙏 致谢
感谢所有开源项目的贡献者!
玩玩云 - 让云存储管理更简单 ☁️
Made with ❤️ by 玩玩云团队