{"release":{"tag":{"name":"v1.5.0","path":"/ncepu-bj/fast-https/tags/v1.5.0","tree_path":"/ncepu-bj/fast-https/tree/v1.5.0","message":"Fast-Https 1.5.0 (2026-11-06)\n\n自 1.4.0 起 46 个提交、409 个文件（+17348 / −44732，删除量主要来自移除 vendored acme.sh）。\n\n## 新增\n\n- ACME 自动签发：不需要外部脚本即可申请并续期受信任证书，配套 CA 降级链（Let's Encrypt → ZeroSSL）、staging、自签兜底\n- ACME 热重载：改 acme 段不再需要 stop + start，reload 按配置差异重建证书申请任务\n- site 命令组：site init（对已存在的站点即原地更新，只覆盖显式传入的字段）、site list、site show、site remove\n- acme 命令组：无子命令进入交互向导（以当前配置为默认值）、acme setup、acme show\n- config path：输出运行期实际使用的配置文件与目录绝对路径\n- version 命令；全部命令的帮助信息支持中英双语\n- 随包安装 logrotate 配置（copytruncate），日志不再无限增长\n- 打包：apt/yum/apk 仓库树生成脚本、deb/rpm/apk 容器实机验证脚本\n- 文档：feature / develop / help 三套体系，新增 AGENT.md 与项目架构图\n\n## 变更\n\n- 配置解析去掉 viper，改为自带 JSONC 解析，原子写下沉到 infra\n- 主配置拆为系统级配置 + conf.d 站点文件，config 包按职责拆分为五个文件\n- 发行版包改为 FHS 分离布局（/etc、/usr/share、/var/log、/run）\n- reload 发信号前先在本地校验配置，校验失败不动运行中的实例\n- ACME 向导以当前配置为默认值，摘要延后到答完题再生成\n\n## 修复\n\n- 打包脚本 CRLF 行尾导致「能装不能卸、报 prerm ENOENT」\n- 卸载后进程仍在跑、80/443 被占用：单元 cgroup 之外的残留进程按 pid 文件与 /proc 双路清理\n- http-01 端口告警漏算 conf.d 里的站点\n- ACME 配好却没有任何域名可申请时不给任何提示\n- site 改写文件时吞掉未建模字段\n- logrotate 配置 CRLF 行尾\n\n## 移除\n\n- install / uninstall / check / dev / completion 命令\n- 顶层 shell/ 目录（vendored acme.sh）\n\n## 破坏性变更\n\n- 安装与卸载交给包管理器，不再提供对应子命令\n- 包布局迁移到 /etc/fast-https；postinstall 会复制旧的 config/，不覆盖现场文件\n\n## ACME 证书挑战\n\n- http-01：走 early-request 钩子，在路由匹配之前应答 /.well-known/acme-challenge/，不受站点根目录与 location 规则影响\n- tls-alpn-01：只在启用时把 acme-tls/1 放进 NextProtos，未使用 ACME 的部署握手表保持不变；reload 开关该方式时重建对应 ssl 端口的 tls.Config\n- 申请期间继续使用自签证书，首次握手不阻塞；申请失败按 fallback_self_signed 回落\n- 只有 listen 含 ssl 的站点进入申请列表，非公网域名跳过并在日志与 acme show 中说明原因\n- reload 只在差异处重建管理器：enabled / email / staging / storage / challenge / cas / renew_before_days 与域名集合；配置未变时不打断 certmagic 的续期调度，新配置构造失败时保留旧管理器继续续期\n\n## 质量\n\ngo build / go vet / go test -race ./... 全绿；架构守卫、三个 E2E（reload / proxy / h2）；docgen 与 manpage 生成物纳入一致性测试。","commit":{"id":"a7831c92b2414eefbca6a4bbdf7e9f421640f945","short_id":"a7831c9","title":"chore(release): 快照版本号改为 1.5.0，产物不再带 next 后缀","title_markdown":"chore(release): 快照版本号改为 1.5.0，产物不再带 next 后缀","description":"\n1.5.0 已发布，dist 里的文件名要与发行版一致，否则本地快照和线上包同名不同内容。\n同时同步 package.ps1 注释与发布文档，并注明下一轮开发时改成 1.5.1-next。","description_markdown":"1.5.0 已发布，dist 里的文件名要与发行版一致，否则本地快照和线上包同名不同内容。\n同时同步 package.ps1 注释与发布文档，并注明下一轮开发时改成 1.5.1-next。","message":"chore(release): 快照版本号改为 1.5.0，产物不再带 next 后缀\n\n1.5.0 已发布，dist 里的文件名要与发行版一致，否则本地快照和线上包同名不同内容。\n同时同步 package.ps1 注释与发布文档，并注明下一轮开发时改成 1.5.1-next。\n","message_markdown":"chore(release): 快照版本号改为 1.5.0，产物不再带 next 后缀\n1.5.0 已发布，dist 里的文件名要与发行版一致，否则本地快照和线上包同名不同内容。\n同时同步 package.ps1 注释与发布文档，并注明下一轮开发时改成 1.5.1-next。","detail_path":"/ncepu-bj/fast-https/commit/a7831c92b2414eefbca6a4bbdf7e9f421640f945","commits_path":"/ncepu-bj/fast-https/commits/a7831c92b2414eefbca6a4bbdf7e9f421640f945","tree_path":"/ncepu-bj/fast-https/tree/a7831c92b2414eefbca6a4bbdf7e9f421640f945","author":{"name":"JFeng2048","email":"JFeng2048@outlook.com","username":null,"user_path":null,"enterprise_user_path":null,"image_path":"no_portrait.png#JFeng2048-","is_gitee_user":false,"is_enterprise_user":null,"widget_url":null},"committer":{"name":"JFeng2048","email":"JFeng2048@outlook.com","username":null,"user_path":null,"enterprise_user_path":null,"image_path":"no_portrait.png#JFeng2048-","is_gitee_user":false,"is_enterprise_user":null,"widget_url":null},"authored_date":"2026-11-06T15:48:33+08:00","committed_date":"2026-11-06T15:48:33+08:00","signature":null,"build_state":null},"archive_path":"/ncepu-bj/fast-https/repository/archive/v1.5.0","signature":null},"operating":{"edit":false,"download":true,"destroy":false,"enterprise_forbid_zip":false},"release":{"title":"Fast Https发行版v1.5.0","path":"/ncepu-bj/fast-https/releases/tag/v1.5.0","tag_path":"/ncepu-bj/fast-https/tree/v1.5.0","project_id":30074419,"created_at":"2026-11-06T15:54:03+08:00","is_prerelease":false,"description":"Fast-Https 1.5.0 \r\n## 新增\r\n\r\n- ACME 自动签发：不需要外部脚本即可申请并续期受信任证书，配套 CA 降级链（Let's Encrypt → ZeroSSL）、staging、自签兜底\r\n- ACME 热重载：改 acme 段不再需要 stop + start，reload 按配置差异重建证书申请任务\r\n- site 命令组：site init（对已存在的站点即原地更新，只覆盖显式传入的字段）、site list、site show、site remove\r\n- acme 命令组：无子命令进入交互向导（以当前配置为默认值）、acme setup、acme show\r\n- config path：输出运行期实际使用的配置文件与目录绝对路径\r\n- version 命令；全部命令的帮助信息支持中英双语\r\n- 随包安装 logrotate 配置（copytruncate），日志不再无限增长\r\n- 打包：apt/yum/apk 仓库树生成脚本、deb/rpm/apk 容器实机验证脚本\r\n- 文档：feature / develop / help 三套体系，新增 AGENT.md 与项目架构图\r\n\r\n## 变更\r\n\r\n- 配置解析去掉 viper，改为自带 JSONC 解析，原子写下沉到 infra\r\n- 主配置拆为系统级配置 + conf.d 站点文件，config 包按职责拆分为五个文件\r\n- 发行版包改为 FHS 分离布局（/etc、/usr/share、/var/log、/run）\r\n- reload 发信号前先在本地校验配置，校验失败不动运行中的实例\r\n- ACME 向导以当前配置为默认值，摘要延后到答完题再生成\r\n\r\n## 修复\r\n\r\n- 打包脚本 CRLF 行尾导致「能装不能卸、报 prerm ENOENT」\r\n- 卸载后进程仍在跑、80/443 被占用：单元 cgroup 之外的残留进程按 pid 文件与 /proc 双路清理\r\n- http-01 端口告警漏算 conf.d 里的站点\r\n- ACME 配好却没有任何域名可申请时不给任何提示\r\n- site 改写文件时吞掉未建模字段\r\n- logrotate 配置 CRLF 行尾\r\n\r\n## 移除\r\n\r\n- install / uninstall / check / dev / completion 命令\r\n- 顶层 shell/ 目录（vendored acme.sh）\r\n\r\n## 破坏性变更\r\n\r\n- 安装与卸载交给包管理器，不再提供对应子命令\r\n- 包布局迁移到 /etc/fast-https；postinstall 会复制旧的 config/，不覆盖现场文件\r\n\r\n## ACME 证书挑战\r\n\r\n- http-01：走 early-request 钩子，在路由匹配之前应答 /.well-known/acme-challenge/，不受站点根目录与 location 规则影响\r\n- tls-alpn-01：只在启用时把 acme-tls/1 放进 NextProtos，未使用 ACME 的部署握手表保持不变；reload 开关该方式时重建对应 ssl 端口的 tls.Config\r\n- 申请期间继续使用自签证书，首次握手不阻塞；申请失败按 fallback_self_signed 回落\r\n- 只有 listen 含 ssl 的站点进入申请列表，非公网域名跳过并在日志与 acme show 中说明原因\r\n- reload 只在差异处重建管理器：enabled / email / staging / storage / challenge / cas / renew_before_days 与域名集合；配置未变时不打断 certmagic 的续期调度，新配置构造失败时保留旧管理器继续续期","author":{"name":"JFeng2048","username":"JFeng2048","path":"/JFeng2048","avatar_url":"https://foruda.gitee.com/avatar/1750563666889287156/15394938_mayunxian_1750563666.png!avatar30"},"attach_files":[{"download_url":"/ncepu-bj/fast-https/attach_files/3611187/download/fast-https_1.5.0_linux_amd64.apk","name":"fast-https_1.5.0_linux_amd64.apk","cli_download_url":"https://gitee.com/ncepu-bj/fast-https/releases/download/v1.5.0/fast-https_1.5.0_linux_amd64.apk","censor_failed":false,"censor_tip":null},{"download_url":"/ncepu-bj/fast-https/attach_files/3611189/download/fast-https_Darwin_arm64.tar.gz","name":"fast-https_Darwin_arm64.tar.gz","cli_download_url":"https://gitee.com/ncepu-bj/fast-https/releases/download/v1.5.0/fast-https_Darwin_arm64.tar.gz","censor_failed":false,"censor_tip":null},{"download_url":"/ncepu-bj/fast-https/attach_files/3611190/download/fast-https_1.5.0_linux_amd64.deb","name":"fast-https_1.5.0_linux_amd64.deb","cli_download_url":"https://gitee.com/ncepu-bj/fast-https/releases/download/v1.5.0/fast-https_1.5.0_linux_amd64.deb","censor_failed":false,"censor_tip":null},{"download_url":"/ncepu-bj/fast-https/attach_files/3611193/download/fast-https_1.5.0_linux_arm64.deb","name":"fast-https_1.5.0_linux_arm64.deb","cli_download_url":"https://gitee.com/ncepu-bj/fast-https/releases/download/v1.5.0/fast-https_1.5.0_linux_arm64.deb","censor_failed":false,"censor_tip":null},{"download_url":"/ncepu-bj/fast-https/attach_files/3611194/download/fast-https_1.5.0_linux_amd64.rpm","name":"fast-https_1.5.0_linux_amd64.rpm","cli_download_url":"https://gitee.com/ncepu-bj/fast-https/releases/download/v1.5.0/fast-https_1.5.0_linux_amd64.rpm","censor_failed":false,"censor_tip":null},{"download_url":"/ncepu-bj/fast-https/attach_files/3611195/download/fast-https_1.5.0_linux_arm64.apk","name":"fast-https_1.5.0_linux_arm64.apk","cli_download_url":"https://gitee.com/ncepu-bj/fast-https/releases/download/v1.5.0/fast-https_1.5.0_linux_arm64.apk","censor_failed":false,"censor_tip":null},{"download_url":"/ncepu-bj/fast-https/attach_files/3611196/download/fast-https_1.5.0_linux_arm64.rpm","name":"fast-https_1.5.0_linux_arm64.rpm","cli_download_url":"https://gitee.com/ncepu-bj/fast-https/releases/download/v1.5.0/fast-https_1.5.0_linux_arm64.rpm","censor_failed":false,"censor_tip":null},{"download_url":"/ncepu-bj/fast-https/attach_files/3611197/download/fast-https_Darwin_x86_64.tar.gz","name":"fast-https_Darwin_x86_64.tar.gz","cli_download_url":"https://gitee.com/ncepu-bj/fast-https/releases/download/v1.5.0/fast-https_Darwin_x86_64.tar.gz","censor_failed":false,"censor_tip":null},{"download_url":"/ncepu-bj/fast-https/attach_files/3611198/download/fast-https_Linux_arm64.tar.gz","name":"fast-https_Linux_arm64.tar.gz","cli_download_url":"https://gitee.com/ncepu-bj/fast-https/releases/download/v1.5.0/fast-https_Linux_arm64.tar.gz","censor_failed":false,"censor_tip":null},{"download_url":"/ncepu-bj/fast-https/attach_files/3611200/download/fast-https-1.5.0-windows-arm64-setup.exe","name":"fast-https-1.5.0-windows-arm64-setup.exe","cli_download_url":"https://gitee.com/ncepu-bj/fast-https/releases/download/v1.5.0/fast-https-1.5.0-windows-arm64-setup.exe","censor_failed":false,"censor_tip":null},{"download_url":"/ncepu-bj/fast-https/attach_files/3611201/download/fast-https-1.5.0-windows-amd64-setup.exe","name":"fast-https-1.5.0-windows-amd64-setup.exe","cli_download_url":"https://gitee.com/ncepu-bj/fast-https/releases/download/v1.5.0/fast-https-1.5.0-windows-amd64-setup.exe","censor_failed":false,"censor_tip":null},{"download_url":"/ncepu-bj/fast-https/attach_files/3611202/download/fast-https_Windows_x86_64.zip","name":"fast-https_Windows_x86_64.zip","cli_download_url":"https://gitee.com/ncepu-bj/fast-https/releases/download/v1.5.0/fast-https_Windows_x86_64.zip","censor_failed":false,"censor_tip":null},{"download_url":"/ncepu-bj/fast-https/attach_files/3611203/download/fast-https_Linux_x86_64.tar.gz","name":"fast-https_Linux_x86_64.tar.gz","cli_download_url":"https://gitee.com/ncepu-bj/fast-https/releases/download/v1.5.0/fast-https_Linux_x86_64.tar.gz","censor_failed":false,"censor_tip":null},{"download_url":"/ncepu-bj/fast-https/attach_files/3611204/download/fast-https_Windows_arm64.zip","name":"fast-https_Windows_arm64.zip","cli_download_url":"https://gitee.com/ncepu-bj/fast-https/releases/download/v1.5.0/fast-https_Windows_arm64.zip","censor_failed":false,"censor_tip":null}],"zip_download_url":"/ncepu-bj/fast-https/releases/tag/v1.5.0.zip","tar_download_url":"/ncepu-bj/fast-https/releases/tag/v1.5.0.tar.gz"}}}