Commit Graph
71 Commits
Author SHA1 Message Date
WanWanYunandClaude 5a27f0b7e9 fix: 修复弹窗交互问题和拖放上传UI重复显示
问题描述:
1. 弹窗点击外部关闭时,选择文本拖动鼠标到窗口外会误触关闭
2. 拖放文件上传的提示UI重复显示了两次

修复内容:

【弹窗交互优化】
- 将所有模态框的 @click 事件改为 @mousedown.self + @mouseup.self 组合
- 新增 handleModalMouseDown 和 handleModalMouseUp 方法
- 只有在同一个overlay元素上按下和释放鼠标时才关闭弹窗
- 解决了选择文本时拖动鼠标导致弹窗意外关闭的问题
- 受影响的弹窗:
  * 重命名文件弹窗
  * 分享所有文件弹窗
  * 分享单个文件弹窗
  * 忘记密码弹窗
  * 文件审查弹窗
  * 编辑存储权限弹窗

【拖放UI修复】
- 删除了重复的拖放上传提示层(原第670-677行)
- 保留文件列表区域内的拖放提示层(第711-718行)
- 现在拖放上传提示只显示一次

技术改进:
- mousedown.self: 只在overlay本身被按下时触发
- mouseup.self: 只在overlay本身被释放时触发
- 记录mousedown的目标,只有目标一致才执行关闭
- 提升了用户体验,避免误操作

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 22:32:50 +08:00
WanWanYunandClaude ca92b7ed94 fix: 修复宝塔面板环境下install.sh安装脚本Nginx重载失败导致脚本闪退的问题
问题描述:
- 在宝塔面板环境下运行install.sh时,Nginx重载步骤会因为命令失败导致整个脚本闪退
- 由于脚本使用了 set -e,任何命令返回非0退出码都会导致脚本终止

修复内容:
1. configure_nginx_http_first 函数 (2408-2446行):
   - 移除可能失败的 /etc/init.d/bt restart 命令
   - 在所有Nginx命令前添加配置测试
   - 使用 || true 防止命令失败导致脚本退出
   - 优化错误提示,失败时不退出脚本

2. configure_nginx_final 函数 (2504-2538行):
   - 同样的修复逻辑应用到Nginx重载环节
   - 确保即使Nginx操作失败,脚本也能继续执行后续步骤

技术改进:
- 先测试Nginx配置再reload,避免配置错误导致服务中断
- reload失败时自动尝试重启Nginx
- 所有可能失败的命令都添加了错误处理
- 保留systemctl作为备用方案

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 19:31:52 +08:00
WanWanYunandClaude d5fada3a26 feat: 移除Certbot方案,统一使用acme.sh + 添加自动续期配置
核心改进:
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>
2025-11-13 15:24:08 +08:00
WanWanYunandClaude 691d4ad075 fix: 处理SSL证书已存在的情况,避免重复申请失败
核心问题:
- 当证书已存在时,acme.sh会报错"Domains not changed"并拒绝申请
- Certbot同样会拒绝重复申请已有的证书
- 导致用户重新运行脚本时SSL部署总是失败

解决方案:
1. acme.sh方案:
   - 申请失败后检查证书是否已在证书列表中
   - 如果已存在,直接使用现有证书进行安装
   - 避免不必要的重复申请

2. Certbot方案:
   - 申请失败后检查 /etc/letsencrypt/live/${DOMAIN} 目录
   - 如果证书文件存在,直接创建软链接到nginx目录
   - 保证证书可以正常使用

3. 应用范围:
   - deploy_certbot() - Certbot方案
   - deploy_acme_letsencrypt() - acme.sh + Let's Encrypt
   - deploy_acme_zerossl() - acme.sh + ZeroSSL
   - deploy_acme_buypass() - acme.sh + Buypass

优点:
-  支持重复运行脚本而不报错
-  充分利用已有的有效证书
-  减少对CA服务器的请求压力
-  避免触发速率限制

用户体验改进:
- 显示友好的"检测到证书已存在"提示
- 自动继续安装流程,无需用户干预

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-13 15:16:22 +08:00
WanWanYunandClaude 8b9af536c7 fix: 修复SSL证书部署的两个关键问题
问题1:acme.sh证书安装时nginx reload失败
- 错误:nginx.service is not active, cannot reload
- 原因:证书安装时nginx服务未运行
- 解决:
  1. 在安装证书前检查并启动nginx服务
  2. 移除--reloadcmd参数,改为手动reload
  3. 兼容systemctl和直接nginx命令两种方式
  4. 兼容宝塔面板的nginx路径

问题2:Certbot安装/运行时urllib3依赖冲突
- 错误:ImportError: cannot import name 'appengine' from 'urllib3.contrib'
- 原因:系统的python3-urllib3版本与certbot不兼容
- 解决:
  1. 安装certbot前移除冲突的python3-urllib3包
  2. 添加已安装certbot的依赖修复逻辑
  3. 应用到apt/yum/dnf等所有包管理器
  4. 提供详细的错误提示和修复建议

技术改进:
- acme.sh安装证书更可靠(分离安装和reload步骤)
- Certbot依赖检测更完善(检测并修复依赖冲突)
- 错误处理更友好(提示用户尝试其他方案)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-13 15:09:25 +08:00
WanWanYunandClaude ab577931c3 fix: 修改acme.sh证书申请方式为webroot模式
问题:
- 使用--nginx参数时,acme.sh报错"Cannot find config file for domain"
- nginx模式需要acme.sh能够识别nginx配置文件格式

解决方案:
- 改用--webroot模式,直接使用前端目录作为验证根目录
- webroot模式更可靠,不依赖nginx配置文件解析
- 应用到所有acme.sh方案:Let's Encrypt、ZeroSSL、Buypass

参数变化:
- 旧:--nginx
- 新:--webroot "${PROJECT_DIR}/frontend"

优点:
1. 不需要解析nginx配置文件
2. 直接利用已经配置好的HTTP服务器
3. 兼容性更好,成功率更高

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-13 15:00:04 +08:00
WanWanYunandClaude 410b85f9e1 fix: 彻底修复acme.sh安装失败问题
问题描述:
- acme.sh安装后,~/.acme.sh目录被创建但主脚本文件不存在
- 导致后续证书申请和安装失败,提示"主脚本文件不存在"

修复内容:
1. 改用官方推荐的curl管道安装方式(curl https://get.acme.sh | sh)
2. 增加不完整安装的检测和清理逻辑
3. 检查条件从仅检查目录改为同时检查目录和文件
4. 增强错误诊断信息,显示目录内容帮助排查
5. 应用到所有acme.sh方案:Let's Encrypt、ZeroSSL、Buypass

技术改进:
- 从下载到临时文件改为直接curl管道执行(更可靠)
- 添加email参数避免交互式输入
- 完善失败提示,引导用户选择其他方案

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-13 14:45:14 +08:00
WanWanYunandClaude 4bf0cd4edf fix: 修复SSL证书部署时的文件检查问题
修复内容:
1. 修复HTTPS重定向配置 - 根据端口生成正确的重定向URL
2. 增强acme.sh文件存在性检查 - 在申请和安装证书前都检查文件
3. 应用到所有acme.sh方案 - Let's Encrypt、ZeroSSL、Buypass

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-13 14:36:57 +08:00
WanWanYunandClaude 06056563b2 修复: 选项顺序调整 + acme.sh切换到GitHub官方源
问题:
1. 主界面菜单顺序:用户反馈[5]在[4]上面,需要对调
2. SSL选项顺序:阿里云和Buypass编号需要对调
3. acme.sh安装:Gitee镜像不稳定,导致安装失败

修复:
1. 主界面菜单
   - [4] SSL证书管理 (原[5])
   - [5] 卸载玩玩云 (原[4])

2. SSL证书选项(两处:choose_ssl_method + ssl_choose_method)
   - [4] 阿里云免费证书 (原[5])
   - [5] acme.sh + Buypass (原[4])

3. deploy_ssl() 函数
   - case 4: deploy_aliyun_ssl
   - case 5: deploy_acme_buypass

4. ssl_fallback() 函数
   - 备选方案显示和case分支对应调整

5. acme.sh安装源切换
   - deploy_acme_letsencrypt: 移除Gitee镜像检测,统一使用GitHub
   - deploy_acme_zerossl: 移除Gitee镜像检测,统一使用GitHub
   - deploy_acme_buypass: 移除Gitee镜像检测,统一使用GitHub
   - 提示:国内用户会较慢,但更稳定可靠

影响:
- 菜单顺序更合理(危险操作放最后)
- SSL选项分类更清晰
- acme.sh安装成功率大幅提升(GitHub官方源稳定性更好)

注意:
- 其他依赖(npm、系统包)仍使用阿里云镜像加速
- 仅acme.sh使用GitHub官方源

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-13 14:09:29 +08:00
WanWanYunandClaude 41f823db54 修复: 真正移除acme.sh安装脚本的--install参数
问题:
- v4.0.11修复了安装脚本URL,但忘记移除--install参数
- 官方安装脚本https://get.acme.sh应该不带参数直接运行
- --install是给安装后的acme.sh主程序用的,不是给安装脚本用的
- 导致安装脚本执行后,目录创建但文件未正确安装

修复:
- deploy_acme_letsencrypt: 移除 --install 参数
- deploy_acme_zerossl: 移除 --install 参数
- deploy_acme_buypass: 移除 --install 参数
- 统一使用: bash "$TEMP_INSTALL_SCRIPT" (不带参数)

影响:
- 修复acme.sh安装后目录为空的根本问题
- 确保所有acme.sh方案(Let's Encrypt/ZeroSSL/Buypass)正常工作

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-13 14:02:10 +08:00
WanWanYun 503a760b17 feat: 添加独立的SSL证书管理模式
新增功能:
- 新增 --ssl/--cert/ssl 命令行参数
- 交互式菜单添加 [5] SSL证书管理 选项
- 可单独配置/更换/续签SSL证书,无需重新部署整个项目

使用场景:
1. 初次部署时选择了"暂不配置HTTPS",现在想添加证书
2. 现有证书即将过期,需要续签(虽然有自动续期,但也可手动)
3. 想更换SSL方案(例如从Certbot换到acme.sh)
4. 想更换域名的SSL证书
5. 想移除HTTPS配置,改回HTTP模式

核心功能:
- ssl_main() - SSL证书管理主流程
- ssl_check_project() - 检查项目是否已安装
- ssl_load_existing_config() - 读取现有配置(域名、端口等)
- ssl_configure_domain() - 配置或更改域名
- ssl_choose_method() - 选择SSL方案(1-8,含移除HTTPS)
- ssl_deploy_certificate() - 部署证书
- ssl_update_nginx_config() - 更新Nginx配置
- ssl_reload_services() - 重载Nginx和后端服务
- ssl_verify_deployment() - 验证部署结果
- print_ssl_completion() - 显示完成信息和使用提示

使用方法:
# 方法1: 命令行参数
bash install.sh --ssl

# 方法2: 交互式菜单
bash install.sh
> 选择 [5] SSL证书管理

# 方法3: 别名
bash install.sh --cert

工作流程:
1. 检查项目是否已安装
2. 读取现有Nginx配置(HTTP/HTTPS端口、域名)
3. 确认或修改域名配置
4. 选择SSL证书方案(支持所有8种方案)
5. 先配置HTTP模式(Let's Encrypt验证需要)
6. 申请/部署SSL证书
7. 更新Nginx为HTTPS配置(或保持HTTP,如果选择8)
8. 重载Nginx和后端服务
9. 验证部署并显示证书信息

特殊选项:
- [8] 移除HTTPS配置 - 将HTTPS站点改回HTTP模式
- [0] 取消操作 - 不做任何修改

技术特点:
- 智能读取现有配置,自动填充域名和端口
- 支持宝塔面板和标准Nginx环境
- 兼容所有SSL方案(Certbot、acme.sh系列、手动证书)
- 自动处理证书路径和Nginx配置
- 显示证书有效期信息

影响范围:
- install.sh 新增 ~450 行代码
- 添加 9 个新函数
- 更新交互式菜单和命令行帮助
2025-11-13 13:56:06 +08:00
WanWanYun 30de3327e8 fix: 修复acme.sh安装失败 - 使用正确的安装脚本URL
问题描述:
- acme.sh安装后目录存在但为空(无acme.sh主脚本文件)
- 用户截图显示:~/.acme.sh目录创建但文件未复制
- 导致所有acme.sh方案(Let's Encrypt/ZeroSSL/Buypass)全部失败

根本原因:
- 错误的Gitee镜像URL:
   https://gitee.com/neilpang/acme.sh/raw/master/acme.sh (主程序文件)
   https://get.acme.sh (官方安装脚本)

- 直接下载主程序文件acme.sh,然后执行 bash acme.sh --install
- 但acme.sh主程序不是安装器,无法自行安装

正确安装流程:
- 官方安装脚本 https://get.acme.sh 会自动:
  1. 创建 ~/.acme.sh 目录
  2. 下载所有必需文件(acme.sh + 依赖)
  3. 设置权限和环境变量

修复方案:
- 统一使用官方安装脚本URL: https://get.acme.sh
- 通过环境变量 ACME_USE_GITEE=1 控制国内镜像加速
- 官方安装脚本会根据此环境变量自动选择Gitee镜像

修复内容:
1. deploy_acme_letsencrypt() - 修复Let's Encrypt方案
2. deploy_acme_zerossl() - 修复ZeroSSL方案
3. deploy_acme_buypass() - 修复Buypass方案

技术细节:
- 国内网络:export ACME_USE_GITEE=1 + curl https://get.acme.sh
- 海外网络:直接 curl https://get.acme.sh
- 安装脚本自动识别环境变量并选择最快镜像

影响范围:
- install.sh:1344-1428 (Let's Encrypt)
- install.sh:1508-1574 (ZeroSSL)
- install.sh:1648-1713 (Buypass)

预期效果:
-  acme.sh成功安装并包含所有必需文件
-  国内网络自动使用Gitee镜像加速
-  证书申请流程顺利进行
2025-11-13 12:58:03 +08:00
WanWanYun ff8ba91b8d fix: 修复后端端口更换时脚本异常退出的问题
问题描述:
- 部署时后端端口被占用,用户更换其他端口后脚本异常退出
- 根因: health_check()函数中netstat命令失败时触发set -e导致脚本退出

修复内容:
1. 端口检查添加错误抑制 (2>/dev/null)
2. 添加ss命令作为netstat的fallback
3. Nginx状态检查直接通过目录检测BT Panel环境
4. 修复变量作用域问题 (IS_BT_PANEL仅在局部函数中定义)

技术细节:
- netstat -tunlp 2>/dev/null || ss -tunlp 2>/dev/null
- 使用 [[ -d /www/server/nginx ]] 直接检测宝塔面板
- 宝塔环境使用pgrep检查nginx进程
- 标准环境使用systemctl is-active检查

影响范围:
- health_check() 函数 (install.sh:2588-2612)
- 提升脚本在端口冲突场景下的健壮性
- 兼容宝塔面板和标准Nginx环境
2025-11-13 12:16:14 +08:00
WanWanYun f7034adb9f fix: 修复Nginx配置,恢复index.html作为主页
- 将Nginx index指令从 app.html 改为 index.html
- 将try_files回退路径从 /app.html 改为 /index.html
- 恢复产品展示主页,而不是直接跳转到登录页
- 影响HTTP和HTTPS配置的所有3处location块
2025-11-13 10:08:12 +08:00
WanWanYun 58d2038ed3 fix: 全面改进SSL证书部署逻辑
**Certbot改进(方案1)**:
- Ubuntu/Debian优先使用snap安装(官方推荐)
- 避免Python依赖冲突(urllib3.contrib.appengine问题)
- snap失败自动降级到apt安装
- 添加安装验证逻辑

**acme.sh改进(方案2-4)**:
- 改用两步安装:先下载到临时文件,验证后执行
- 检查下载文件大小和内容完整性
- 验证脚本内容(检测acme.sh关键词)
- 增加等待时间:2秒→5秒
- 统一三个方案(Let's Encrypt/ZeroSSL/Buypass)

**诊断增强**:
- 添加安装位置查找功能
- 改进错误提示信息
- 提供更详细的排查步骤

**兼容性**:
- 支持Ubuntu/Debian (apt)
- 支持CentOS/RHEL (yum/dnf)
- 支持openSUSE (zypper)
- 兼容宝塔面板环境
2025-11-13 09:57:28 +08:00
WanWanYun 72ec10ef4e fix: configure_nginx_final()函数添加宝塔面板Nginx重载支持
- 修复选择"暂不配置HTTPS"时Nginx重载失败的问题
- 添加与configure_nginx_http_first()相同的三重保障机制
- 支持宝塔面板环境的nginx命令直接操作
2025-11-13 09:50:39 +08:00
WanWanYun c1b8e7b929 fix: 优化宝塔面板Nginx重载逻辑,添加多种重启方式
- 添加BT Panel专用的Nginx重载流程
- 尝试多种方法:BT CLI工具、直接nginx命令、systemctl备用
- 改用进程检查(pgrep)验证Nginx状态,不依赖systemctl
- 修复BT Panel环境下nginx启动失败的问题
2025-11-13 09:39:47 +08:00
WanWanYun 0f53d0638c fix: 添加宝塔面板(BT Panel)Nginx配置支持
问题:
- 用户使用宝塔面板,Nginx配置路径为 /www/server/nginx/
- 标准路径 /etc/nginx/ 不适用于宝塔
- systemctl restart nginx 导致宝塔Nginx启动失败

宝塔特征:
- 配置文件:/www/server/nginx/conf/nginx.conf
- 虚拟主机:/www/server/panel/vhost/nginx/*.conf
- 需要使用reload而不是restart

修复:
1. 添加宝塔面板检测逻辑(检查 /www/server/nginx 目录)
2. 使用宝塔专用配置目录:/www/server/panel/vhost/nginx/
3. 宝塔环境使用reload,避免影响其他站点
4. 配置文件优先级:
   - 宝塔面板 > Debian/Ubuntu > CentOS/RHEL
5. 所有三个Nginx配置函数都已更新

修复的函数:
- configure_nginx_http_first() - 检测宝塔并使用专用目录
- configure_nginx_http() - 同上
- configure_nginx_https() - 同上

预期效果:
- 宝塔用户:配置写入 /www/server/panel/vhost/nginx/wanwanyun.conf
- 宝塔用户:使用 systemctl reload nginx
- 标准Nginx:行为不变

相关错误:
Job for nginx.service failed because the control process exited with error code
2025-11-13 09:32:20 +08:00
WanWanYun 66f9a30c5c fix: 修复Nginx配置目录兼容性,确保sites-available目录存在
问题:
- Ubuntu 22.04系统在configure_nginx_http_first()时报错
- 错误:/etc/nginx/sites-available/wanwanyun.conf: No such file or directory
- 原因:部分Ubuntu/Debian系统Nginx安装后未自动创建sites-available目录

修复:
1. 在所有Nginx配置函数中添加目录检测和创建逻辑
2. 使用mkdir -p确保目录存在后再写入配置文件
3. 兼容两种Nginx配置结构:
   - Ubuntu/Debian: sites-available + sites-enabled (软链接)
   - CentOS/RHEL: conf.d (直接加载.conf文件)
4. 根据PKG_MANAGER变量判断系统类型(更可靠)

修复的函数:
- configure_nginx_http_first() - 两阶段部署的第一步
- configure_nginx_http() - HTTP模式配置
- configure_nginx_https() - HTTPS模式配置

预期效果:
- Ubuntu/Debian系统:自动创建sites-available和sites-enabled目录
- CentOS/RHEL系统:使用conf.d目录
- 不再因为目录不存在而部署失败

相关错误:
line 1964: /etc/nginx/sites-available/wanwanyun.conf: No such file or directory
2025-11-13 09:27:01 +08:00
WanWanYun bb073232c4 fix: 增强acme.sh安装验证,立即检查目录是否创建
问题:
- 用户反馈方法2-4(acme.sh系列)显示"安装目录不存在"
- 安装命令返回成功(exit 0)但目录未创建
- 导致验证阶段报错但无法诊断原因

原因分析:
- 安装命令可能显示帮助文本而非真正安装
- 仅依赖exit code无法判断是否真正安装成功
- 缺少安装后的立即验证

改进:
1. 捕获安装命令的退出码(不再使用if判断)
2. 安装后立即检查目录和文件是否创建
3. 验证条件:exit code = 0 AND 目录存在 AND 文件存在
4. 失败时显示详细诊断信息:
   - 安装命令退出码
   - 目录是否存在
   - 文件是否存在
   - HOME环境变量
   - 当前用户
5. 统一三个acme.sh函数的验证逻辑

预期效果:
- 如果安装真的失败,会显示详细诊断信息
- 用户和开发者可以根据诊断信息判断具体问题
- 不再有"显示成功但实际失败"的情况

影响函数:
- deploy_acme_letsencrypt()
- deploy_acme_zerossl()
- deploy_acme_buypass()

相关提交:
- 18512d9 (增强acme.sh验证逻辑)
- 4a73a8c (Gitee镜像加速)
2025-11-13 08:53:17 +08:00
WanWanYun 565bf7dffc fix: 修改Certbot为webroot模式,配合两阶段Nginx部署
问题:
- Certbot使用--nginx插件时需要已存在的server block
- 原执行顺序在Nginx配置前就部署SSL,导致找不到server block

改进:
1. 改用certonly --webroot模式(不自动修改Nginx配置)
2. 使用项目frontend目录作为webroot进行域名验证
3. 手动创建证书软链接到/etc/nginx/ssl/(与其他方法统一)
4. 配合新的两阶段Nginx部署流程:
   - 阶段1: configure_nginx_http_first() 先创建HTTP server block
   - 阶段2: deploy_ssl() 可以通过HTTP验证域名
   - 阶段3: configure_nginx_final() 根据SSL结果配置HTTPS

修复错误:
"Could not automatically find a matching server block for [domain]"

相关提交:
- 7c4e1ed (重构Nginx配置为两阶段部署)
- 18512d9 (增强acme.sh验证)
- 4a73a8c (Gitee镜像加速)
2025-11-13 08:51:13 +08:00
WanWanYun 18512d92ed fix: 增强acme.sh安装验证逻辑,添加详细诊断信息
问题:
- acme.sh安装显示成功,但文件验证立即失败
- 无法判断具体原因(路径/权限/时序问题)

改进:
1. 添加2秒等待,确保文件系统同步
2. 分步骤验证:目录 → 文件 → 权限 → 运行
3. 失败时显示目录内容,方便诊断
4. 自动修复权限问题(chmod +x)
5. 测试脚本实际可运行性(--version)

影响范围:
- deploy_acme_letsencrypt()
- deploy_acme_zerossl()
- deploy_acme_buypass()

相关提交:
- e915d5e (添加基础错误检查)
- 4a73a8c (Gitee镜像加速)
- a7aca93 (智能SSL fallback)
2025-11-13 01:51:22 +08:00
WanWanYunandClaude a7aca93355 feat: ssl_fallback智能排除已失败的方案
问题描述:
- 用户选择方案2失败后,fallback还推荐方案2
- 用户再次选择方案2,还是会失败
- 浪费时间,用户体验差

修复方案:
- ssl_fallback函数接收失败的方案编号作为参数
- 动态生成可用选项,排除已失败的方案
- 显示提示:方案X已失败,已从列表中移除
- 如果备选方案再次失败,递归调用fallback并排除

改进内容:
1. ssl_fallback($failed_method) - 接收方案编号
2. 动态显示可用选项(排除失败方案)
3. 输入验证:只接受可用选项
4. 递归调用:如果备选方案也失败,继续排除

方案编号映射:
- 1: Certbot
- 2: acme.sh + Let's Encrypt
- 3: acme.sh + ZeroSSL
- 4: acme.sh + Buypass
- 5: 阿里云(未实现)
- 6: 腾讯云(未实现)
- 8: 不配置HTTPS

用户体验改进:
- 避免重复尝试失败的方案
- 清晰提示哪个方案已失败
- 自动缩小选择范围
- 节省用户时间

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-13 01:46:05 +08:00
WanWanYunandClaude 4a73a8c348 fix: 修复Gitee镜像加速仍从GitHub下载的问题
问题描述:
- 虽然显示"使用Gitee镜像加速"
- 但acme.sh安装脚本内部仍从GitHub下载tar.gz包
- 导致国内网络安装失败

根本原因:
- 使用了 --install-online 参数
- acme.sh脚本会在线下载master.tar.gz
- 默认还是从GitHub下载

修复方案:
- 使用acme.sh官方推荐的方法
- 设置环境变量 ACME_USE_GITEE=1
- 让acme.sh内部也使用Gitee源
- 移除 --install-online 参数

官方文档:
https://github.com/acmesh-official/acme.sh/wiki/Install-in-China

修复代码:
# 国内网络
export ACME_USE_GITEE=1
curl https://gitee.com/neilpang/acme.sh/raw/master/acme.sh | sh

修复函数:
- deploy_acme_letsencrypt
- deploy_acme_zerossl
- deploy_acme_buypass

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-13 01:41:14 +08:00
WanWanYunandClaude e915d5e4db fix: 修复acme.sh系列SSL证书申请失败误报成功的问题
问题描述:
- acme.sh安装失败(GitHub连接超时)但显示"成功"
- 证书申请失败但显示"成功"
- 导致Nginx配置找不到证书文件而失败退出

修复内容:
1. 所有acme.sh函数添加返回码检查
2. 安装失败时正确返回失败状态
3. 证书申请失败时正确返回失败状态
4. 证书安装失败时正确返回失败状态

新增功能:
- 检测网络环境(海外/中国大陆)
- 国内网络自动使用Gitee镜像加速
- 详细的步骤提示(安装/申请/部署)
- 失败时显示常见原因

修复函数:
- deploy_acme_letsencrypt: 完整重写,添加所有检查
- deploy_acme_zerossl: 添加返回码检查和镜像支持
- deploy_acme_buypass: 添加返回码检查和镜像支持

网络优化:
- 海外: 使用官方源 https://get.acme.sh
- 国内: 使用Gitee镜像 https://gitee.com/neilpang/acme.sh

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-13 01:36:59 +08:00
WanWanYunandClaude 417464c639 fix: 修复SSL证书申请失败后仍显示成功的问题
问题描述:
- Certbot申请证书失败后,脚本误报为成功
- 导致后续Nginx配置时找不到证书文件而失败退出

修复内容:
- 检查certbot命令的返回码,正确判断成败
- 失败时显示常见失败原因
- 通过ssl_fallback函数提供备选方案
- 用户可选择其他SSL方案或暂不配置HTTPS

改进逻辑:
1. certbot执行成功 → 配置HTTPS
2. certbot执行失败 → 调用ssl_fallback
3. ssl_fallback提供选项:
   - 尝试其他SSL方案(acme.sh等)
   - 暂不配置HTTPS(使用HTTP模式)
4. SSL_METHOD=8时正确使用HTTP配置

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-13 01:22:36 +08:00
WanWanYunandClaude 59a693ff15 fix: 修复智能端口检测在set -e模式下导致脚本退出的问题
问题描述:
- check_port_status函数返回非零值导致脚本在set -e模式下退出
- 使用grep -oP在某些Debian系统上不兼容

修复内容:
- 修改check_port_status始终返回0,避免触发set -e退出
- 将grep -oP替换为sed命令,提高兼容性
- 通过echo返回状态字符串而非返回码

测试场景:
- Debian 12系统验证通过
- 端口检测功能正常工作

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-13 01:12:13 +08:00
WanWanYunandClaude 20d23509e7 feat: 添加智能端口检测和Nginx虚拟主机支持 (v4.0)
新增功能:
- 智能识别占用端口的进程(Nginx/Apache/其他)
- 支持Nginx虚拟主机模式,多网站共用80/443端口
- 根据不同进程提供针对性解决方案
- 优化用户交互体验,提供清晰的选项说明

改进内容:
- 新增check_port_status()函数识别进程类型
- 改进configure_ports()函数支持虚拟主机选择
- 添加SHARE_NGINX标志跟踪部署模式
- 443端口智能继承80端口的选择

技术要点:
- Nginx占用端口时提供共用选项(推荐)
- Apache占用时提示冲突并给出解决方案
- 其他进程占用时引导用户更换端口
- 完整保留v3.0的CORS双重来源支持

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-13 01:07:22 +08:00
WanWanYunandClaude cfcbc22ae7 修复: 使用临时状态变量兼容SFTP配置显示逻辑
问题描述:
- 用户希望本地存储模式时隐藏SFTP配置区域
- 但点击"切换到SFTP"时需要能看到SFTP配置表单进行填写

解决方案:
1. 添加forceSftpConfigVisible状态变量用于临时强制显示
2. 修改HTML v-if条件,增加forceSftpConfigVisible的判断
3. 在switchStorage中设置forceSftpConfigVisible为true
4. 在updateFtpConfig成功后重置为false
5. 在switchView切换视图时自动重置

效果:
- 本地存储模式:SFTP配置默认隐藏
- 点击切换到SFTP:临时显示SFTP配置区域并滚动到该区域
- 配置成功:自动切换到SFTP模式,标志自动重置
- 切换视图:标志自动重置

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-12 23:31:26 +08:00
WanWanYunandClaude 1c58e498c5 修复: 解决切换到SFTP配置页面无响应的根本问题
问题分析:
1. SFTP配置区域的v-if条件包含了storageType检查
2. 当用户为local存储时,SFTP配置区域被隐藏
3. 即使跳转到settings页面,用户也看不到SFTP配置表单

修复内容:
1. 移除SFTP配置区域v-if中的storageType检查
2. 只要用户权限允许SFTP,配置区域就始终可见
3. 添加id属性,方便定位和滚动
4. 在switchStorage中添加平滑滚动到SFTP配置区域的逻辑
5. 使用$nextTick确保DOM更新后再滚动

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-12 23:20:06 +08:00
WanWanYunandClaude 74f25ce3ed 修复: 解决切换到SFTP设置页面无响应的问题
- 问题:当用户已在settings页面时,switchView方法会检测到重复而直接return
- 修复:直接设置currentView并手动调用loadFtpConfig()
- 确保无论用户在哪个页面,点击确认后都能正确跳转到设置页面

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-12 23:10:23 +08:00
WanWanYunandClaude fd52594b83 修复: 切换到SFTP设置页面时使用switchView方法
- 修正switchStorage方法中跳转设置页面的逻辑
- 从直接修改currentView改为调用switchView方法
- 确保视图切换时正确触发数据加载(如SFTP配置表单)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-12 22:59:29 +08:00
WanWanYunandClaude a791569b17 修复: 优化存储切换逻辑,解决SFTP配置和权限切换问题
1. 登录时智能修正存储类型:
   - 当用户为SFTP模式但未配置SFTP时,如果有本地存储权限,自动切换到本地存储
   - 避免管理员更改用户权限后,用户登录时出现"加载文件失败"错误

2. SFTP配置后自动切换存储模式:
   - 用户成功配置SFTP后,自动切换到SFTP存储模式
   - 无需用户手动再次切换,提升用户体验

3. 改进存储切换提示信息:
   - 当用户尝试切换到未配置的SFTP时,显示更友好的提示
   - 明确告知用户配置完成后将自动切换到SFTP存储

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-12 22:50:27 +08:00
WanWanYun e5ba17329c 功能: 添加管理员上传工具检测和上传功能
- 后端: 添加 GET /api/admin/check-upload-tool 检测工具是否存在
- 后端: 添加 POST /api/admin/upload-tool 允许管理员手动上传exe
- 前端: 管理员界面新增上传工具管理卡片
- 前端: 支持检测工具状态、显示文件信息、手动上传
- 验证: 文件必须是.exe格式且大小>20MB
2025-11-12 20:45:17 +08:00
WanWanYunandClaude 136d45dee7 优化: 分享所有文件时支持点击文件图标放大查看,并可返回列表
功能描述:
- 在分享所有文件(目录分享)时,点击文件图标可以放大查看
- 显示效果与分享单个文件时相同(居中大图标显示)
- 左上角显示"返回列表"按钮,点击可返回文件列表
- 单个文件分享时不显示返回按钮(避免混淆)

实现内容:
1. 添加状态管理
   - viewingFile: 当前正在查看的文件(null表示在列表视图)

2. 新增方法
   - handleFileClick(file): 处理文件点击
     * 图片/视频/音频 → 打开媒体预览(保持原有行为)
     * 其他文件 → 显示详情页面
   - viewFileDetail(file): 设置viewingFile显示详情
   - backToList(): 清除viewingFile返回列表

3. 修改HTML模板
   - 标题添加返回按钮(条件:viewingFile存在且不是单文件分享)
   - 单文件显示条件:viewingFile || files.length === 1
   - 网格/列表视图条件:添加 !viewingFile 限制
   - 单文件显示内容:使用 viewingFile || files[0]

4. 防止bug设计
   - shareInfo.share_type !== 'file' 确保单文件分享不显示返回按钮
   - handleFileClick 区分媒体文件和普通文件
   - viewingFile 为null时正常显示文件列表

用户体验提升:
 点击文件图标即可放大查看详情
 查看体验与单文件分享一致
 返回按钮清晰明了
 媒体文件仍然打开预览
 单文件分享不显示返回按钮(避免混淆)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-12 18:24:29 +08:00
WanWanYunandClaude 1e19b41f48 优化: 切换视图时自动刷新数据,解决切换存储方式后需要手动刷新的问题
问题描述:
- 用户在设置页面切换存储方式(本地 ↔ SFTP)
- 点击导航栏回到"我的文件"页面
- 文件列表不会自动刷新,显示的还是旧存储方式的文件
- 需要手动刷新浏览器才能看到新存储方式的文件

解决方案:
1. 新增 switchView(view) 方法统一管理视图切换
   - 切换到 files 视图:自动加载文件列表
   - 切换到 shares 视图:自动加载分享列表
   - 切换到 admin 视图:自动加载用户列表和存储统计
   - 切换到 settings 视图:无需加载数据
   - 防止重复切换:如果已在当前视图则跳过

2. 修改导航栏点击事件
   - 从 @click="currentView = 'xxx'"
   - 改为 @click="switchView('xxx')"
   - 应用到所有4个导航按钮

改进效果:
 用户切换存储方式后,点击"我的文件"立即看到新数据
 所有视图切换都会自动刷新对应数据
 提升用户体验,无需手动刷新页面

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-12 15:49:02 +08:00
WanWanYunandClaude c272724c5c 修复: 防止管理员封禁自己的账号
- 在封禁用户API中添加自我封禁检查
- 当管理员尝试封禁自己时返回400错误
- 错误消息: "不能封禁自己的账号"
- 解封自己不受限制(虽然被封禁后无法登录后台操作)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-12 11:38:02 +08:00
WanWanYunandClaude 28beee695a 修复: 添加自动同步用户配置功能,解决管理员修改权限后用户不自动更新的问题
- 添加profileCheckInterval属性用于存储定时器ID
- 修改loadUserProfile()函数,检测存储配置变更并通知用户
- 新增startProfileSync()方法,每30秒自动检查配置更新
- 新增stopProfileSync()方法,停止定期检查
- 在登录和页面加载时启动定期检查
- 在登出时停止定期检查
- 当管理员修改用户存储权限或类型时,用户会收到Toast通知并自动刷新文件列表

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-12 09:25:17 +08:00
WanWanYun 175087c894 修复: SFTP存储切换问题 & 添加开发者工具保护
- 修复SFTP按钮被错误禁用的问题
- 用户选择本地存储后可以正常切换回SFTP
- 切换到SFTP时检查是否已配置,未配置则跳转到设置页面
- 添加右键菜单禁用
- 添加F12和开发者工具快捷键禁用
- 添加开发者工具打开检测
- 生产环境禁用console输出
2025-11-12 09:13:12 +08:00
WanWanYun cb05fa9516 功能: 添加Linux上传工具打包脚本
- 新增upload-tool/build.sh支持Linux环境打包
- 支持自动检测操作系统并打包对应版本
- 为部署脚本集成自动打包功能做准备
2025-11-12 00:37:28 +08:00
WanWanYun 2dc6323554 修复: 移除API地址硬编码,统一使用nginx代理
- 修复frontend/app.js中的localhost:40001硬编码
- 修复frontend/share.html中的localhost:40001硬编码
- 所有API请求现在统一通过nginx代理访问
- 支持任意端口号部署,无需修改前端代码
2025-11-11 23:54:40 +08:00
WanWanYun 016879885c 修复: 移动端UI和部署配置优化
1. 移动端文件列表图片图标大小修复
   - 添加响应式CSS规则,图片缩略图自动适配屏幕尺寸
   - 移除内联样式,统一使用CSS类管理
   - 移动端(768px): 48px x 48px
   - 小屏幕(480px): 40px x 40px

2. 设置页面存储切换UI优化
   - 用户选择本地存储时自动隐藏SFTP配置表单
   - 用户选择SFTP时显示SFTP配置表单
   - 优化用户体验,避免混淆

3. install.sh自动配置PUBLIC_PORT
   - 部署时自动添加PUBLIC_PORT环境变量
   - 非标准端口部署时分享链接自动包含端口号
   - 解决IP模式部署分享链接无法访问的问题
2025-11-11 23:41:17 +08:00
WanWanYun 0c55b599ef 修复: 非标准端口部署时分享链接未携带端口号的问题
- 添加 generateShareUrl 辅助函数,智能处理端口号
- 支持通过 PUBLIC_PORT 环境变量配置nginx监听端口
- 更新 POST /api/share/create 使用新的URL生成方法
- 更新 GET /api/share/my 使用新的URL生成方法
- 修复IP模式部署时分享链接无法正常访问的问题
2025-11-11 23:25:05 +08:00
WanWanYun d604d8bc78 功能: 更新脚本增加数据库迁移逻辑
- 新增 update_migrate_database() 函数
- 自动检测旧的100MB上传限制并升级到10GB
- 在更新流程中自动执行数据库迁移
- 确保使用更新脚本时数据库配置也会同步更新
- 修复v1.2.5更新后仍保留旧配置的问题

版本: v1.2.6
2025-11-11 02:09:58 +08:00
WanWanYun b10048ec0a 文档: 添加v1.2.5版本更新说明 2025-11-11 01:57:42 +08:00
WanWanYun f097dfd179 修复: 将默认上传限制从100MB提升到10GB
- database.js: 修改数据库初始化默认值为10GB (10737418240字节)
- server.js: 修改两处fallback默认值为10GB
- 确保新部署的系统默认支持10GB单文件上传
- 解决用户报告的100MB上传限制问题

版本: v1.2.5
2025-11-11 01:57:06 +08:00
WanWanYun 8fa338c933 docs: 更新版本历史,添加v1.2.1-v1.2.4的更新说明 2025-11-11 01:51:10 +08:00
WanWanYun 77bb2f7bdc 修复: 管理员账号密码无法正确设置的问题
- 在 server.js 开头添加 require('dotenv').config()
- 确保环境变量从 .env 文件正确加载
- 修复了安装时设置的管理员账号密码不生效的问题

版本: v1.2.4
2025-11-11 01:50:18 +08:00
WanWanYun b13ae7d0dd 工具: 添加数据恢复脚本
功能:
- 自动查找更新时的备份目录
- 显示备份内容和大小
- 恢复数据库、用户文件、配置文件
- 如无备份,提供重新初始化选项
- 自动停止和重启服务

使用场景:
- 更新脚本导致数据丢失时恢复
- 误删数据后恢复
- 从备份恢复系统

使用方法:
curl -fsSL https://gitee.com/yu-yon/vue-driven-cloud-storage/raw/master/restore-data.sh | sudo bash

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-11 01:08:19 +08:00
WanWanYun 27f130388a 🔥紧急修复: 更新脚本导致数据库丢失的严重Bug v1.2.3
问题描述:
- 更新时 cp -r 命令会覆盖整个 backend 目录
- 导致备份的 data、storage、.env 被新的空文件覆盖
- 用户数据、数据库、配置全部丢失

修复内容:
- 改为分别更新 frontend、upload-tool、backend
- 更新 backend 时逐个文件复制,排除 data/storage/.env/node_modules
- 添加数据完整性检测,自动从备份恢复丢失的文件
- 添加详细的恢复提示信息

安全增强:
- 不再使用 cp -r 整个目录覆盖
- 使用 for 循环逐个文件处理
- 每个重要文件都有检测和恢复机制

影响范围:
- install.sh: update_pull_latest_code() 函数

⚠️ 重要: 已使用旧版更新脚本的用户,数据可能丢失!

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-11 01:07:12 +08:00
WanWanYun d7ac491ced 工具: 添加Nginx上传限制快速修复脚本
功能:
- 自动查找Nginx配置文件
- 自动备份原配置
- 修改上传大小限制为10GB
- 修改超时时间为1小时
- 测试并重载Nginx配置
- 失败时自动回滚

使用方法:
curl -fsSL https://gitee.com/yu-yon/vue-driven-cloud-storage/raw/master/fix-nginx-upload-limit.sh | sudo bash

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-11 01:03:35 +08:00
WanWanYun dae4ec9cc5 优化: 提升上传大小限制到10GB并延长超时时间 v1.2.2
修改内容:
- client_max_body_size: 500M → 10G
- proxy_read_timeout: 300s → 3600s (1小时)
- proxy_send_timeout: 300s → 3600s (1小时)
- proxy_connect_timeout: 75s → 300s (5分钟)

适用场景:
- 支持上传大型视频文件
- 支持上传ISO镜像等大文件
- 提供更长的上传时间窗口

影响范围:
- install.sh: configure_nginx_http() 函数
- install.sh: configure_nginx_https() 函数

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-11 01:02:40 +08:00
WanWanYun 70e0d4ef04 修复: Nginx上传大小限制导致413错误 v1.2.1
问题描述:
- 上传大于6MB的文件时出现413错误
- Nginx默认client_max_body_size为1MB

修复内容:
- 添加 client_max_body_size 500M(支持500MB文件上传)
- 添加上传超时设置(proxy_read_timeout 300s)
- 添加发送超时设置(proxy_send_timeout 300s)
- 添加连接超时设置(proxy_connect_timeout 75s)
- 同时修复HTTP和HTTPS配置

影响范围:
- install.sh: configure_nginx_http() 函数
- install.sh: configure_nginx_https() 函数

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-11 01:00:51 +08:00
WanWanYun 2f44b98a53 新功能: 一键更新功能 v1.2.0
新增功能:
- 添加一键更新命令(--update 参数)
- 交互式菜单新增「更新/升级」选项
- 支持三种更新方式(curl/wget/本地脚本)

更新流程:
- 智能备份数据库和用户文件到临时目录
- 停止服务并拉取最新代码
- 保留重要文件(data/storage/.env)
- 自动更新后端依赖(npm install)
- 重启服务并进行健康检查
- 显示更新后的版本信息

安全保障:
- 更新前需用户确认
- 自动备份所有用户数据
- 保留配置文件和Nginx配置
- 更新失败时提供清晰的错误提示

文档更新:
- 一键部署命令.txt: 添加更新命令和v1.2.0说明
- INSTALL_GUIDE.md: 详细的更新指南和注意事项

版本: v1.2.0

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-11 00:57:34 +08:00
WanWanYun 3735a943ff 文档: 更新版本说明至 v1.1.6
- 添加 v1.1.6 更新说明(修复管理员账号密码设置无效问题)
- 完善 v1.1.4 和 v1.1.5 版本描述
- 标注严重级别问题修复

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-11 00:28:40 +08:00
WanWanYun 4e9a3a5d26 修复: 管理员账号密码从环境变量读取
问题描述:
- 安装时设置的管理员账号密码无效
- 始终使用硬编码的 admin/admin123

修复内容:
- createDefaultAdmin() 函数现在从环境变量读取
- 使用 process.env.ADMIN_USERNAME 和 ADMIN_PASSWORD
- 保留默认值作为后备方案

影响范围:
- backend/database.js: createDefaultAdmin() 函数 (lines 130-159)

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-11 00:27:54 +08:00
WanWanYun 2213547e3d v1.1.5 修复: 支持管道执行时的模式选择
问题修复:
- 修复 curl | bash 执行时无法显示交互选择的问题
- 添加终端检测 (使用 -t 0 和 /dev/tty 检测)
- 管道执行时显示友好提示并自动进入安装模式
- 提示用户下载脚本后运行以使用交互选择

改进说明:
- 交互式终端: 显示选择界面 [1] 安装 [2] 卸载
- 管道执行: 显示提示信息并默认安装
- 提供卸载命令说明

技术细节:
- 使用 [[ -t 0 ]] 检测标准输入是否是终端
- 使用 [[ -c /dev/tty ]] 检测 /dev/tty 可用性
- 两个条件任一满足即可使用交互模式
2025-11-11 00:16:25 +08:00
WanWanYun 94cff001d8 v1.1.5: 添加交互式安装/卸载模式选择
主要更新:
- 在脚本启动时添加交互式选择界面
- 用户可以选择: [1] 安装/部署 或 [2] 卸载
- 保留原有命令行参数方式 (--uninstall)
- 改进用户体验,更直观易用

功能说明:
- 运行脚本后首先显示选择界面
- 选择安装模式 -> 继续安装流程
- 选择卸载模式 -> 直接跳转到卸载流程
- 通过命令行参数依然可以直接指定模式

使用方式:
1. 交互式: bash install.sh (显示选择菜单)
2. 命令行: bash install.sh --uninstall (直接卸载)
2025-11-11 00:05:19 +08:00
WanWanYun 84d2feffa2 更新版本号至 v1.1.4 2025-11-10 23:57:39 +08:00
WanWanYun 49e0f53cce v1.1.4: 添加智能端口检测和自定义配置
主要更新:
- 自动检测端口占用(80, 443, 40001)
- 支持自定义HTTP/HTTPS/后端端口
- 端口冲突时智能提示并允许自定义
- 所有配置(Nginx、.env)自动使用自定义端口
- 完成提示中显示实际使用的端口
- 健康检查使用动态端口验证

功能特性:
- HTTP端口(默认80,可自定义如8080)
- HTTPS端口(默认443,可自定义如8443)
- 后端端口(默认40001,可自定义如40002)
- 使用netstat/ss检测端口占用
- 端口范围验证(1024-65535)
- 避免与现有项目冲突

更新内容:
- 全局变量: HTTP_PORT, HTTPS_PORT, BACKEND_PORT
- 新增: check_port_available() 检测端口
- 新增: configure_ports() 配置端口
- 修改: configure_nginx_http() 使用自定义端口
- 修改: configure_nginx_https() 使用自定义端口
- 修改: create_env_file() PORT使用BACKEND_PORT
- 修改: health_check() 检查自定义后端端口
- 修改: print_completion() 显示端口信息
- 新增: 一键部署命令.txt 到仓库
2025-11-10 23:57:16 +08:00
WanWanYun 4a38026c07 文档更新: 添加v1.1.3卸载功能详细说明
更新内容:
- INSTALL_GUIDE.md: 完善FAQ第6项卸载说明
- 添加一键卸载命令(3种方式)
- 详细说明卸载特性:双重确认、数据备份、完整清理
- 说明保留系统环境,仅删除项目文件
- 添加智能残留检查说明
2025-11-10 23:49:51 +08:00
WanWanYun 9966719afa v1.1.3: 集成卸载功能到主脚本
主要更新:
- 添加卸载模式: bash install.sh --uninstall
- 支持参数: --uninstall, -u, uninstall
- 双重确认机制防止误删
- 可选数据备份到 /root/wanwanyun-backup-*
- 完整清理: PM2进程、Nginx配置、SSL证书、项目目录
- 保留环境: Node.js、Nginx、PM2、编译工具
- 残留检查确保清理完整

使用方法:
- 安装: bash install.sh
- 卸载: bash install.sh --uninstall

功能特性:
- 智能备份询问
- 逐步状态显示
- 清理完成报告
- 环境保留列表
2025-11-10 23:48:32 +08:00
WanWanYun 8c7664a400 v1.1.2: 修复依赖安装问题
主要修复:
1. 降级 better-sqlite3: 12.4.1 → 11.8.1
   - 兼容 Node.js 18.x
   - 解决版本不匹配导致的安装失败

2. 添加编译工具依赖
   - APT: build-essential, python3
   - YUM/DNF: gcc-c++, make, python3
   - Zypper: gcc-c++, make, python3
   - 解决原生模块编译失败问题

问题分析:
- better-sqlite3@12+ 要求 Node.js 20+
- 编译原生模块需要 C++ 编译器和 Python
- 旧版本服务器可能缺少编译工具链

解决方案:
- 使用兼容 Node.js 18+ 的 better-sqlite3 版本
- 自动安装所有必需的编译工具
- 确保在所有支持的系统上都能正常编译
2025-11-10 23:35:33 +08:00
WanWanYun 1eb619a0b6 v1.1.1: 升级到 Node.js 20.x LTS
主要更新:
- 升级默认Node.js版本从18.x到20.x (LTS长期支持)
- 解决 NodeSource 弃用警告问题
- 更新所有Node.js版本检查逻辑使用变量而非硬编码
- 提高代码可维护性和未来兼容性

技术改进:
- NODE_VERSION: 18 → 20
- install_nodejs_apt/yum/dnf/zypper: 使用 $NODE_VERSION 变量检查
- 确保更长的官方支持周期(至2026年4月)

支持周期:
- Node.js 18.x: 支持到 2025-04-30
- Node.js 20.x: 支持到 2026-04-30 
2025-11-10 23:29:43 +08:00
WanWanYun 47f04f4cb9 v1.1.0: 新增多系统支持和统一包管理器
主要更新:
- 新增支持 Rocky Linux、AlmaLinux、Fedora、openSUSE
- 实现统一包管理器检测机制 (APT/YUM/DNF/Zypper)
- 优化系统识别逻辑,增加自动检测后备方案
- 完善阿里云镜像源配置,支持更多Linux发行版
- 重构所有系统相关代码,使用PKG_MANAGER变量统一管理
- 添加 install_nodejs_dnf/zypper 和 install_nginx_dnf/zypper 函数
- 更新 deploy_certbot 函数支持所有包管理器

技术改进:
- detect_os(): 增强系统检测,自动识别包管理器类型
- configure_aliyun_mirror(): 支持8种主流Linux发行版镜像配置
- install_dependencies(): 统一使用PKG_MANAGER进行依赖安装
- 消除所有OS特定case语句,提高代码可维护性

支持的系统:
- Ubuntu/Debian (APT)
- CentOS 7/8, RHEL 7/8/9 (YUM/DNF)
- Rocky Linux 8/9 (DNF)
- AlmaLinux 8/9 (DNF)
- Fedora 35+ (DNF)
- openSUSE Leap (Zypper)
2025-11-10 23:25:44 +08:00
WanWanYun 650b926a0b 修复: Debian系统阿里云镜像源配置错误
- 分离Ubuntu和Debian的源配置逻辑
- Debian使用正确的组件: main, contrib, non-free, non-free-firmware
- Debian安全源使用debian-security仓库
- Ubuntu继续使用: main, restricted, universe, multiverse
- 修复apt更新时的组件缺失警告
2025-11-10 23:13:13 +08:00
WanWanYun 20d852027f 修复v2: 改进stdin重定向方式
- 移除全局 exec < /dev/tty,避免管道执行中断
- 在每个read命令中单独指定 < /dev/tty
- 兼容 curl|bash 和 bash <(...) 两种执行方式
- 版本号 v1.0.2
2025-11-10 23:05:01 +08:00
WanWanYun 9f2ae24772 修复: 解决管道执行脚本时无法读取用户输入的问题
- 添加 exec < /dev/tty 重定向标准输入到终端
- 修复 curl|bash 执行时 read 命令失效的问题
- 版本号更新为 v1.0.1
2025-11-10 23:01:57 +08:00
WanWanYun c8b8026d43 添加一键部署使用指南 2025-11-10 22:56:57 +08:00
WanWanYun 4341e82c44 添加一键部署脚本
- 支持Ubuntu/Debian/CentOS系统自动检测
- 自动安装Node.js、Nginx、PM2等依赖
- 提供官方源和阿里云镜像源选择
- 支持域名/IP两种访问模式
- 6种SSL自动部署方案(Certbot、acme.sh等)
- 智能容错和重试机制
- 全程自动化部署,用户仅需选择和输入
2025-11-10 22:55:51 +08:00
WanWanYun 0f133962dc Initial commit - 玩玩云文件管理系统 v1.0.0
- 完整的前后端代码
- 支持本地存储和SFTP存储
- 文件分享功能
- 上传工具源代码
- 完整的部署文档
- Nginx配置模板

技术栈:
- 后端: Node.js + Express + SQLite
- 前端: Vue.js 3 + Axios
- 存储: 本地存储 / SFTP远程存储
2025-11-10 21:50:16 +08:00