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: 应用安装失败怎么办?
- 检查
systemctl status <system_id>查看服务状态 - 检查
journalctl -u <system_id> -n 50查看服务日志 - 确认 config.ini 中所有必填字段已正确填写
- 确认 systemd 服务文件路径和权限正确
- 确认端口未被占用:
ss -tlnp | grep <端口>
Q: 如何调试 WebUI 内部打开的应用?
- 检查
/var/api/<app_id>.sock是否存在 - 使用
curl --unix-socket /var/api/<app_id>.sock http://localhost/直接测试后端 - 在浏览器 DevTools Network 面板检查
/v2/proxy/<app_id>/请求 - 确认前端正确携带了
Cookie和X-Csrf-Tokenheader
Q: 如何调试 WebUI 外部打开的应用?
- 检查后端是否监听
0.0.0.0:<端口>(非 127.0.0.1) - 检查 nginx 配置文件路径和语法:
nginx -t - 直接访问
http://<TNAS_IP>:<端口>确认后端响应正常 - 确认 nginx location 块的 proxy_pass 端口与后端监听端口一致