Strategie architektury
Oficiální doporučení k architektuře
TOS 7 přijímá strategii Container-first při zachování plné podpory nativních aplikací Deb. Platforma doporučuje následující rozhodovací rámec:

Směr Container-First
Ekosystém aplikací TOS 7 se vyvíjí směrem k modelu Container-first:
- Aplikace Docker jsou preferovanou cestou pro většinu služeb třetích stran
- Poskytují lepší izolaci, jednodušší správu závislostí a konzistenci napříč platformami
- TOS 7 podporuje kontejnerizované nasazení Docker. Před použitím je nutné z App Center nainstalovat aplikaci DockerEngine. Tato aplikace poskytuje pro TOS 7 kompletní běhové prostředí Docker Compose.
- Budoucí funkce platformy (sandboxing, omezení prostředků, automatické aktualizace) budou přednostně podporovat aplikace Docker
Zvláštní pravidla výběru typu aplikace:
- Služby na pozadí bez UI: Pro nenáročné démony použijte podtyp Deb (No UI) (označovaný také jako headless služby); pro služby se složitými běhovými závislostmi nebo služby vyžadující izolaci kontejneru použijte Docker
Pro aplikace Deb poskytuje TOS 7 plnou podporu, ale vývojáři by měli:
- Minimalizovat závislosti na úrovni systému
- Používat systemd pro správu životního cyklu
- Dodržovat zásadu nejmenšího oprávnění
- Připravit se na budoucí kontejnerizované nasazení
Následující scénáře musí používat Docker; použití Deb je zakázáno:
- Aplikace vyžadující specifické OS prostředí nebo verze knihoven, které jsou v konfliktu s hostitelem
- Aplikace vyžadující síťovou izolaci (nezávislé jmenné prostory)
- Aplikace s vícekontejnerovou architekturou (např. webová služba + databáze)
Plán vývoje aplikací Deb: Aplikace Deb si zachovají plnou podporu v průběhu celé řady TOS 7.x. Platforma může v budoucích hlavních verzích TOS postupně zavést přechodovou cestu k architektuře container-first. Vývojáři obdrží alespoň 12 měsíců předem upozornění před jakýmkoli zrušením formátu.
Předinstalované závislosti systému TOS
TOS 7 používá kořenový souborový systém kompatibilní s Ubuntu 22.04. Systém je předinstalován s následujícími základními závislostmi:
- bash / dash
- Python 3.10
- systemd
- nginx
- curl / wget
- Běhové prostředí Docker (výhradně pro aplikace Docker)
Běhová prostředí jazyků, jako jsou Node.js, Java a Go, nejsou v TOS ve výchozím stavu předinstalovaná. Nespoléhejte v aplikacích Deb na tato prostředí přímo.
Řešení nepředinstalovaných závislostí
Pokud vaše aplikace závisí na běhových prostředích, která nejsou v TOS předinstalovaná (např. Node.js, Java, Go nebo jiná běhová prostředí jazyků), musíte použít jedno z následujících vyhovujících řešení. Přímé deklarování takových závislostí nebo jejich stahování za běhu je zakázáno.
- Deklarování
Depends: nodejsvDEBIAN/control(systém jej nemá předinstalovaný, což způsobí selhání instalace) - Instalace závislostí příkazem
apt install nodejsve skriptech (vyvolává problémy s oprávněními a poškozuje systémové prostředí) - Použití skriptů Node.js jako vstupního bodu aplikace (výsledkem je
node: command not found)
Možnost 1: Kompilace statických binárek v jazyce Go (doporučeno)
Přepište základní logiku v jazyce Go a zkompilujte ji do staticky linkovaných samostatných binárek bez závislosti na jakýchkoli systémových dynamických knihovnách:
# Compile static binary for x86_64 architecture
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o appname-x86_64 main.go
# Compile static binary for aarch64 architecture
GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build -o appname-aarch64 main.go
- Umístěte zkompilovanou binárku do adresáře
/usr/local/<appid>/balíčku Deb - Spouštějte ji přímo prostřednictvím souboru služby systemd bez dalších závislostí
Možnost 2: Použití Pythonu (Python 3.10 je v TOS předinstalovaný a připravený k použití)
Přepište základní logiku v Pythonu. TOS je předinstalován s Pythonem 3.10, který lze použít přímo:
- Deklarujte závislost v
DEBIAN/control:Depends: python3 - Pokud jsou potřeba knihovny třetích stran, přibalte je k balíčku Deb nebo je nainstalujte pomocí
pip install --targetdo soukromého adresáře aplikace
Možnost 3: Přibalení statických závislostí (pouze pro zvláštní scénáře)
Pokud musíte použít nepředinstalované prostředí, jako je Node.js, můžete k balíčku Deb přibalit statickou binárku odpovídající architektury:
- Umístěte statickou binárku Node.js do adresáře
/usr/local/<appid>/node/ - V skriptech používejte absolutní cesty:
/usr/local/<appid>/node/bin/node /usr/local/<appid>/app.js - Poznámka: Tento přístup výrazně zvětšuje velikost balíčku; doporučuje se pouze pro nenáročné aplikace