Skip to main content

FAQ常见问题

审核

Q: 审核被驳回怎么办?
审查驳回原因,修正后重新提交。常见驳回原因包括:JSON 格式错误、版本号不递增、缺少语言文件、端口冲突。详见审核标准章节。

Q: 审核需要多长时间?
通常 3-5 个工作日。首次提交可能更长(需人工审核全部内容)。更新版本审核较快(通常 1-3 个工作日)。

Q: 应用 ID 可以修改吗?
创建后不可修改。请在上架前仔细确认应用 ID。

技术问题

Q: 端口冲突怎么办?

  • 禁止使用系统保留端口:22、80、443、8181、5050
  • 推荐使用 8000-19999 范围
  • 安装前在 preinst 脚本中检测端口占用
  • 不同应用使用不同端口,平台不自动分配

Q: 版本号规则是什么?

  • 遵循语义化版本号(SemVer):主版本.次版本.修订号
  • 每次提交必须严格大于前一版本,禁止降级
  • 测试版使用 "beta": true 字段,版本号后缀(-beta/-rc)不被支持
  • 版本号最大长度 20 字符

Q: 单包还是双包?

  • 从零开发 → 单包模式(所有文件集成在一个 deb 包中)
  • 已有通用标准 deb 包、构建复杂 → 双包模式(源包 + 数据包)
  • 简单二进制程序 → 单包模式

Q: config.ini 文件后缀是 .ini 但内容是 JSON,为什么?
早期 TOS 配置系统使用 .ini 扩展名,为保持向后兼容和降低开发者迁移成本,新版本沿用该扩展名,但内部解析器已升级为 JSON 格式。开发者只需按 JSON 语法编写即可。

安装与运行

Q: 应用安装失败怎么办?

  1. 检查 systemctl status <system_id> 查看服务状态
  2. 检查 journalctl -u <system_id> -n 50 查看服务日志
  3. 确认 config.ini 中所有必填字段已正确填写
  4. 确认 systemd 服务文件路径和权限正确
  5. 确认端口未被占用:ss -tlnp | grep <端口>

Q: 如何调试 WebUI 内部打开的应用?

  1. 检查 /var/api/<app_id>.sock 是否存在
  2. 使用 curl --unix-socket /var/api/<app_id>.sock http://localhost/ 直接测试后端
  3. 在浏览器 DevTools Network 面板检查 /v2/proxy/<app_id>/ 请求
  4. 确认前端正确携带了 CookieX-Csrf-Token header

Q: 如何调试 WebUI 外部打开的应用?

  1. 检查后端是否监听 0.0.0.0:<端口>(非 127.0.0.1)
  2. 检查 nginx 配置文件路径和语法:nginx -t
  3. 直接访问 http://<TNAS_IP>:<端口> 确认后端响应正常
  4. 确认 nginx location 块的 proxy_pass 端口与后端监听端口一致