Skip to main content

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 .ini je 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 aplikacePovinná poleZaká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 UItype, 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í

PoleTypPovinnéPopisPodrobný popis
idstring✅ AnoJedinečný identifikátor aplikaceGlobá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.
iconstring✅ AnoCesta 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.
publisherstring✅ AnoNázev vydavateleNázev vývojáře nebo organizace zobrazený v App Center. Příklad: "Kevin", "LinuxServer.io".
pathstringPodmíněně povinnéAdresa přístupu k aplikaciPole 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.
execbool✅ AnoZda existuje spustitelná službaZda 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_pathboolPodmí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ě.
typestringPodmíněně povinnéTyp otevření aplikacePro 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í.
resizeboolNeZda lze okno měnitPlatí pouze při open_path=false. Řídí, zda lze velikost vyskakovacího okna aplikace měnit. Výchozí false.
maxminboolNeZda lze okno maximalizovat/minimalizovatPlatí pouze při open_path=false. Řídí, zda vyskakovací okno aplikace podporuje maximalizaci/minimalizaci. Výchozí false.
widthintNeVýchozí šířka oknaPlatí pouze při open_path=false. Šířka stránky aplikace při otevření, výchozí 1180.
heightintNeVýchozí výška oknaPlatí pouze při open_path=false. Výška stránky aplikace při otevření, výchozí 680.
helpstringNeURL dokumentace nápovědyOdkaz na dokumentaci nápovědy, wiki nebo komunitní návody. Pokud žádný není, ponechte prázdné.
versionstring✅ 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".
recommendbool✅ AnoZda 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.
betabool✅ AnoZda se jedná o beta verzitrue = beta verze, zobrazí se pouze testovacím uživatelům; false = stabilní verze, zobrazí se všem uživatelům.
low_versionstring✅ AnoMinimální podporovaná verze TOSMinimá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✅ AnoKategorie aplikaceAž 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✅ AnoSeznam 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[]stringNeSeznam 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ů: [].
platformstring✅ AnoCílová architektura"x86_64" nebo "aarch64". Více architektur vyžaduje samostatná podání.
officialstringNeOficiální webové stránkyOdkaz na oficiální webové stránky aplikace. Pokud žádný není, ponechte prázdné.
application_typestring✅ AnoTyp balíčku aplikaceAplikace Deb v režimu jednoho balíčku: "deb"; aplikace v režimu dvojitého balíčku/archivu: "deb-TarGz"; aplikace Docker: "docker".
system_idstringPodmíněně povinnéNázev služby systemdPovinné pro aplikace Deb. Musí odpovídat názvu souboru služby systemd. Pro aplikace Docker ponechte prázdné.
packagestringPodmíněně povinnéNázev balíčku DebPovinné pro aplikace Deb. Musí odpovídat poli Package v DEBIAN/control. Pro aplikace Docker ponechte prázdné.
compose_projectstringPodmíněně povinnéNázev projektu Docker ComposePovinné 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.
userstring✅ AnoUž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_displaybool✅ AnoZda je viditelná pro všechny uživateletrue = 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_mobileboolNeZda je podporován mobilní přístuptrue = aplikace podporuje mobilní přístup; false = aplikace nepodporuje mobilní přístup. Výchozí false.
share_folders[]stringNeSdílené složky vytvořené při instalaciNakonfiguruje 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"

  1. Zástupný symbol IP: Pole path musí používat ${ip} (např. http://${ip}:8686). Pevné zakódování IP adresy nebo domény je zakázáno.
  2. Syntaxe JSON: Musí to být platný JSON. Komentáře (// nebo /* */), jednoduché uvozovky a koncové čárky jsou zakázány.
  3. Jedinečnost ID: id musí být globálně jedinečné. Duplicitní ID budou zamítnuta.
  4. 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.
  5. Limit kategorií: Každá aplikace může mít nejvýše 3 kategorie.
  6. Verze TOS: low_version musí být TOS 7.0 nebo vyšší.
  7. Konzistence polí: version musí být konzistentní napříč config.ini, DEBIAN/control a app.lang. system_id musí odpovídat názvu souboru služby systemd. package musí odpovídat poli Package v DEBIAN/control.

Rychlá referenční tabulka hodnot pole path:

Typ aplikaceZpůsob otevřeníHodnota pathPříklad
Deb interní otevření WebUIvložení iframe/<app_id>/"/tmrtimer/"
Deb externí otevření WebUInová karta/<app_id>/"/weather/"
Aplikace Dockernová kartahttp://${ip}:<port>"http://${ip}:8080"
Služba bez UIbez frontenduVynechejte nebo ""
Poznámka:

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í.