"description":"Ako OCI manager Apps inštaluje aplikáciu s databázou a vyrovnávacou pamäťou do samostatných natívnych LXC: plán, súkromná sieť, riadiaci skript závislostí, overenie a aktualizácia s obnovou pri zlyhaní."
"description":"Aplikácia so svojou databázou, vyrovnávacou pamäťou a ďalšími službami sa stáva niekoľkými koordinovanými LXC, nainštalovanými a aktualizovanými ako jedna.",
"section":"OCI manager Apps"
},
"sections":[
{
"id":"intro",
"blocks":[
{
"calloutInfo":{
"title":"Jedna aplikácia pre užívateľa, niekoľko LXC pre Proxmox VE",
"body":"Definícia viacerých kontajnerov je jedným záznamom v katalógu. Inštalátor vytvorí jeden natívny LXC pre každú službu a explicitne spravuje ich závislosti. Immich, Nextcloud, Paperless-ngx a Tandoor sú nainštalované týmto spôsobom."
}
},
{
"mermaid":{
"chartCode":"flowchart LR\n C[\"Docker Compose\"] --> O[\"{{plan}}\"]\n O --> A[\"{{app}}<br/>{{appNet}}\"]\n O --> D[\"{{db}}<br/>{{private}}\"]\n O --> R[\"{{cache}}<br/>{{private}}\"]\n V1[(\"config\")] --> A\n V2[(\"database\")] --> D\n V3[(\"cache\")] --> R\n D --> A\n R --> A",
"p":"Počas spracovania definície Compose sa nevytvára žiadny LXC. Najprv vznikne úplný plán so všetkými kontajnermi, obrazmi, VMID, sieťami, cestami, citlivými údajmi, poradím spúšťania a kontrolami stavu služieb. Ak plán nie je konzistentný, inštalácia sa nezačne."
"body":"Skontroluje sa zoznam VM a kontajnerov Proxmox VE aj evidencia inštalácií. Inštalátor neprevezme existujúci kontajner a nepoužije konfiguráciu, ktorá stále patrí inej inštancii aplikácie."
"body":"Zapíšu sa interné adresy služieb, zdieľané citlivé údaje a premenné služieb. Aplikácia pristupuje k svojim závislostiam cez ich vyhradené súkromné adresy."
"title":"3. Spustiť a skontrolovať každý kontajner",
"intro":"Vytvorený LXC ešte neznamená pripravenú službu. Závislosti sa spúšťajú v určenom poradí a každá prejde kontrolou špecifickou pre danú službu.",
"blocks":[
{
"table":{
"headers":[
"Služba",
"Kontrola",
"Čo ukazuje"
],
"rows":[
[
"PostgreSQL",
"<code>pg_isready</code> v CT s očakávaným hostiteľom, používateľom a databázou",
"Server akceptuje spojenia pre nakonfigurovanú databázu"
],
[
"Redis / Valkey",
"<code>redis-cli</code> alebo <code>valkey-cli</code> s príkazom <code>PING</code> na jeho súkromnej adrese",
"Broker počúva a odpovedá"
],
[
"Immich strojové učenie",
"HTTP <code>GET /ping</code>, plus kontrola zvoleného runtime GPU",
"Služba odpovedá a požadovaná akcelerácia neprešla na CPU"
],
[
"Nextcloud",
"<code>GET /status.php</code> s <code>installed=true</code>, <code>maintenance=false</code> a <code>needsDbUpgrade=false</code>",
"Inicializácia ukončená bez ďalšej migrácie"
],
[
"Paperless-ngx / Tandoor",
"HTTP na adrese LAN a skutočnom porte služby",
"Frontend a jeho závislosti poskytujú aplikáciu"
],
[
"Hlavná aplikácia",
"Koncový bod jeho šablóny, napríklad <code>/api/server/ping</code> v Immich",
"body":"Stav spustené znamená iba to, že proces LXC existuje. Ak služba umožňuje presnejšie overenie, použije sa kontrola príkazom exec alebo cez HTTP s časovým limitom. Ak sa niektorý kontajner zastaví alebo neprejde kontrolou, aplikácia sa neoznačí ako nainštalovaná."
"p":"Riadiaci skript závislostí (hook) sa nastaví iba na hlavnom kontajneri aplikácie so závislými službami. Proxmox VE ho uchováva ako snippet a spúšťa ho ako <code>hookscript</code> daného CT. Postup spúšťania aplikácie nie je zapísaný v skripte: je súčasťou samostatnej súkromnej konfigurácie inštalácie."
"p":"Skript je rovnaký pre všetky aplikácie s viacerými kontajnermi. VMID, názvy, typy kontrol a časové limity načíta zo súkromnej konfigurácie príslušnej aplikácie v <code>/etc/pve/priv/proxmenux-stack-VMID.json</code>."
"body":"Fázy post-start, pre-stop a post-stop nič nevykonávajú. Po zastavení hlavného CT zostanú PostgreSQL, Redis, Valkey alebo služba strojového učenia spustené. Riadiaci skript určuje poradie spúšťania; nemení viaceré LXC na jeden proces."
"intro":"V časti <strong>Spravovať nainštalované aplikácie OCI</strong> sa z ktoréhokoľvek kontajnera aplikácie otvorí správa celej aplikácie. Ponuka obsahuje <strong>Aktualizovať všetky kontajnery aplikácie</strong>, <strong>Upraviť dodatočné cesty a zariadenia</strong>, <strong>Znova vytvoriť všetky kontajnery s uloženou konfiguráciou</strong> a <strong>Odstrániť: vymazať aplikáciu a jej kontajnery</strong>. Opätovné vytvorenie zostaví každý kontajner z pôvodného obrazu podľa uloženého digestu bez hľadania novšieho obrazu. Používa rovnaké kroky ako aktualizácia a ponúka sa pre aplikácie s viacerými kontajnermi, ktoré podporujú aktualizáciu.",
"body":"Nové konfigurácie sa uložia ako platné až po úspešnej kontrole všetkých kontajnerov. Ak niektorý zlyhá, obnovia sa všetky kontajnery aplikácie."
"Pridajú sa do aplikačného kontajnera alebo sa z neho odstránia a kontajner sa reštartuje. Nič sa znova nevytvára.",
"Údaje aplikácie, jej databázy a ostatných kontajnerov"
],
[
"Čo spúšťa rozpoznanie (Immich)",
"Kontajner strojového učenia dostane obraz a zariadenia pre CPU alebo GPU hostiteľa. Celá aplikácia sa zastaví a aktualizuje rovnakým postupom ako pri aktualizácii.",
"Modelová vyrovnávacia pamäť, knižnica a databáza. Ak niečo zlyhá, predchádzajúce kontajnery a predchádzajúca voľba sú obnovené"
"title":"Aktualizácia vyžaduje možnosť znova vytvoriť celú aplikáciu",
"body":"Ak sa postup prípravy aplikácie nedá zopakovať, aktualizácia sa odmietne ešte pred zastavením jej kontajnerov. Aplikácia zostane bežať bez zmeny."
"p":"Ak počas inštalácie nastane chyba, zastavia a odstránia sa neúplné kontajnery vytvorené touto operáciou aj súkromný most, ak ho operácia vytvorila. Inštalácia aplikácie sa označí ako platná až po dokončení celého postupu."
"p":"Aktualizácia sa vykonáva ako jeden celok: najprv sa pripravia všetky obrazy, potom sa zastavia kontajnery aplikácie. Každý kontajner sa zálohuje a jeho záloha sa overí. Až potom sa nahradia systémové disky rootfs. Kontajnery sa spúšťajú postupne a každý prejde kontrolou stavu služby. Ak niektorý zlyhá, všetky kontajnery sa obnovia z jednej sady záloh, aby databáza aj aplikácia zodpovedali rovnakému okamihu."
"chartCode":"flowchart TB\n P[\"{{prepare}}\"] --> S[\"{{stop}}\"]\n S --> B[\"{{backup}}\"]\n B --> R[\"{{replace}}\"]\n R --> H{\"{{healthy}}\"}\n H -- \"{{yes}}\" --> C[\"{{commit}}\"]\n H -- \"{{no}}\" --> X[\"{{rollback}}\"]",
"Súprava nainštalovaná v jednom postupe, napríklad súprava Arr, sa líši od aplikácie so závislými službami: jej kontajnery nemajú určené vzájomné poradie spúšťania.",