附录合集
附录A:应用分类
| 分类 ID | 显示名称 |
|---|---|
Audio_Video_Entertainment | 音视频娱乐 |
Photography_Video | 摄影与视频 |
Backup_Sync | 备份与同步 |
Development_Tools | 开发工具 |
Utilities | 实用工具 |
Web_Services | Web 服务 |
Security | 安全 |
Download | 下载 |
Driver | 驱动 |
Artificial_Intelligence | 人工智能 |
申请新分类: 如果没有现有分类适合你的应用,可以申请新分类:
- 通过开发者平台支持渠道提交分类申请
- 提供:建议的分类 ID、展示名称、至少 3 个现有或计划应用的合理性说明
- 审核需 5-10 个工作日
- 未经事先批准的自定义/非标准分类将被驳回
附录B:系统端口参考
以下端口为 TOS 系统保留,应用不得使用:
| 端口 | 服务 |
|---|---|
| 22 | SSH |
| 80 | HTTP(TOS Web) |
| 443 | HTTPS |
| 445 | SMB |
| 3306 | MySQL |
| 5050 | TOS 守护进程(系统内部服务端口,应用禁止使用) |
| 5432 | PostgreSQL |
| 6379 | Redis |
| 8181 | TOS Nginx(Web UI) |
| 8443 | TOS HTTPS |
推荐应用端口范围:8000-19999(排除已被已安装应用占用的端口)。若推荐范围端口被占用,可使用 49152-65535(动态端口范围),但需在配置中明确声明。
附录C:TOS 系统目录
| 路径 | 说明 |
|---|---|
/Volume*/@apps/<appid>/ | 应用安装目录(非内置应用) |
/Volume*/@apps/<appid>/data/ | 应用运行时数据(缓存、临时文件) |
/Volume*/@apps/<appid>/logs/ | 应用日志 |
/Volume*/DockerAppData/<appid>/ | Docker 应用数据(配置和业务数据) |
/usr/local/system_app_data/<appid>/ | 系统内置应用目录(仅限内置应用) |
/etc/systemd/system/<appid>.service | Systemd 服务文件 |
说明:
/Volume*/中的*表示用户在安装时选择的卷号(如 Volume1、Volume2)。
- 对于非内置应用(包括官方和第三方应用),所有文件存储在
/Volume*/@apps/<appid>/下。- 系统内置应用(如 GlobalSearch、StorageManager)位于系统盘
/usr/local/system_app_data/。- Docker 应用数据通过卷挂载方式单独存储在
/Volume*/DockerAppData/<appid>/。
附录D:TOS Systemd 目标
| 目标 | 说明 |
|---|---|
multi-user.target | TOS 应用服务目标(所有应用服务必须将此用作 WantedBy) |
default.target | 系统默认启动目标(应用服务请勿使用;应使用 multi-user.target) |
附录E:兼容性矩阵
| TOS 版本 | 基础系统 | glibc | Python3 | Docker | Node.js |
|---|---|---|---|---|---|
| TOS 7.0 | Ubuntu 22.04 兼容 | 2.35 | 3.10 | 20.10+ | 18.x |
| TOS 7.x | Ubuntu 22.04 兼容 | 2.35 | 3.10 | 20.10+(或更高) | 18.x(或更高) |
说明:TOS 7.x 系列小版本将保持与 TOS 7.0 的兼容性。为 TOS 7.0 开发的应用无需额外适配即可运行。有关最新的版本特定详情,请参阅 TOS 官方发行说明或开发者平台。
附录F:语言文件快速模板
[zh-cn]
name = ""
auth = ""
descript = ""
release_note = ""
important = ""
[zh-hk]
name = ""
auth = ""
descript = ""
release_note = ""
important = ""
[en-us]
name = ""
auth = ""
descript = ""
release_note = ""
important = ""
[fr-fr]
name = ""
auth = ""
descript = ""
release_note = ""
important = ""
[de-de]
name = ""
auth = ""
descript = ""
release_note = ""
important = ""
[it-it]
name = ""
auth = ""
descript = ""
release_note = ""
important = ""
[es-es]
name = ""
auth = ""
descript = ""
release_note = ""
important = ""
[hu-hu]
name = ""
auth = ""
descript = ""
release_note = ""
important = ""
[ja-jp]
name = ""
auth = ""
descript = ""
release_note = ""
important = ""
[ko-kr]
name = ""
auth = ""
descript = ""
release_note = ""
important = ""
[pl-pl]
name = ""
auth = ""
descript = ""
release_note = ""
important = ""
[ru-ru]
name = ""
auth = ""
descript = ""
release_note = ""
important = ""
[tr-tr]
name = ""
auth = ""
descript = ""
release_note = ""
important = ""
[pt-pt]
name = ""
auth = ""
descript = ""
release_note = ""
important = ""
附录G:共享文件夹 API
# 为应用创建共享文件夹
ter_share_add -name <文件夹名称> -owner <用户名>
# 示例
ter_share_add -name myapp-data -owner myapp
附录H:升级迁移检查清单
将应用升级到新的主版本时,使用此检查清单:
- 数据迁移脚本已处理上一版本格式
- 修改前已备份配置文件
- 新依赖已在 DEBIAN/control 中声明
- 服务文件已更新(如需要)
- 版本号已在 config.ini、DEBIAN/control 和 app.lang 中递增
- 更新日志/发布说明已更新
- 已测试升级路径:安装旧版 → 添加数据 → 升级 → 验证数据
- 已测试回滚路径:降级或从备份恢复
- SHA-256 校验和已重新生成
附录I:README.md 模板
# <应用名称>
## 概述
应用的简要描述和用途。
## 功能特点
- 功能 1
- 功能 2
- 功能 3
## 安装
1. 要求:TOS 7.0+,[其他依赖]
2. 从 TOS 应用中心安装
3. 初始配置步骤
## 使用方法
如何访问和使用应用:
1. 访问地址:`http://<你的-nas-ip>:<端口>`
2. 默认凭据:[如适用]
3. 关键设置
## 权限
| 权限 | 理由 |
|---|---|
| 网络:端口 XXXX | [理由] |
| 文件系统:/path/to/data | [理由] |
| 用户:<appid> | 隔离的服务执行 |
## 配置
关键配置选项及其默认值。
## 端口
| 端口 | 协议 | 用途 |
|---|---|---|
| XXXX | TCP | [用途] |
## 支持
- 文档:[链接]
- 问题追踪:[链接]
- 社区:[链接]
## 更新日志
### v1.0.0 (YYYY-MM-DD)
- 首次发布
## 许可证
[许可证类型]
附录J:配置文件模板全集
所有应用类型的完整可下载配置文件模板可在 TOS 开发者平台获取:
config.ini模板(Deb WebUI 内部、Deb WebUI 外部、Deb 无 UI、Docker)app.lang模板(14 语言快速模板,参见附录F)- Systemd 单元文件模板(含安全加固)
- DEBIAN/control 模板(单包、双包)
- 生命周期脚本模板(preinst、postinst、prerm、postrm)
- Nginx 配置模板
- docker-compose.yml 模板
- GitHub Actions CI/CD 模板
附录K:常见驳回原因与整改示例
| 驳回原因 | 错误示例 | 正确修复 |
|---|---|---|
| config.ini 有注释 | JSON 中的 // 这是注释 | 移除所有注释;JSON 不支持注释 |
| JSON 单引号 | 'version': '1.0.0' | 使用双引号:"version": "1.0.0" |
| 尾随逗号 | "beta": false,}(最后字段逗号) | 移除最后一个字段后的逗号 |
| 硬编码 IP | "path": "http://192.168.1.100:8080" | 使用占位符:"path": "http://${ip}:8080" |
| 缺少语言 | app.lang 只有 12 种语言 | 添加全部 14 种必需语言节点 |
| systemd 中使用 root | 服务文件中 User=root | 使用专用用户:User=<appid> |
| Docker 特权模式 | compose 中 privileged: true | 移除;使用细粒度权限 |
| 缺少校验和 | 未提交 .sha256 文件 | 运行 sha256sum <文件> > <文件>.sha256 |
| 版本号未递增 | v1.0.0 → v1.0.0(相同版本) | 递增版本号:v1.0.0 → v1.0.1 |
附录L:术语与名词定义
| 术语 | 定义 | 也称 |
|---|---|---|
| 应用 ID | 应用的全局唯一标识符;在 config.ini.id 中设置 | app_id、appid、id |
| 系统 ID | Systemd 服务单元名称;在 config.ini.system_id 中设置 | system_id、服务名 |
| 包名 | Debian 包名称;在 DEBIAN/control 的 Package 字段设置 | package、deb 包名 |
| 双包模式 | 在一个 tar.gz 压缩包中包含两个 deb 包——一个 deb 数据包(含 TOS 平台配置)和一个 deb 源包(含应用二进制)。 | 双包机制 |
| 数据包 | TOS 系统可识别的应用配置数据包,简称 deb 数据包 | 应用数据包、元数据包 |
| 源包 | 可运行的应用主体 deb 包,简称 deb 源包 | 应用安装包、二进制包 |
| 单包模式 | 按照 TOS 7.0 规范直接开发,将所有文件集成到单个 deb 包 | 单包机制 |
| WebUI 内部打开 | 应用前端在 TOS 桌面内以 iframe 方式打开 | iframe 模式、内嵌模式 |
| WebUI 外部打开 | 应用前端在浏览器新标签页打开 | 新标签页模式、外部模式 |
| 无 UI 服务 | 没有图形界面的应用;后台守护服务 | 无头服务、守护进程 |
| 最低 TOS 版本 | 应用所需的最低 TOS 版本;在 config.ini 的 low_version 字段中设置。 | 最低 TOS 版本、TOS 版本要求 |
附录M:Beta 版应用管理
| 规则 | 说明 |
|---|---|
| 可见人群 | Beta 应用仅对已选择加入 Beta 测试的用户可见 |
| 可见性控制 | 在 config.ini 中设置 "beta": true;平台自动限制可见范围 |
| 转正流程 | 从 Beta 毕业:设置 "beta": false 并递增版本号。版本号字符串应遵循标准 SemVer(不使用 beta 后缀) |
| 禁止行为 | Beta 应用不得作为正式版分发;误导用户 Beta 状态将导致驳回 |
| 过期下架 | 90 天未更新的 Beta 应用可能被自动下架 |
| 版本号 | 使用标准 SemVer 配合 "beta": true 字段;请勿使用 -beta、-rc 或其他版本号后缀 |
本文档为 TOS7 应用开发与上架的官方全球通用规范。规范将随 TOS7 版本迭代持续更新。开发者应以开发者平台上的最新版本为准。