# 玩玩云 - 现代化云存储管理平台 > 一个功能完整的云存储管理系统,支持本地存储和SFTP存储,提供文件管理、分享、邮件验证等企业级功能。
![Version](https://img.shields.io/badge/version-1.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)
## ✨ 项目特色 玩玩云是一个现代化的Web文件管理系统,让您可以通过浏览器轻松管理文件。系统支持**双存储模式**(本地存储/SFTP存储),提供完整的用户管理、文件分享、邮件通知等企业级功能。 ### 核心特性 #### 🗂️ 双存储模式 - **本地存储** - 快速读写,适合小型部署 - **SFTP存储** - 连接远程服务器,支持大容量存储 - **一键切换** - 在管理面板轻松切换存储方式 #### 📁 完整的文件管理 - 文件浏览、上传、下载、重命名、删除 - 支持文件夹操作 - 流式下载,服务器零存储中转 - 实时进度显示 #### 🔗 智能文件分享 - 生成分享链接,支持密码保护 - 支持有效期设置(1小时-永久) - 分享密码防爆破保护(10次失败封锁20分钟) - 支持HTTP直链和SFTP双模式下载 #### 👥 完善的用户系统 - 用户注册、登录、邮箱验证 - 密码加密存储(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` - ⚠️ **请立即登录并修改密码!** ## 📖 使用指南 ### 配置存储方式 登录后进入"管理面板" → "存储管理",选择存储方式: #### 本地存储(推荐新手) - 无需额外配置 - 文件存储在服务器本地 - 适合小型部署 #### SFTP存储(适合独立存储) 1. 点击"切换到 SFTP" 2. 填写SFTP配置: - SFTP主机: 远程服务器IP - SFTP端口: 默认22 - SFTP用户名: SFTP账号 - SFTP密码: SFTP密码 - 远程路径: 文件存储路径 3. 保存配置 ### 配置邮件服务 进入"管理面板" → "系统设置" → "邮件配置": ``` 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** - 轻量级数据库 - **ssh2-sftp-client** - SFTP 客户端库 - **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 ### 数据安全 - ✅ SFTP 密码加密存储 - ✅ 数据库事务支持 - ✅ 定期清理过期分享 - ✅ 安全日志记录 ## 🔧 管理维护 ### 查看服务状态 ```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/ftp-manager.db \ /backup/ftp-manager.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: SFTP 连接失败** 1. 检查 SFTP 服务器是否可访问 2. 验证用户名和密码是否正确 3. 检查远程路径权限 **Q: 邮件发送失败** 1. 检查 SMTP 配置是否正确 2. 确认 SMTP 密码是授权码(非登录密码) 3. 查看后端日志排查错误 ## 📝 更新日志 ### v1.1.0 (2025-11-13) - ✨ 新增登录验证码功能 - ✨ 新增登录防爆破保护(5次失败封锁30分钟) - ✨ 新增分享密码防爆破保护(10次失败封锁20分钟) - ✨ 支持反向代理 X-Forwarded-For - 🐛 修复更新脚本导致上传工具丢失 - 💄 优化管理面板界面 ### v1.0.0 (2025-11-01) - 🎉 首个正式版本发布 - ✨ 完整的文件管理功能 - ✨ 双存储模式(本地/SFTP) - ✨ 文件分享功能 - ✨ 用户管理系统 - ✨ 邮件验证和密码重置 - ✨ 桌面上传工具 - ✨ 一键部署脚本 完整更新日志请查看 [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 ## 🙏 致谢 感谢所有开源项目的贡献者! --- **玩玩云** - 让云存储管理更简单 ☁️
Made with ❤️ by 玩玩云团队