d5fada3a262989063dc19871106f1197697e7122
核心改进: 1. 移除Certbot (方案1) - 原因:Python依赖冲突(urllib3)难以解决 - 用户已用acme.sh成功申请证书 - acme.sh更轻量、更可靠 2. 优化SSL方案选择菜单 - 新方案1:acme.sh + Let's Encrypt (推荐) - 新方案2:acme.sh + ZeroSSL - 新方案3:acme.sh + Buypass - 新方案4-5:阿里云/腾讯云 - 新方案6-7:手动上传/暂不配置 3. 添加自动续期配置功能 - 新增setup_acme_auto_renew()函数 - 自动检查并启动cron服务 - 验证acme.sh自动续期任务 - 显示续期时间和配置信息 - 提供续期检查命令 4. 自动续期特性: - ✅ 每天自动检查证书 - ✅ 证书到期前30天自动续期 - ✅ 续期后自动重载Nginx - ✅ 无需手动干预 5. 用户体验改进: - 显示详细的续期配置信息 - 提供手动续期命令 - 统一的续期管理方式 - 完成提示中显示续期检查命令 技术细节: - acme.sh安装时自动创建cron任务 - 兼容cron/crond两种服务名 - 支持systemctl和传统service管理 - 显示预计续期时间(从证书配置文件读取) 🤖 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%