ada9afa396cdad08d7a79975e524a174b3f49cd5
解决了使用install.sh更新时,旧的不安全CORS配置仍然保留的问题。 ## 新增功能 ### 自动安全配置检查 更新时会自动检查 backend/.env 中的安全配置: 1. **CORS配置检查** - 检测 ALLOWED_ORIGINS=* (不安全) - 自动从Nginx配置读取域名 - 自动检测HTTP/HTTPS协议 - 提示用户确认并自动修复 2. **环境变量检查** - 检查NODE_ENV是否设置为production - 给出安全建议 ### 工作流程 当执行 `bash install.sh --update` 时: ```bash 检查安全配置... ⚠️ 检测到不安全的CORS配置: ALLOWED_ORIGINS=* 这是一个严重的安全风险!攻击者可以从任何域名访问你的API。 检测到域名: cs.workyai.cn 建议将CORS设置为: https://cs.workyai.cn 是否自动修复CORS配置?[y/n]: ``` ### 修复机制 - ✅ 自动备份原配置到 .env.backup.YYYYMMDD_HHMMSS - ✅ 智能检测HTTP/HTTPS - ✅ 从Nginx配置读取域名 - ✅ 用户确认后自动修改 - ✅ 如果无法自动修复,给出手动修复指引 ### 兼容性 - ✅ 不影响安全的现有配置 - ✅ 只修复明确不安全的配置(ALLOWED_ORIGINS=*) - ✅ 提供备份,可随时回滚 ## 使用方法 ```bash # 更新项目(会自动检查安全配置) bash install.sh --update # 或者使用交互式菜单 bash install.sh # 选择 [2] 更新/升级 ``` 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
玩玩云 - Web SFTP 文件管理系统
一个基于Web的SFTP文件管理系统,提供文件上传、下载、分享等功能,支持多用户管理。
📋 项目简介
玩玩云是一个现代化的Web文件管理系统,让您可以通过浏览器管理SFTP服务器上的文件。系统支持文件的上传、下载、重命名、删除、分享等操作,并提供桌面端上传工具,方便快速上传大文件。
主要特性
- ✅ 文件管理 - 浏览、上传、下载、重命名、删除文件
- ✅ 文件分享 - 生成分享链接,支持密码保护和有效期设置
- ✅ 多用户系统 - 用户注册、登录、权限管理
- ✅ 桌面上传工具 - 拖拽上传,实时显示进度
- ✅ 流式下载 - 服务器零存储,纯中转下载
- ✅ 管理员功能 - 用户管理、文件审查、系统设置
- ✅ Docker部署 - 一键部署,易于维护
🛠️ 技术栈
前端
- Vue.js 3 - 渐进式JavaScript框架
- Axios - HTTP请求库
- Font Awesome - 图标库
后端
- Node.js 20 - JavaScript运行时
- Express - Web应用框架
- better-sqlite3 - 轻量级数据库
- ssh2-sftp-client - SFTP客户端
- JWT - 用户认证
部署
- Docker - 容器化
- Docker Compose - 容器编排
- Nginx - 反向代理
🚀 快速开始
环境要求
- Docker: 20.10.0+
- Docker Compose: 2.0.0+
- 操作系统: Linux (Ubuntu 20.04+ / Debian 10+ / CentOS 7+)
- 内存: 最低 1GB RAM(推荐 2GB+)
方法1: 一键部署(推荐)
# 1. 上传或克隆项目
cd /var/www
# 将项目文件上传到此目录
# 2. 进入项目目录
cd ftp-web-manager
# 3. 一键部署
bash deploy.sh
deploy.sh脚本会自动:
- 检查Docker和Docker Compose环境
- 创建必要的目录
- 构建并启动所有服务
- 显示访问信息和默认账号
方法2: 手动部署
# 1. 进入项目目录
cd /var/www/ftp-web-manager
# 2. 创建必要的目录
mkdir -p certbot/conf certbot/www backend/uploads
# 3. 构建并启动服务
docker-compose up --build -d
# 4. 查看日志
docker-compose logs -f
访问系统
部署完成后:
- 前端地址: http://服务器IP:8080
- 后端API: http://服务器IP:40001
- 默认管理员账号:
- 用户名:
admin - 密码:
admin123 - ⚠️ 请立即登录并修改密码!
- 用户名:
📖 使用教程
配置SFTP服务器
首次使用需要配置SFTP连接信息:
-
登录后点击右上角用户菜单
-
选择"设置"
-
填写SFTP配置:
- SFTP主机: 您的SFTP服务器IP
- SFTP端口: 默认22
- SFTP用户名: SFTP账号
- SFTP密码: SFTP密码
- HTTP下载基础URL(可选): 如果有HTTP直接下载地址
-
点击"保存配置"
文件管理
- 浏览文件: 点击文件夹图标进入子目录
- 上传文件: 点击"上传文件"按钮选择本地文件
- 下载文件: 点击文件行的下载按钮
- 重命名: 点击"重命名"按钮修改文件名
- 删除: 点击"删除"按钮删除文件
文件分享
- 点击文件行的"分享"按钮
- 设置分享选项:
- 分享密码(可选)
- 有效期(可选)
- 复制分享链接发送给他人
🔧 维护操作
查看日志
# 查看所有日志
docker-compose logs -f
# 查看后端日志
docker-compose logs -f backend
重启服务
# 重启所有容器
docker-compose restart
# 重启指定容器
docker-compose restart backend
停止服务
docker-compose down
备份数据
# 备份数据库
cp backend/ftp-manager.db backup/ftp-manager.db.$(date +%Y%m%d)
# 备份整个项目
tar -czf backup/wanwanyun-$(date +%Y%m%d).tar.gz .
更新代码
# 拉取最新代码
git pull
# 重新构建并重启
docker-compose up --build -d
🔐 安全建议
- 修改默认密码: 首次登录后立即修改admin密码
- 使用HTTPS: 配置SSL证书,使用HTTPS访问
- 修改JWT密钥: 在backend/.env文件中设置随机的JWT_SECRET
- 定期备份: 定期备份数据库文件
- 限制端口: 不要对外暴露40001端口,只通过Nginx访问
❓ 常见问题
Docker容器启动失败
# 查看日志
docker-compose logs backend
# 重新构建
docker-compose down
docker-compose up --build -d
上传失败提示权限错误
检查SFTP服务器目录权限,确保上传目录有写权限。
分享链接无法访问
检查nginx配置和防火墙设置,确保端口8080可访问。
📁 项目结构
ftp-web-manager/
├── backend/ # 后端代码
│ ├── server.js # 主服务器文件
│ ├── database.js # 数据库操作
│ ├── auth.js # 认证中间件
│ ├── Dockerfile # Docker镜像
│ └── package.json # 依赖配置
│
├── frontend/ # 前端代码
│ ├── index.html # 登录页面
│ ├── app.html # 主应用页面
│ ├── share.html # 分享页面
│ └── libs/ # 第三方库
│
├── nginx/ # Nginx配置
│ └── nginx.conf # 配置文件
│
├── upload-tool/ # 上传工具
│ ├── upload_tool.py # Python源码
│ └── build.bat # 打包脚本
│
├── docker-compose.yml # Docker编排
├── deploy.sh # 一键部署脚本
├── .gitignore # Git忽略文件
└── README.md # 本文件
🤝 贡献指南
欢迎提交Issue和Pull Request!
📄 许可证
本项目仅供学习和个人使用。
玩玩云 - 让文件管理更简单 ☁️
Description
Languages
JavaScript
74.5%
HTML
14.9%
Shell
10.5%