应用商店部署思源笔记3.7.0无限重启

【应用反馈】思源笔记 v3.7.0 启动失败,模板 command 配置未适配新版 CLI 架构

问题概述

1Panel 应用商店中的思源笔记,在镜像升级到 b3log/siyuan:v3.7.0 后,容器无法正常启动,持续循环重启。经排查,是应用模板的 Docker Compose command 配置未适配思源 v3.7.0 的内核 CLI 破坏性变更导致。

环境信息

  • 1Panel 版本:请自行补充你的面板版本,例如 v1.10.5
  • 思源笔记应用镜像: b3log/siyuan:v3.7.0
  • 部署方式:应用商店一键安装/升级

复现步骤

  1. 在应用商店全新安装思源笔记,或升级现有思源笔记到 v3.7.0 版本;
  2. 填写「访问授权码」等基础配置后启动应用;
  3. 查看容器日志,发现错误信息循环打印,服务始终无法正常启动,6806 端口无监听。

关键错误日志

plaintext

Starting SiYuan with UID:1000 and GID:1000 in workspace /siyuan/workspace/
Error: unknown flag: --accessAuthCode
Usage:
kernel [command]
Available Commands:
serve Start kernel HTTP server

根因分析

思源笔记 v3.7.0 对内核命令行(CLI)做了架构重构,改为标准子命令模式,属于向下不兼容的破坏性变更:

  • v3.6.5 及更早版本:执行 kernel 主程序时,默认隐含 serve 子命令, --accessAuthCode 等服务参数可以直接跟在主命令后使用;
  • v3.7.0 及之后版本:必须显式指定 serve 子命令, --accessAuthCode 是 serve 子命令的专属参数,不能直接作为 kernel 主程序的全局参数。

当前应用商店模板的 command 配置如下,缺少 serve 子命令,导致内核无法识别参数,启动直接报错:

yaml

command:
- --workspace=/siyuan/workspace/
- --accessAuthCode=${ACCESS_AUTH_CODE}

修复方案建议

方案一(最小改动,兼容原有变量逻辑)

在 command 首行添加 serve 子命令即可,改动量最小,不影响原有表单变量逻辑:

yaml

command:
- serve
- --workspace=/siyuan/workspace/
- --accessAuthCode=${ACCESS_AUTH_CODE}

方案二(更稳妥,降低后续版本兼容风险)

移除 command 块,改用官方支持的环境变量传递授权码,后续版本升级不易再出现参数层级兼容问题:

yaml

environment:
- TZ=${TIME_ZONE}
- PUID=1000
- PGID=1000
- SIYUAN_ACCESS_AUTH_CODE=${ACCESS_AUTH_CODE}

麻烦官方尽快修复应用模板,避免更多用户升级后遇到启动失败的问题,感谢!

太牛了,之前看到 siyuan 发的通知,还以为 1panel 已经处理了。