Hlavní konfigurační soubor — config.ini
config.ini je hlavní soubor metadat, který definuje identitu aplikace, informace o zobrazení, atributy běhového prostředí a vztahy závislostí. Je klíčovým základem pro validaci platformou a zobrazení v App Center.
Důležité: Přípona souboru je
.ini, ale obsah musí být v přísném formátu JSON. Nepřidávejte komentáře, nepoužívejte jednoduché uvozovky, koncové čárky ani žádné syntaktické chyby.
Poznámka k formátu: Přípona souboru
.inije historickou konvencí společnosti (zachování konzistence názvů souborů s původním konfiguračním systémem), ale analyzátor jej zpracovává jako formát JSON. Vývojáři musí psát pomocí syntaxe JSON, jinak automatická validace selže.
Standardní šablona
Níže je standardní šablona config.ini, rozdělená na tři nezávislé příklady podle podtypu aplikace. Vývojáři by měli zvolit odpovídající šablonu podle typu své aplikace. Vyberte jednu ze tří; nekombinujte je.
Nutné přečíst: vztahy vzájemného vyloučení polí
| Typ aplikace | Povinná pole | Zakázaná pole |
|---|---|---|
| Interní otevření WebUI (iframe) | type: "iframe" + path: "/<id>/" | open_path |
| Externí otevření WebUI (nová karta) | open_path: true + path: "http://${ip}:<port>" | type |
| Služba bez UI | — | type, open_path, path |
Šablona 1: Interní otevření WebUI (vložení iframe)
{
"id": "dev-myapp",
"icon": "/images/icons/dev-myapp.svg",
"publisher": "Developer Name",
"exec": true,
"type": "iframe",
"path": "/dev-myapp/",
"resize": true,
"maxmin": true,
"width": 1180,
"height": 680,
"help": "https://example.com/docs",
"version": "1.0.0",
"recommend": false,
"beta": false,
"low_version": "TOS7.0",
"category": ["Utilities"],
"depend": [],
"relation": [],
"platform": "x86_64",
"official": "https://example.com",
"application_type": "deb",
"system_id": "dev-myapp",
"package": "dev-myapp",
"user": "dev-myapp",
"all_user_display": true,
"allow_open_in_mobile": false
}
Šablona 2: Externí otevření WebUI (nová karta)
{
"id": "dev-myapp",
"icon": "/images/icons/dev-myapp.svg",
"publisher": "Developer Name",
"exec": true,
"open_path": true,
"path": "http://${ip}:8686",
"help": "https://example.com/docs",
"version": "1.0.0",
"recommend": false,
"beta": false,
"low_version": "TOS7.0",
"category": ["Utilities"],
"depend": [],
"relation": [],
"platform": "x86_64",
"official": "https://example.com",
"application_type": "deb",
"system_id": "dev-myapp",
"package": "dev-myapp",
"user": "dev-myapp",
"all_user_display": true,
"allow_open_in_mobile": false
}
Šablona 3: Služba bez UI
{
"id": "dev-myapp",
"icon": "/images/icons/dev-myapp.svg",
"publisher": "Developer Name",
"exec": true,
"help": "https://example.com/docs",
"version": "1.0.0",
"recommend": false,
"beta": false,
"low_version": "TOS7.0",
"category": ["Utilities"],
"depend": [],
"relation": [],
"platform": "x86_64",
"official": "https://example.com",
"application_type": "deb",
"system_id": "dev-myapp",
"package": "dev-myapp",
"user": "dev-myapp",
"all_user_display": true,
"allow_open_in_mobile": false
}
Referenční příručka polí
| Pole | Typ | Povinné | Popis | Podrobný popis |
|---|---|---|---|---|
id | string | ✅ Ano | Jedinečný identifikátor aplikace | Globálně jedinečný na platformě; nesmí duplikovat žádnou zveřejněnou aplikaci. Znaková sada: malá písmena (a-z), číslice (0-9) a pomlčky (-). Musí začínat písmenem. Maximální délka: 50 znaků. Doporučený formát: identifikátor-účet-vývojáře-název-obchodní-aplikace nebo reverzní-doména-název-aplikace. Příklady: dev-admin-monitor, com-douyin-service. Zakázaná čistě generická systémová klíčová slova: docker, bin, var, api, usr, root, admin, system, service atd. Po vytvoření nelze změnit. |
icon | string | ✅ Ano | Cesta k ikoně | Relativní cesta v rámci úložiště. Musí dodržovat formát /images/icons/<id>.svg. Soubor ikony musí na této cestě existovat. |
publisher | string | ✅ Ano | Název vydavatele | Název vývojáře nebo organizace zobrazený v App Center. Příklad: "Kevin", "LinuxServer.io". |
path | string | Podmíněně povinné | Adresa přístupu k aplikaci | Pole path se vzájemně vylučuje podle scénáře: iframe používá /<app_id>/; externí otevření používá http://${ip}:<port>; služba bez UI ponechává prázdné. Musí se použít zástupný symbol ${ip} (např. http://${ip}:8686). Systém automaticky nahradí ${ip} za LAN IP adresu TOS. Pevné zakódování IP adresy nebo domény je zakázáno. Porty jiné než 80/443: http://${ip}:<port>. Interní otevření WebUI (iframe): /<app_id>/. Aplikace bez UI: nastavte na "" nebo toto pole vynechejte. Povinné, když je exec=true. |
exec | bool | ✅ Ano | Zda existuje spustitelná služba | Zda aplikace podporuje operace spuštění/zastavení. true: App Center zobrazuje tlačítka spuštění/zastavení; false: pouze zobrazení, bez řízení životního cyklu. |
open_path | bool | Podmíněně povinné | Zda se otevírá v nové kartě | Řídí způsob otevření aplikace: true = nová karta prohlížeče; false nebo vynecháno = vložený iframe v desktopu TOS. Aplikace s externím otevřením musí nastavit toto pole na true. Vzájemně se vylučuje s polem type; nesmí být nastaveno současně. |
type | string | Podmíněně povinné | Typ otevření aplikace | Pro interní otevření WebUI (vložení iframe) nastavte na "iframe". ⚠️ Vzájemně se vylučuje s polem open_path; nesmí být nastaveno současně. Aplikace s externím otevřením nebo aplikace bez UI toto pole nenastavují. |
resize | bool | Ne | Zda lze okno měnit | Platí pouze při open_path=false. Řídí, zda lze velikost vyskakovacího okna aplikace měnit. Výchozí false. |
maxmin | bool | Ne | Zda lze okno maximalizovat/minimalizovat | Platí pouze při open_path=false. Řídí, zda vyskakovací okno aplikace podporuje maximalizaci/minimalizaci. Výchozí false. |
width | int | Ne | Výchozí šířka okna | Platí pouze při open_path=false. Šířka stránky aplikace při otevření, výchozí 1180. |
height | int | Ne | Výchozí výška okna | Platí pouze při open_path=false. Výška stránky aplikace při otevření, výchozí 680. |
help | string | Ne | URL dokumentace nápovědy | Odkaz na dokumentaci nápovědy, wiki nebo komunitní návody. Pokud žádný není, ponechte prázdné. |
version | string | ✅ Ano | Číslo verze aplikace | Řídí se sémantickým verzováním. Každé podání musí být jedinečné a zvyšující se. Příklad: "1.0.0", "2.3.1". |
recommend | bool | ✅ Ano | Zda je aplikace doporučená | recommend — příznak doporučení, jednotně nastavovaný provozem platformy po recenzi na základě kvality aplikace. Vývojáři musí při podávání toto pole vždy nastavit na false. Toto pole spravuje platforma; vývojáři jej nesmí sami měnit na true. |
beta | bool | ✅ Ano | Zda se jedná o beta verzi | true = beta verze, zobrazí se pouze testovacím uživatelům; false = stabilní verze, zobrazí se všem uživatelům. |
low_version | string | ✅ Ano | Minimální podporovaná verze TOS | Minimální verze TOS, na které může aplikace normálně běžet. Musí být TOS7.0 nebo vyšší. Formát: "TOS7.0", "TOS7.1". |
category | []string | ✅ Ano | Kategorie aplikace | Až 3 kategorie, vybrané z oficiálního seznamu kategorií (viz Příloha A). První kategorie je hlavní kategorie — určuje výchozí sekci zobrazení aplikace. Seřaďte od nejkonkrétnější po nejobecnější. Překročení limitu kategorií vede k zamítnutí. |
depend | []string | ✅ Ano | Seznam závislých aplikací | ID aplikací, které musí být nainstalovány před touto aplikací. Musí to být existující ID aplikací v App Center. Závislosti se instalují v pořadí seznamu. Příklad: ["DockerEngine"]. Bez závislostí: []. Cyklické závislosti budou zamítnuty. |
relation | []string | Ne | Seznam souvisejících aplikací | ID aplikací zobrazených v modulu „Související aplikace" na stránce podrobností aplikace. Bez povinné závislosti, pouze asociace zobrazení. Bez vztahů: []. |
platform | string | ✅ Ano | Cílová architektura | "x86_64" nebo "aarch64". Více architektur vyžaduje samostatná podání. |
official | string | Ne | Oficiální webové stránky | Odkaz na oficiální webové stránky aplikace. Pokud žádný není, ponechte prázdné. |
application_type | string | ✅ Ano | Typ balíčku aplikace | Aplikace Deb v režimu jednoho balíčku: "deb"; aplikace v režimu dvojitého balíčku/archivu: "deb-TarGz"; aplikace Docker: "docker". |
system_id | string | Podmíněně povinné | Název služby systemd | Povinné pro aplikace Deb. Musí odpovídat názvu souboru služby systemd. Pro aplikace Docker ponechte prázdné. |
package | string | Podmíněně povinné | Název balíčku Deb | Povinné pro aplikace Deb. Musí odpovídat poli Package v DEBIAN/control. Pro aplikace Docker ponechte prázdné. |
compose_project | string | Podmíněně povinné | Název projektu Docker Compose | Povinné pro aplikace Docker. Určuje název použitý při vytváření projektu docker-compose; musí odpovídat konvencím pojmenování projektů Docker Compose (pouze malá písmena, číslice, pomlčky a podtržítka). Pro aplikace Deb ponechte prázdné. Příklad: "myapp-docker".Poznámka: Přestože Docker Compose podtržítka povoluje, doporučuje se, aby compose_project používal stejnou znakovou sadu jako id, aby se snížila záměna. id podporuje pouze malá písmena, číslice a pomlčky (bez podtržítek). Pokud obě používají stejný řetězec, nepoužívejte podtržítka ani v compose_project. |
user | string | ✅ Ano | Uživatel běhového prostředí | Systémový uživatel, pod kterým aplikace běží. Po určení je automaticky vytvořen vyhrazený uživatel (např. "jellyfin"). Aplikace Deb musí odpovídat poli User služby systemd. Použití uživatele root je přísně zakázáno. |
all_user_display | bool | ✅ Ano | Zda je viditelná pro všechny uživatele | true = viditelná pro všechny uživatele TOS; false = viditelná pouze pro administrátory. Při false se aplikace zobrazí pouze v pohledu App Center administrátora. Neadministrátoři aplikaci nevidí ani s ní nemohou pracovat. Aplikace je přesto nainstalována systémově a běží pro všechny uživatele; toto nastavení řídí pouze viditelnost. |
allow_open_in_mobile | bool | Ne | Zda je podporován mobilní přístup | true = aplikace podporuje mobilní přístup; false = aplikace nepodporuje mobilní přístup. Výchozí false. |
share_folders | []string | Ne | Sdílené složky vytvořené při instalaci | Nakonfiguruje sdílené složky, které se mají pro aplikaci vytvořit během instalace, přičemž oprávnění složek se spravují pomocí ACL. Použití tohoto pole vyžaduje, aby pole user nebylo prázdné. Příklad: ["data", "config"]. |
Klíčová pravidla
Validace formátu JSON:
Před podáním ověřte config.ini:
# Using python3
python3 -c "import json; json.load(open('config.ini'))" && echo "JSON format valid"
# Using jq
jq empty config.ini
Časté chyby JSON vedoucí k zamítnutí:
{
"id": "myapp", // ❌ Trailing comma after the last field of an object
"version": '1.0.0', // ❌ Single quotes (must use double quotes)
// ❌ JSON does not allow comments
"beta": false,
}
Správně:
{
"id": "myapp",
"version": "1.0.0",
"beta": false
}
❌ Plné uvozovky: "version": "1.0.0" → ✅ Poloviční uvozovky: "version": "1.0.0"
- Zástupný symbol IP: Pole
pathmusí používat${ip}(např.http://${ip}:8686). Pevné zakódování IP adresy nebo domény je zakázáno. - Syntaxe JSON: Musí to být platný JSON. Komentáře (
//nebo/* */), jednoduché uvozovky a koncové čárky jsou zakázány. - Jedinečnost ID:
idmusí být globálně jedinečné. Duplicitní ID budou zamítnuta. - Zvyšování verze: Číslo verze každého nového podání musí být vyšší než předchozí verze. Duplicity nebo snižování jsou zakázány.
- Limit kategorií: Každá aplikace může mít nejvýše 3 kategorie.
- Verze TOS:
low_versionmusí být TOS 7.0 nebo vyšší. - Konzistence polí:
versionmusí být konzistentní napříč config.ini, DEBIAN/control a app.lang.system_idmusí odpovídat názvu souboru služby systemd.packagemusí odpovídat poliPackagev DEBIAN/control.
Rychlá referenční tabulka hodnot pole path:
| Typ aplikace | Způsob otevření | Hodnota path | Příklad |
|---|---|---|---|
| Deb interní otevření WebUI | vložení iframe | /<app_id>/ | "/tmrtimer/" |
| Deb externí otevření WebUI | nová karta | /<app_id>/ | "/weather/" |
| Aplikace Docker | nová karta | http://${ip}:<port> | "http://${ip}:8080" |
| Služba bez UI | bez frontendu | Vynechejte nebo "" | — |
Formát path pro režim iframe (interní otevření) a externí otevření je stejný (oba /<app_id>/). Rozdíl spočívá v poli open_path: interní otevření open_path=false (výchozí), externí otevření open_path=true. Aplikace Docker používají pro path formát http://${ip}:<port>.
Rezervovaná pole: Následující názvy polí jsou rezervovány pro budoucí použití platformou. Nepoužívejte je ve vlastním config.ini:
host_network,container_runtime,sandbox,auto_update,upstream_url,license,min_memory,min_cpu,min_disk. Použití rezervovaných polí může vést k problémům s budoucí kompatibilitou a zamítnutí.