docs: review OCI manager documentation in all seven translations

This commit is contained in:
Jonatan
2026-10-17 15:08:53 +02:00
parent ce1a3de719
commit d15876d940
60 changed files with 15788 additions and 285 deletions
@@ -0,0 +1,171 @@
{
"meta": {
"title": "Ako sa prispôsobí obraz OCI | ProxMenux",
"description": "Od repozitára obrazu a jeho súboru Compose cez skontrolovateľnú šablónu a plán nasadenia až po natívny LXC v Proxmox VE, bez Dockeru v kontajneri."
},
"header": {
"title": "Ako sa prispôsobí obraz OCI",
"description": "Od repozitára obrazu a jeho súboru Compose cez skontrolovateľnú šablónu a plán nasadenia až po natívny LXC, bez inštalácie Dockeru v kontajneri.",
"section": "OCI manager Apps"
},
"sections": [
{
"id": "pipeline",
"title": "Postup prispôsobenia",
"blocks": [
{
"mermaid": {
"chartCode": "flowchart LR\n A[\"{{repo}}\"] --> B[\"Compose + README\"]\n B --> C[\"{{converter}}\"]\n C --> D[\"{{template}}\"]\n D --> E{\"{{blockers}}\"}\n E -- \"{{no}}\" --> F[\"{{review}}\"]\n F --> D\n E -- \"{{yes}}\" --> G[\"{{plan}}\"]\n G --> H[\"pct create\"]\n H --> I[\"{{lxc}}\"]",
"labels": {
"repo": "Repozitár obrazu",
"converter": "Konvertor",
"template": "Šablóna JSON",
"blockers": "Bez prekážok?",
"no": "Nie",
"yes": "Áno",
"review": "Kontrola / overlay",
"plan": "Plán nasadenia",
"lxc": "Natívny LXC"
}
}
},
{
"p": "Konvertor načíta obraz a súbor Compose zverejnené projektom a vytvorí šablónu JSON. Ak niektoré požiadavky ešte nie sú prispôsobené a bránia inštalácii, šablóna pred zverejnením v katalógu prejde kontrolou. Súbor overených úprav, nazývaný overlay, tieto prekážky vyrieši. Na inštaláciu sa ponúkajú iba šablóny bez nevyriešených prekážok."
}
]
},
{
"id": "template",
"title": "Čo šablóna zachováva",
"blocks": [
{
"cards": {
"items": [
{
"icon": "archive",
"title": "Identita obrazu",
"body": "Repozitár, priebežne aktualizovaná značka, architektúra, zistený digest a revízia zdroja."
},
{
"icon": "braces",
"title": "Kontrakt kontajnera",
"body": "Entrypoint, Cmd, prostredie, používateľ, pracovný adresár, signál na zastavenie, porty a zväzky."
},
{
"icon": "layers",
"title": "Prispôsobenie pre Proxmox VE",
"body": "Zdroje, zabezpečenie, prípojné body, zariadenia, sysctls, kontroly stavu a potrebné úpravy pre každú položku vrátane ich zdôvodnenia."
},
{
"icon": "shield",
"title": "Kompatibilita",
"body": "Podporované kľúče, neprispôsobené požiadavky brániace inštalácii a stav každej kontroly."
}
]
}
}
]
},
{
"id": "sources",
"title": "OCI poskytuje proces, Compose poskytuje prostredie",
"blocks": [
{
"table": {
"headers": [
"Zdroj",
"Príklad",
"Natívny výsledok"
],
"rows": [
[
"Metadáta OCI",
"<code>Entrypoint</code>, <code>Cmd</code>, <code>User</code>",
"Proxmox VE ich importuje pri vytváraní CT"
],
[
"Docker Compose",
"<code>environment</code>, <code>volumes</code>, <code>devices</code>",
"Záznamy prostredia LXC, <code>mpN</code> a <code>devN</code>"
],
[
"Profil ProxMenux",
"GPU, kontrola stavu, prihlasovacie údaje",
"Otázky a overené úpravy"
],
[
"Používateľ",
"VMID, úložisko, sieť",
"Kontrakt inštancie"
]
]
}
}
]
},
{
"id": "install",
"title": "Čo sa deje počas inštalácie",
"blocks": [
{
"steps": {
"items": [
{
"title": "Zistiť konkrétny obraz",
"body": "Vyhľadá sa obraz v registri, vyberie sa architektúra hostiteľa a zaznamená sa konkrétny digest, na ktorý odkazuje priebežne aktualizovaná značka."
},
{
"title": "Stiahnuť a overiť",
"body": "Skopeo stiahne obraz ako archív OCI. Pred vytvorením akýchkoľvek prostriedkov sa každá vrstva overí podľa jej digestu a rozbalí. Ak je stiahnutý súbor poškodený, sťahovanie sa ešte raz zopakuje, až potom sa inštalácia zastaví."
},
{
"title": "Vytvoriť súborový systém",
"body": "<code>pct create</code> vytvorí rootfs z archívu a zachová oficiálne metadáta procesu obrazu."
},
{
"title": "Pripojiť prostriedky",
"body": "Pripoja sa deklarované zväzky a zariadenia a nastavia sa sieť, prostredie a bezpečnostné profily."
},
{
"title": "Konzola",
"body": "Výstup konzoly kontajnera sa uchováva na hostiteľovi. Konzola Proxmox VE otvorí shell, ak ho obraz obsahuje."
},
{
"title": "Overiť",
"body": "Pri prvom spustení sa čaká na pridelenie adresy a odpoveď služby. V prípade zlyhania sa inštalácia neoznačí za úspešnú."
},
{
"title": "Zaznamenať konfiguráciu",
"body": "Výsledná konfigurácia sa uloží do kontraktu inštancie, ktorý sa používa pri aktualizáciách a opätovnom vytvorení."
}
]
}
}
]
},
{
"id": "example",
"title": "Príklad: obraz s /config a /downloads",
"intro": "Bežná definícia Compose a konfigurácia Proxmox VE, ktorá z nej vznikne. Cesty očakávané aplikáciou sa nemenia.",
"blocks": [
{
"codeGrid": {
"items": [
{
"title": "Docker Compose",
"code": "image: lscr.io/linuxserver/example:latest\nenvironment:\n - PUID=1000\n - PGID=1000\nvolumes:\n - config:/config\n - /srv/downloads:/downloads\nports:\n - 8080:8080"
},
{
"title": "/etc/pve/lxc/VMID.conf (úryvok)",
"code": "entrypoint: /init\nmp0: local-lvm:vm-VMID-disk-1,mp=/config,backup=1,size=8G\nmp1: /srv/downloads,mp=/downloads\nnet0: name=eth0,bridge=vmbr0,ip=dhcp,type=veth\nlxc.environment.runtime: PUID=1000\nlxc.environment.runtime: PGID=1000"
}
]
}
},
{
"p": "<code>mp0</code> je druhý disk patriaci kontajneru, na zvolenom úložisku pomenovaný <code>vm-VMID-disk-N</code>. Pripája sa do <code>/config</code> a pri <code>backup=1</code> je súčasťou zálohy kontajnera. <code>mp1</code> nevytvára disk: pripája adresár hostiteľa <code>/srv/downloads</code> do <code>/downloads</code> v LXC. Port 8080 sa nemapuje: LXC má vlastnú adresu a služba odpovedá na nej."
}
]
}
]
}
@@ -0,0 +1,278 @@
{
"meta": {
"title": "Inštalácia obrazu mimo katalógu | ProxMenux",
"description": "Prispôsobte obraz OCI zo súboru Compose, URL, príkazu docker run alebo odkazu na obraz a pred inštaláciou skontrolujte, čo ProxMenux dokáže reprodukovať."
},
"header": {
"title": "Nainštalovať obraz mimo katalógu",
"description": "Vlastný obraz sa prispôsobí zo súboru Compose, príkazu docker run alebo iba z odkazu na obraz. Výsledok sa zobrazí na kontrolu skôr, než sa vytvorí akýkoľvek LXC.",
"section": "OCI manager Apps"
},
"sections": [
{
"id": "intro",
"blocks": [
{
"calloutInfo": {
"title": "Rovnaký konvertor a inštalátor",
"body": "Voľba <strong>Nainštalovať obraz mimo katalógu</strong> používa rovnaký konvertor a inštalátor ako šablóny katalógu. Rozdiel je v tom, že kontrakt sa vytvorí až vtedy zo zadanej definície a overí sa pred vytvorením akéhokoľvek LXC."
}
}
]
},
{
"id": "sources",
"title": "Ako je obraz opísaný",
"intro": "Úvodná obrazovka sa pýta, ako je obraz opísaný. Štyri možnosti poskytnú definíciu na prispôsobenie, piata používa iba názov obrazu a ďalšie tri načítajú už napísaný oci-compose.",
"blocks": [
{
"table": {
"headers": [
"Voľba",
"Čo sa načíta"
],
"rows": [
[
"Vložiť súbor Compose do terminálu",
"Vložte obsah YAML do terminálu a ukončite ho pomocou Ctrl+D."
],
[
"Načítať súbor Compose z tohto hostiteľa",
"Cesta na uzle, predvolene <code>/root/docker-compose.yml</code>. Súbor musí existovať a nesmie presiahnuť 256 KiB."
],
[
"Stiahnuť súbor Compose z adresy",
"Adresa <code>http://</code> alebo <code>https://</code>, ktorá poskytuje nespracovaný YAML. Stiahne sa najviac 256 KiB."
],
[
"Vložiť príkaz docker run do terminálu",
"Príkaz zverejnený projektom. Prispôsobia sa porty, prostredie, zväzky, zariadenia, capabilities, používateľ, zdieľaná pamäť a ďalšie podporované voľby."
],
[
"Iba odkaz na obraz, bez súboru Compose",
"Odkaz, napríklad <code>ghcr.io/user/application:latest</code>. Vyhľadá sa obraz v registri a zachovajú sa jeho metadáta OCI."
],
[
"Vložiť oci-compose do terminálu",
"Vložte JSON do terminálu a ukončite ho pomocou Ctrl+D. Nekonvertuje sa: overí sa a nainštaluje tak, ako je napísaný."
],
[
"Načítať oci-compose z tohto hostiteľa",
"Súbor JSON na uzle, predvolene <code>/root/oci-compose.json</code>, s veľkosťou najviac 2 MiB."
],
[
"Stiahnuť oci-compose z adresy",
"Adresa <code>http://</code> alebo <code>https://</code>, ktorá poskytuje súbor JSON. Stiahnu sa najviac 2 MiB."
]
]
}
},
{
"figure": {
"src": "/oci-manager/custom-source-menu.png",
"alt": "Menu výberu spôsobu opisu obrazu mimo katalógu",
"caption": "Spôsoby opisu obrazu mimo katalógu."
}
}
]
},
{
"id": "reference-only",
"title": "Čo poskytuje samotný odkaz na obraz",
"intro": "Obraz obsahuje metadáta svojho procesu, nie však celé prostredie, ktoré zvyčajne dopĺňa súbor Compose.",
"blocks": [
{
"table": {
"headers": [
"Načítané z obrazu",
"Nie je v obraze",
"Dôsledok"
],
"rows": [
[
"<code>Entrypoint</code>, <code>Cmd</code>, <code>User</code>, <code>WorkingDir</code> a zahrnuté prostredie",
"Premenné uvedené iba v dokumentácii",
"Pridajú sa pri inštalácii alebo cez Upraviť"
],
[
"Zväzky deklarované obrazom",
"Adresáre hostiteľa uvedené iba v súbore Compose",
"Ďalšie cesty sa pridajú pred inštaláciou"
],
[
"Porty <code>EXPOSE</code>",
"URL, protokol alebo funkčná kontrola služby",
"Potvrdí sa port a spôsob kontroly služby"
],
[
"Architektúry a digest v registri",
"Zariadenia, oprávnenia alebo externé závislosti",
"Bez požiadavky v definícii sa nepovolia"
]
]
}
}
]
},
{
"id": "review",
"title": "Kontrola pred inštaláciou",
"intro": "Po prispôsobení definície ProxMenux zobrazí, ako ju pochopil, ešte pred otázkami na VMID, zdroje a úložisko.",
"blocks": [
{
"steps": {
"items": [
{
"title": "Analyzovať",
"body": "Načítajú sa služby, obraz, porty, cesty, prostredie, zariadenia, zabezpečenie a kontroly stavu."
},
{
"title": "Overiť obraz v registri",
"body": "Obraz musí existovať v registri a zobrazia sa jeho publikované architektúry. Súkromný register sa načíta pomocou účtu uloženého pre daný register."
},
{
"title": "Uviesť nepoužité voľby",
"body": "Vypíšu sa štítky, siete Docker, nastavenia Swarm a ďalšie kľúče, ktoré nemajú na LXC vplyv."
},
{
"title": "Zablokovať voľby bez bezpečného ekvivalentu",
"body": "Kľúče bez bezpečného ekvivalentu sa zobrazia v časti <strong>Voľby bez ekvivalentu</strong> a inštalácia nepokračuje. Žiadny sa nevynechá bez upozornenia."
},
{
"title": "Vyžiadať tajné údaje",
"body": "Premenné, ktorých názov označuje heslo, token alebo kľúč, sa pri inštalácii vyžiadajú ako citlivé údaje."
}
]
}
},
{
"figure": {
"src": "/oci-manager/custom-review.png",
"alt": "Súhrn interpretácie súboru Compose v ProxMenux",
"caption": "Súhrn zobrazený pred otázkami na VMID a zdroje."
}
},
{
"p": "Po potvrdení súhrnu nasleduje rovnaký postup ako v katalógu: názov, predvolený alebo rozšírený režim, VMID, CPU, pamäť, sieť, spúšťanie s uzlom, trvalé a ďalšie cesty, kompatibilné zariadenia a záverečný súhrn."
}
]
},
{
"id": "examples",
"title": "Príklady vstupu",
"blocks": [
{
"codeGrid": {
"items": [
{
"title": "Compose",
"code": "services:\n app:\n image: ghcr.io/example/app:latest\n ports:\n - \"8080:8080\"\n volumes:\n - ./config:/config\n - /srv/media:/media\n environment:\n TZ: Europe/Madrid"
},
{
"title": "docker run",
"code": "docker run -d \\\n --name app \\\n -p 8080:8080 \\\n -e TZ=Europe/Madrid \\\n -v app-config:/config \\\n -v /srv/media:/media \\\n ghcr.io/example/app:latest"
}
]
}
}
]
},
{
"id": "oci-compose",
"title": "Ručne napísaný oci-compose",
"intro": "oci-compose je súbor JSON, z ktorého sa inštaluje aplikácia. Katalóg uchováva jeden pre každú aplikáciu. Rovnaký formát možno napísať ručne a nainštalovať touto voľbou.",
"blocks": [
{
"p": "V ručne napísanom súbore autor určí obraz, porty, premenné, zväzky a otázky pri inštalácii. ProxMenux pri načítaní doplní zvyšok. Formát vyjadrí aj to, čo Compose neobsahuje: text otázky, heslo vytvorené pri inštalácii, profil GPU, vlastníka každého zväzku, kontrolu prvého spustenia alebo prihlasovacie údaje zobrazené na konci."
},
{
"steps": {
"items": [
{
"title": "Overiť",
"body": "Súbor s chybami sa nenainštaluje. Každá chyba označí príslušné pole; pri neplatnom JSON sa uvedie riadok a stĺpec."
},
{
"title": "Skontrolovať",
"body": "Platný súbor zobrazí, čo nainštaluje: obraz, webovú adresu, porty, trvalé cesty, premenné požadované pri inštalácii a súbory, ktoré zapíše."
},
{
"title": "Nainštalovať",
"body": "Inštalácia je rovnaká ako pri aplikáciách katalógu, s predvolenými alebo rozšírenými nastaveniami."
}
]
}
},
{
"calloutWarning": {
"title": "Súbor, ktorý určuje oprávnenia",
"body": "oci-compose určuje, čo sa v kontajneri pripojí a s akými oprávneniami. Kontrola to ukáže pred inštaláciou: používajte iba súbory z dôveryhodných zdrojov."
}
},
{
"p": "Formát je opísaný po blokoch s dvoma úplnými príkladmi v <readmeLink>README enginu OCI</readmeLink>. Rovnakým spôsobom možno načítať aj záznam inštalácie: použije sa iba pôvodná šablóna, nie odpovede z danej inštalácie."
}
]
},
{
"id": "private-registries",
"title": "Obrazy v súkromných registroch",
"intro": "Obraz zo súkromného registra, napríklad súkromný balík GitHub alebo repozitár Docker Hub, sa načíta pomocou účtu uloženého v ProxMenux.",
"blocks": [
{
"steps": {
"items": [
{
"title": "Register odmietne prístup k obrazu",
"body": "Ak register oznámi, že obraz vyžaduje účet, kontrola ponúkne prihlásenie a potom obraz načíta znova."
},
{
"title": "Prihlásiť sa",
"body": "Používateľské meno a heslo alebo token s oprávnením na stiahnutie obrazu. Register ich overí a uložia sa iba pri úspešnom overení."
},
{
"title": "Nainštalovať a udržiavať aktuálne",
"body": "Účet sa použije na stiahnutie obrazu pri inštalácii aj pri aktualizáciách, úpravách, opätovnom vytvorení, vo watchdogu a pri kontrole aktualizácií Monitora na ľubovoľnom uzle klastra."
}
]
}
},
{
"p": "<strong>Účty registrov</strong> v hlavnom menu OCI manager Apps zobrazujú uložené účty podľa registra a používateľa, nikdy nie ich tajné údaje. Z každého účtu možno overiť, stiahnuť alebo nainštalovať obraz a aktualizovať alebo odstrániť prihlasovacie údaje."
},
{
"list": {
"items": [
"GitHub (<code>ghcr.io</code>): používateľ je účet GitHub a heslo je osobný prístupový token s oprávnením <code>read:packages</code>.",
"Docker Hub (<code>docker.io</code>): používateľ je účet Docker Hub a heslo je prístupový token s oprávnením na čítanie.",
"Ostatné registre, aj s vlastným portom, napríklad <code>registry.example.com:5000</code>: používateľské meno a heslo alebo token poskytnuté daným registrom."
]
}
},
{
"calloutInfo": {
"title": "Kde sa účty ukladajú",
"body": "V <code>/etc/pve/priv/proxmenux/registry-auth.json</code>, ktorý môže čítať iba root, v rovnakom adresári ako heslá úložísk Proxmox. <code>/etc/pve</code> zdieľajú všetky uzly klastra, preto sa účet pridaný na jednom uzle používa na všetkých. Záloha hostiteľa tento súbor obsahuje a odinštalovanie ProxMenux ho odstráni zo všetkých uzlov."
}
}
]
},
{
"id": "limits",
"title": "Definície, ktoré sa nenainštalujú",
"blocks": [
{
"list": {
"items": [
"Dockerfile bez publikovaného obrazu: obraz sa musí najprv zostaviť a zverejniť v registri OCI.",
"Súbor Compose s viacerými službami sa zablokuje, pretože táto voľba inštaluje iba jednu službu do jedného kontajnera, aj keď viaceré služby používajú rovnaký obraz.",
"<code>configs</code>, externé tajné údaje alebo formáty zariadení, ktoré nemožno jednoznačne prispôsobiť.",
"Nahradenia shellu, napríklad <code>$(command)</code>: namiesto nich treba zapísať výslednú hodnotu.",
"Nerozpoznané voľby <code>docker run</code> a <code>--env-file</code>: namiesto nich použite súbor Compose s výslovne uvedenými hodnotami."
]
}
}
]
}
]
}
@@ -0,0 +1,392 @@
{
"meta": {
"title": "Zariadenia a zrýchlenie ProxMenux",
"description": "Ako OCI manager Apps sprístupňuje GPU, NVIDIA, Coral, USB, FUSE a ďalšie zariadenia kontajneru OCI ako overené natívne zdroje Proxmox VE."
},
"header": {
"title": "Zariadenia a akcelerácia",
"description": "GPU, NVIDIA, Coral, USB, FUSE a blokové zariadenia sa stávajú overenými natívnymi zdrojmi Proxmox VE pre kontajner.",
"section": "OCI manager Apps"
},
"sections": [
{
"id": "principle",
"title": "Zariadenie, ktoré aplikácia potrebuje, nie celý hostiteľ",
"blocks": [
{
"p": "Zariadenie požadované súborom Compose alebo aplikačným profilom sa stáva konkrétnou položkou <code>devN</code> alebo LXC pripojením. Požiadanie o GPU, USB zariadenie alebo Coral nerobí kontajner privilegovaným."
},
{
"flow": {
"nodes": [
{
"label": "Inventár hostiteľa",
"detail": "/dev/dri/renderD128\nGID 993 · Intel"
},
{
"label": "ProxMenux",
"detail": "výrobca a\noverenie oprávnení"
},
{
"label": "LXC",
"detail": "rovnaké zariadenie\nefektívne GID"
}
]
}
}
]
},
{
"id": "origin",
"title": "Odkiaľ pochádza požiadavka na zariadenie",
"blocks": [
{
"table": {
"headers": [
"Zdroj",
"Čo sa číta",
"Čo robí inštalátor"
],
"rows": [
[
"Docker Compose",
"<code>devices</code>, <code>group_add</code>, <code>deploy.resources</code> a NVIDIA žiadosti",
"Každá požiadavka sa stáva požiadavkou zariadenia zobrazenou na preskúmanie"
],
[
"Katalógový profil",
"Podpora GPU, Coral, OpenCL, USB alebo FUSE, ktorú aplikácia skutočne má",
"Ponúkajú sa len možnosti overené pre tento obraz"
],
[
"Metadáta a dokumentácia obrazu",
"VA-API, Selkies, LinuxServer mods alebo NVIDIA runtime",
"Pridávajú sa zdokumentované premenné a príprava"
],
[
"Výber užívateľa",
"iba CPU, Intel/AMD, OpenCL, NVIDIA alebo voliteľné zariadenie",
"Výber je uložený v inštančnej zmluve"
]
]
}
},
{
"calloutWarning": {
"title": "Zistené zariadenia sa nepripájajú automaticky",
"body": "Na hostiteľovi sa vytvorí inventár, ale ponúknu a pripoja sa len zariadenia deklarované v súbore Compose alebo kompatibilnom profile. GPU, USB adaptér či Coral prítomný na hostiteľovi sa nesprístupní každému LXC."
}
}
]
},
{
"id": "identify",
"title": "Ako sa identifikuje hostiteľské zariadenie",
"intro": "Pred úpravou LXC sa zariadenie číta na hostiteľovi a zodpovedá zvolenému profilu.",
"blocks": [
{
"table": {
"headers": [
"Typ",
"Identita",
"Overenie"
],
"rows": [
[
"Intel/AMD DRM",
"<code>/dev/dri/renderD*</code> a <code>/sys/class/drm/NODE/device/vendor</code>",
"Znakové zariadenie s výrobcom <code>0x8086</code> (Intel) alebo <code>0x1002</code> (AMD)"
],
[
"AMD OpenCL",
"Renderovací uzol a <code>/dev/kfd</code>, ak ho profil potrebuje",
"Existencia, typ, výrobca, oprávnenia a deklarovaná zlučiteľnosť"
],
[
"AMD ROCm",
"Renderovací uzol, <code>/dev/kfd</code> a generácia, ktorú výpočtový ovládač hlási v <code>/sys/class/kfd/kfd/topology/nodes/*/properties</code>",
"Generácia, pre ktorú obraz ROCm aplikácie obsahuje výpočtové jadrá — uvedené GPU RDNA2 a novšie — sa ponúkne bez úprav. Ostatné GPU týchto rodín, napríklad Radeon 680M a 780M, sa ponúkajú ako experimentálne a nikdy nie sú navrhnutou voľbou: ROCm ich oficiálne nepodporuje, aplikácia ich prezentuje ako generáciu danej rodiny (<code>HSA_OVERRIDE_GFX_VERSION</code>) a inštalátor pred stiahnutím väčšieho obrazu vyžiada potvrdenie. Staršia GPU, napríklad integrovaná grafika Ryzen 5000U, sa neponúkne a Immich ponechá rozpoznávanie na CPU."
],
[
"NVIDIA",
"<code>nvidia-smi</code> a <code>nvidia-container-cli</code>",
"GPU, UUID, PCI bus, verzia ovládača, Toolkit, uzly <code>/dev/nvidia*</code>, binárne súbory a knižnice"
],
[
"Coral PCIe/M.2",
"<code>/dev/apex_N</code> a jeho odkaz na <code>/sys/dev/char/MAJOR:MINOR</code>",
"Uzol znakového zariadenia, čísla major/minor, vlastník, GID a oprávnenia"
],
[
"USB a sériové",
"<code>/dev/ttyUSB*</code>, <code>/dev/ttyACM*</code> alebo <code>/dev/bus/usb/BBB/DDD</code>",
"Uzol znakového zariadenia; pri USB aj výrobca, produkt a sériové číslo, ak ich sysfs zverejňuje"
],
[
"KVM, TUN, FUSE, video a generické SCSI",
"<code>/dev/kvm</code>, <code>/dev/net/tun</code>, <code>/dev/fuse</code>, <code>/dev/videoN</code> alebo <code>/dev/sgN</code>",
"Podporovaná cesta, typ uzla a účinné práva"
],
[
"Optická mechanika",
"<code>/dev/srN</code>",
"Blokové zariadenie"
]
]
}
}
]
},
{
"id": "install",
"title": "Čo sa stane počas inštalácie",
"blocks": [
{
"steps": {
"items": [
{
"title": "Šablóna ponúka svoje profily",
"body": "Napríklad len CPU, Intel/AMD VA-API, AMD OpenCL, Intel OpenCL alebo NVIDIA. Možnosti patria k obrazu, nie k spoločnému menu."
},
{
"title": "Vyberie sa profil",
"body": "Určuje uzly zariadení, prostredie, mody alebo runtime, ktoré aplikácia potrebuje."
},
{
"title": "Navrhuje sa cesta",
"body": "Pre DRM, <code>/dev/dri/renderD128</code>, ktoré môžu byť zmenené na hostiteľa s niekoľkými renderových uzlov. Pre USB alebo sériový je vybraný konkrétny uzol."
},
{
"title": "Overenie",
"body": "Existencia, typ, povolený výrobca, povolenia a GID sú kontrolované. Nesúlad zastaví operáciu."
},
{
"title": "Zapíše sa kontrakt",
"body": "Cesta, režim, GID, zápis a profil sa zaznamenávajú pre aktualizácie a opätovné vytvorenia."
},
{
"title": "Pripojenie a skúška",
"body": "<code>pct set</code> pridáva položku <code>devN</code> a prístup sa potom kontroluje vo vnútri LXC. LinuxServer obrazy sú tiež kontrolované ako používateľ <code>abc</code>."
}
]
}
}
]
},
{
"id": "config",
"title": "Ako sa objavuje v konfigurácii LXC",
"intro": "Ilustračné hodnoty: <code>dev0</code> a <code>dev1</code> sú voľné pozície priradené Proxmox VE. <code>renderD128</code>, <code>apex_0</code> a GID závisia od hardvéru uzla.",
"blocks": [
{
"codeGrid": {
"items": [
{
"title": "Intel/AMD VA-API",
"code": "dev0: path=/dev/dri/renderD128,mode=0660,gid=993,deny-write=0"
},
{
"title": "Coral PCIe/M.2",
"code": "dev0: path=/dev/apex_0,mode=0660,gid=GID,deny-write=0"
},
{
"title": "Špecifické USB zariadenie",
"code": "dev0: path=/dev/bus/usb/003/004,mode=0660,gid=GID,deny-write=0"
},
{
"title": "AMD OpenCL",
"code": "dev0: path=/dev/dri/renderD128,mode=0660,gid=GID,deny-write=0\ndev1: path=/dev/kfd,mode=0660,gid=GID,deny-write=0"
}
]
}
},
{
"p": "GID sa načíta na hostiteľovi pomocou <code>stat</code> a zapíše do položky <code>devN</code>; nepredpokladá sa, že skupiny <code>render</code> a <code>video</code> majú pevné číslo. Zariadenie má v LXC rovnakú cestu <code>/dev</code>, na ktorej ho vyhľadávajú vlastné mechanizmy aplikácie."
}
]
},
{
"id": "profiles",
"title": "Profily, ktoré môže obraz ponúknuť",
"blocks": [
{
"table": {
"headers": [
"Profil",
"Výsledná konfigurácia",
"Ponúknuté, keď"
],
"rows": [
[
"Intel/AMD VA-API",
"Renderovací uzol <code>/dev/dri</code>",
"Aplikácia podporuje video zrýchlenie"
],
[
"OpenCL",
"Render uzol, <code>/dev/kfd</code> v prípade potreby a oficiálny mod",
"Obraz alebo profil ho dokumentuje"
],
[
"NVIDIA",
"Zariadenia a knižnice ovládača na hostiteľovi",
"Hostiteľ má funkčný ovládač a NVIDIA Container Toolkit"
],
[
"Coral",
"<code>/dev/apex_0</code> alebo zbernica USB",
"Profil vyhlasuje Coral podporu (Frigate)"
],
[
"USB, sériové, FUSE",
"Jediné zariadenie, validovaný strom alebo funkcia LXC",
"Zmluva o ňu žiada"
]
]
}
}
]
},
{
"id": "nvidia",
"title": "NVIDIA",
"blocks": [
{
"calloutWarning": {
"title": "Požiadavka na uzol: NVIDIA Container Toolkit",
"body": "Funkčný ovládač na Proxmox VE nestačí na sprístupnenie GPU NVIDIA obrazu OCI. OCI manager Apps používa <code>nvidia-container-cli</code> zo súpravy NVIDIA Container Toolkit na identifikáciu zariadení a získanie binárnych súborov a knižníc zodpovedajúcich načítanému ovládaču."
}
},
{
"p": "<nvidiaLink>Inštalátor NVIDIA nástroja ProxMenux</nvidiaLink> nainštaluje NVIDIA Container Toolkit z oficiálneho repozitára NVIDIA spolu s ovládačom. Skontroluje jeho štyri balíky, overí <code>nvidia-container-cli</code> a zaznamená výsledok do denníka zmien <auditLink>Audit a správa</auditLink>."
},
{
"p": "Tieto dva príkazy na hostiteľovi ukazujú, či je k dispozícii ovládač a súbor nástrojov:"
},
{
"shell": {
"code": "nvidia-smi -L\nnvidia-container-cli --version"
}
},
{
"p": "Na hostiteľovi, kde bol ovládač nainštalovaný inými prostriedkami, je Toolkit nainštalovaný z oficiálneho stabilného úložiska:"
},
{
"shell": {
"code": "apt-get update\napt-get install -y --no-install-recommends ca-certificates curl gnupg2\n\ncurl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \\\n | gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg\n\ncurl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \\\n | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \\\n > /etc/apt/sources.list.d/nvidia-container-toolkit.list\n\napt-get update\napt-get install -y nvidia-container-toolkit libnvidia-container-tools"
}
},
{
"p": "Inventár, ktorý používa OCI manager Apps, je výstupom príkazu:"
},
{
"shell": {
"code": "nvidia-container-cli list --device all --libraries --binaries --firmwares --ipcs"
}
},
{
"calloutInfo": {
"title": "Konfigurácia Runtime Docker nie je zahrnutá",
"body": "Kontajnery sú natívne LXC a nepoužívajú démona Docker, takže <code>nvidia-ctk runtime configure --runtime=docker</code> nehrá žiadnu úlohu: ProxMenux priamo volá <code>nvidia-container-cli</code> a zapíše zariadenia a pripojenia LXC. Príkazy a podporované platformy sú uvedené v <toolkitLink>návode na inštaláciu NVIDIA Container Toolkit</toolkitLink>."
}
},
{
"cards": {
"items": [
{
"icon": "cpu",
"title": "Inventár z ovládača",
"body": "<code>nvidia-container-cli</code> uvádza uzly zariadenia, binárne súbory, firmware a knižnice nainštalovaného ovládača."
},
{
"icon": "refresh",
"title": "Bez pevnej verzie",
"body": "Šablóna nepomenuje súbory knižnice. Profil je generovaný z aktuálneho hostiteľa."
},
{
"icon": "shield",
"title": "Pripojenia iba na čítanie",
"body": "Hostiteľské knižnice sú namontované iba na čítanie namiesto kopírovania do kontajnera."
},
{
"icon": "hardDrive",
"title": "Zmeny ovládača",
"body": "Po zmene ovládača sa inventár znovu vygeneruje pred začiatkom postihnutých LXC."
}
]
}
},
{
"code": {
"title": "Výsledok NVIDIA (zjednodušený)",
"code": "devN: path=/dev/nvidia0,...\ndevN: path=/dev/nvidiactl,...\ndevN: path=/dev/nvidia-uvm,...\nlxc.mount.entry: HOST_LIBRARY CONTAINER_LIBRARY none ro,bind,create=file 0 0"
}
},
{
"p": "Sprístupniť len <code>/dev/nvidia0</code> nestačí. Komponenty užívateľského priestoru načítaného ovládača sú namontované len na čítanie a <code>nvidia-smi</code> potom beží vnútri LXC pre porovnanie GPU, UUID, PCI zbernice a verzie s inventárom hostiteľa."
}
]
},
{
"id": "usb",
"title": "USB, sériové a USB Coral",
"blocks": [
{
"calloutWarning": {
"title": "Číslovanie USB sa môže zmeniť",
"body": "Cesta ako <code>/dev/bus/usb/003/004</code> sa môže zmeniť po opätovnom pripojení zariadenia alebo reštarte hostiteľa. Profil zaznamená výrobcu, produkt a sériové číslo, ak sú dostupné, ale nová adresa zbernice sa automaticky nepremapuje."
}
},
{
"p": "Periférne zariadenie je daný jeho konkrétnym uzlom: <code>/dev/ttyUSB0</code>, <code>/dev/ttyACM0</code>, <code>/dev/apex_0</code> alebo <code>/dev/bus/usb/BBB/DDD</code>. Sprístupnenie celého <code>/dev</code> nie je akceptovaný. Coral je ponúkaný len pre aplikácie, ktorých profil deklaruje."
}
]
},
{
"id": "trees",
"title": "Stromy zariadení a funkcie LXC",
"blocks": [
{
"table": {
"headers": [
"Žiadosť",
"Výsledná konfigurácia",
"Rozsah"
],
"rows": [
[
"<code>/dev/dvb</code>, <code>/dev/snd</code> alebo <code>/dev/bus/usb</code>",
"Každý uzol znakového zariadenia v strome dostane vlastnú položku <code>devN</code> s režimom a GID hostiteľa",
"Len požadovaný strom, nie zvyšok <code>/dev</code>"
],
[
"<code>/dev/fuse</code>",
"Uzol a, keď ho profil potrebuje, funkcia <code>fuse=1</code>",
"Samotná FUSE nepublikuje pripojenia do iných LXC"
],
[
"<code>/dev/net/tun</code>",
"Položka <code>devN</code> s rovnakou cestou vo vnútri LXC",
"VPN alebo konfigurácia siete zostáva v aplikácii"
],
[
"<code>/dev/kvm</code>",
"Potvrdená položka <code>devN</code>",
"Ponúkané iba vtedy, keď o to zmluva požiada"
]
]
}
}
]
},
{
"id": "security",
"title": "Potvrdenie podľa úrovne rizika",
"blocks": [
{
"p": "Konkrétne zariadenia, voliteľné privilégium, požadované privilégium, AppArmor alebo seccomp relaxácia a prístup k mennému priestoru PID hostiteľa sa považujú za samostatné prípady, nie pod jedným generickým privilegovaným označením. Každá možnosť s rizikom sa vysvetľuje a potvrdzuje počas inštalácie."
}
]
}
]
}
+213
View File
@@ -0,0 +1,213 @@
{
"meta": {
"title": "OCI manager Apps | ProxMenux",
"description": "Spúšťajte oficiálne obrazy OCI ako natívne kontajnery LXC v Proxmox VE, s trvalými údajmi, prístupom k zariadeniam, aplikáciami s viacerými kontajnermi a transakčnými aktualizáciami."
},
"header": {
"title": "OCI manager Apps",
"description": "Oficiálne obrazy OCI bežia ako natívne kontajnery LXC v Proxmox VE. Používa sa rovnaký obraz, aký zverejňuje jeho správca; ProxMenux vytvorí prostredie, ktoré by okolo neho pripravil Docker Compose.",
"section": "OCI manager Apps"
},
"sections": [
{
"id": "model",
"blocks": [
{
"calloutInfo": {
"title": "Jeden obraz OCI, jeden natívny LXC",
"body": "V kontajneroch nebeží Docker Engine. Proxmox VE importuje súborový systém obrazu a jeho metadáta OCI. Aplikácia sa stane hlavným procesom natívneho LXC, ktorý sa spravuje rovnakými nástrojmi ako ostatné kontajnery uzla."
}
},
{
"flow": {
"nodes": [
{
"label": "Zdroj",
"detail": "Obraz OCI\nCompose a dokumentácia"
},
{
"label": "ProxMenux",
"detail": "Kontrakt JSON\noverenie a plánovanie"
},
{
"label": "Proxmox VE",
"detail": "Natívny LXC\nzväzky a zariadenia"
}
],
"caption": "Používa sa pôvodná aplikácia; jej prostredie sa deklaratívne opíše a následne znovu vytvorí."
}
}
]
},
{
"id": "where",
"title": "Kde ho nájdete",
"intro": "Na uzle Proxmox otvorte ako root položku <strong>OCI manager Apps (Technology Preview)</strong> v hlavnom menu ProxMenux. Úvodná obrazovka ponúka:",
"blocks": [
{
"list": {
"items": [
"<strong>Vyhľadať aplikácie</strong> – vyhľadávanie podľa názvu v celom katalógu.",
"<strong>Všetky aplikácie</strong> – úplný katalóg s počtom aplikácií.",
"<strong>Spravovať nainštalované aplikácie OCI</strong> – aktualizovať, upravovať, odstraňovať alebo obnovovať existujúce inštalácie.",
"<strong>Účty registrov</strong> – správa účtov na inštaláciu a aktualizáciu obrazov zo súkromných registrov.",
"<strong>Nainštalovať obraz mimo katalógu</strong> – prispôsobiť súbor Compose, príkaz <code>docker run</code> alebo odkaz na obraz.",
"Kategórie katalógu, každá s počtom aplikácií."
]
}
},
{
"figure": {
"src": "/oci-manager/main-menu.png",
"alt": "Hlavná obrazovka OCI manager Apps s vyhľadávaním, úplným katalógom, správou aplikácií, obrazmi mimo katalógu a kategóriami.",
"caption": "Hlavná obrazovka OCI manager Apps."
}
},
{
"p": "Po výbere aplikácie sa zobrazí jej opis, používaný obraz a dva režimy inštalácie. <strong>Inštalovať s predvolenými nastaveniami</strong> sa pýta len na základné voľby: úložisko, umiestnenie údajov, adresu a spustenie. <strong>Inštalovať s rozšírenými nastaveniami</strong> postupne prejde všetky rozhodnutia: VMID a zdroje, úložisko pre každú cestu, sieťový most a zariadenia."
},
{
"p": "Aplikácie, ktoré boli skutočne otestované, majú v tomto zobrazení označenie <strong>Overené</strong> a v zoznamoch značku ✓. Platí to pre testy v laboratóriu ProxMenux aj pre testy komunity."
}
]
},
{
"id": "beta",
"title": "Prečo má označenie Technology Preview",
"blocks": [
{
"p": "OCI manager Apps ponecháva označenie <strong>Technology Preview</strong>, ktoré Proxmox VE používa pre aplikačné kontajnery vytvorené z obrazov OCI. Ich podpora bola zavedená v Proxmox VE 9.1. Označenie sa týka technológie, na ktorej OCI manager Apps beží, nie jadra ProxMenuxu: správanie týchto kontajnerov sa ešte môže meniť medzi vydaniami Proxmox VE. Označenie zostane, kým Proxmox VE túto podporu neoznačí za stabilnú."
},
{
"p": "Funkcie OCI manager Apps sa testujú v laboratóriu ProxMenux: inštalácia, aktualizácia, úpravy, opätovné vytvorenie, zálohovanie, obnova, migrácia a watchdog. Každá aplikácia sa overuje samostatne. Skutočne otestované aplikácie majú označenie <strong>Overené</strong> a v zoznamoch značku ✓."
}
]
},
{
"id": "translation",
"title": "Ako Docker opisuje požiadavky a OCI manager Apps ich realizuje",
"blocks": [
{
"table": {
"headers": [
"Požiadavka",
"Vyjadrenie v Dockeri",
"Realizácia v OCI manager Apps"
],
"rows": [
[
"Spustiť aplikáciu",
"<code>image</code>, <code>entrypoint</code>, <code>command</code>",
"Rootfs obrazu OCI a hlavný proces LXC"
],
[
"Zachovať konfiguráciu",
"<code>volumes: /config</code>",
"Trvalý zväzok <code>mpN</code> zahrnutý do zálohy alebo adresár na hostiteľovi."
],
[
"Sprístupniť službu",
"<code>ports</code>",
"Vlastná adresa pre LXC a URL na prístup k službe."
],
[
"Použiť hardvér",
"<code>devices</code>, <code>group_add</code>",
"Záznamy <code>devN</code> s efektívnym GID hostiteľa a overeným profilom."
],
[
"Prepojiť závislosti",
"<code>networks</code>, <code>depends_on</code>",
"Súkromný sieťový most, pevné adresy, poradie spúšťania a kontroly stavu."
],
[
"Aktualizovať",
"Stiahnuť cez <code>pull</code> a znovu vytvoriť",
"Nový rootfs so zachovaným kontraktom trvalých údajov."
]
]
}
}
]
},
{
"id": "kept",
"title": "Čo zostáva a čo sa mení",
"blocks": [
{
"cards": {
"items": [
{
"icon": "archive",
"title": "Zachované",
"body": "Oficiálny obraz, jeho vnútorné cesty, prostredie, proces spustenia a dokumentácia používania."
},
{
"icon": "boxes",
"title": "Prispôsobené",
"body": "Prostredie behu: sieť, trvalé údaje, zariadenia, oprávnenia a závislosti využívajú natívne mechanizmy LXC v Proxmox VE."
},
{
"icon": "shield",
"title": "Bez ekvivalentu",
"body": "Voľba Compose bez bezpečného ekvivalentu sa označí ako prekážka inštalácie. Šablóny s takými prekážkami sa na inštaláciu neponúkajú a citlivé voľby vyžadujú potvrdenie v sprievodcovi."
},
{
"icon": "refresh",
"title": "Uložené",
"body": "Digest obrazu, zdroje, cesty, sieť, zariadenia a príslušnosť k zostave sa ukladajú do kontraktu inštancie. Aktualizácie aj opätovné vytvorenie tento kontrakt zachovávajú."
}
]
}
}
]
},
{
"id": "pages",
"title": "Stránky tejto časti",
"blocks": [
{
"next": {
"items": [
{
"label": "Ako sa prispôsobí obraz OCI",
"href": "/docs/oci-manager/architecture",
"tail": "Od obrazu a jeho súboru Compose k natívnemu LXC."
},
{
"label": "Inštalácia obrazu mimo katalógu",
"href": "/docs/oci-manager/custom-image",
"tail": "Súbor Compose, príkaz docker run alebo odkaz na obraz."
},
{
"label": "Údaje, cesty a sieť",
"href": "/docs/oci-manager/storage-network",
"tail": "Zväzky kontajnera, adresáre hostiteľa, pripojenia cez rclone a adresy."
},
{
"label": "Zariadenia a akcelerácia",
"href": "/docs/oci-manager/hardware",
"tail": "GPU, NVIDIA, Coral, USB a ďalšie zariadenia."
},
{
"label": "Aplikácie s viacerými kontajnermi",
"href": "/docs/oci-manager/stacks",
"tail": "Aplikácia, databáza a vyrovnávacia pamäť v koordinovaných LXC."
},
{
"label": "Inštalácia, aktualizácia a úpravy",
"href": "/docs/oci-manager/lifecycle",
"tail": "Kontrakt inštancie a operácie s ním."
},
{
"label": "V ProxMenux Monitor",
"href": "/docs/oci-manager/monitor",
"tail": "Verzie, aktualizácie, výstup konzoly a terminál."
}
]
}
}
]
}
]
}
@@ -0,0 +1,499 @@
{
"meta": {
"title": "Inštalácia, aktualizácia a úpravy | ProxMenux",
"description": "Kontrakt inštancie kontajnera OCI a operácie, ktoré ho používajú: aktualizácia, úprava, odstránenie, zotavenie z prerušenej operácie a obnovenie prevádzky po obnove zo zálohy na tomto alebo inom hostiteľovi."
},
"header": {
"title": "Inštalácia, aktualizácia a úpravy",
"description": "Každá inštancia uchováva reprodukovateľný kontrakt, takže jej rootfs možno nahradiť bez straty konfigurácie alebo trvalých dát.",
"section": "OCI manager Apps"
},
"sections": [
{
"id": "contract",
"title": "Kontrakt inštancie",
"blocks": [
{
"p": "Po inštalácii sa výsledná konfigurácia uloží do <code>/usr/local/share/proxmenux/oci/instances/VMID/oci-compose.json</code>. Nejde o kópiu pôvodného súboru Compose: je to reprodukovateľný kontrakt kontajnera LXC, ktorý existuje na tomto hostiteľovi."
},
{
"code": {
"code": "instances/\n└── 105/\n └── oci-compose.json\n ├── image and resolved digest\n ├── resources and network\n ├── environment (secrets protected)\n ├── container disks and host directories\n ├── hardware profile and devices\n ├── console log and terminal mode\n └── stack membership and lifecycle"
}
},
{
"p": "Kópia kontraktu sa nachádza v kontajneri v <code>/.proxmenux/oci-record.json</code> a môže ju čítať iba používateľ root kontajnera. Záloha kontajnera preto vždy obsahuje kontrakt platný v čase zálohovania. Druhá kópia je uložená v <code>/etc/pve/priv/proxmenux/oci</code>, ktorý zdieľajú všetky uzly klastra a môže ho čítať iba root hostiteľa. Obe kópie sa zapisujú po každej inštalácii, aktualizácii a zmene."
}
]
},
{
"id": "manage",
"title": "Spravovať nainštalované aplikácie OCI",
"intro": "Táto možnosť na hlavnej obrazovke zobrazí registrované inštancie s ich aplikáciou a obrazom. Pred každou akciou sa každá inštancia porovná so svojím kontraktom; CT, ktorý už nezodpovedá svojmu záznamu, sa neupraví ani neodstráni. Rovnaká aktualizácia a rovnaký editor sú dostupné na karte Aktualizácie v <monitorLink>ProxMenux Monitor</monitorLink>.",
"blocks": [
{
"table": {
"headers": [
"Možnosť",
"Čo sa zmení?",
"Čo sa uchováva"
],
"rows": [
[
"Aktualizovať obraz pomocou uloženej konfigurácie",
"Rootfs sa nahradí obrazom, ktorý uložený kanál aktuálne publikuje",
"Zmluva, kontajnerové disky, hostiteľské adresáre, siete a zariadenia"
],
[
"Upraviť: upraviť zdroje, sieť, cesty a GPU",
"Editor sa otvorí s aktuálnym kontraktom; CT sa znova vytvorí so zmenami",
"Dáta kontajnerových diskov a hostiteľských adresárov"
],
[
"Watchdog: reštartovať aplikáciu pri havárii",
"Určuje, či sa aplikácia znova spustí, keď sa sama zastaví. Nič sa nevytvára znova",
"Celá inštalácia; len voľba je uložená v zmluve"
],
[
"Odstrániť: odstrániť aplikáciu a jej kontajnery",
"LXC alebo všetci členovia zostavy a ich kontrakty sa odstránia",
"Hostiteľské adresáre s obsahom"
]
]
}
},
{
"p": "Pre aplikáciu s viacerými kontajnermi menu ponúka <strong>Aktualizovať všetky kontajnery aplikácie</strong>, <strong>Upraviť ďalšie cesty a zariadenia</strong>, <strong>Znovu vytvoriť všetky kontajnery s uloženou konfiguráciou</strong>, watchdog a odstránenie. Úprava pridáva alebo odstraňuje ďalšie cesty a zariadenia aplikačného kontajnera bez opätovného vytvárania. V Immich tiež mení zariadenie, ktoré vykonáva rozpoznávanie. Opätovné vytvorenie zostaví každý kontajner z pôvodne nainštalovaného obrazu bez vyhľadávania novšieho."
},
{
"figure": {
"src": "/oci-manager/manage-menu.png",
"alt": "Zoznam nainštalovaných aplikácií OCI s možnosťami aktualizácie, úpravy a odstránenia",
"caption": "Spravovať nainštalované aplikácie OCI."
}
}
]
},
{
"id": "update",
"title": "Transakčná aktualizácia",
"blocks": [
{
"mermaid": {
"chartCode": "sequenceDiagram\n participant U as {{user}}\n participant P as ProxMenux\n participant R as {{registry}}\n participant X as Proxmox VE\n U->>P: {{update}}\n P->>R: {{resolve}}\n R-->>P: digest\n P->>P: {{verify}}\n P->>X: {{backup}}\n P->>X: {{import}}\n P->>X: {{reapply}}\n X-->>P: healthcheck\n alt {{healthy}}\n P-->>U: {{commit}}\n else {{failure}}\n P->>X: Rollback\n P-->>U: {{restored}}\n end",
"labels": {
"user": "Používateľ",
"registry": "Register OCI",
"update": "Aktualizovať inštanciu",
"resolve": "Zistiť obraz podľa značky",
"verify": "Overiť archív a vykonať predbežné kontroly",
"backup": "Zastaviť a zálohovať CT",
"import": "Importovať nové rootfs",
"reapply": "Znova použiť kontrakt",
"healthy": "v poriadku",
"failure": "zlyhanie",
"commit": "Kontrakt zverejnený s novým digestom",
"restored": "Predchádzajúca inštancia obnovená"
}
}
},
{
"list": {
"items": [
"Ak register stále poskytuje nainštalovaný digest, nič sa nesťahuje a inštancia zostáva nezmenená.",
"Nový obraz sa overí vrstvu po vrstve ešte pred zastavením CT. Poškodené stiahnutie sa zopakuje druhýkrát; obraz už uložený vo vyrovnávacej pamäti, ktorý neprejde kontrolou, sa stiahne znova.",
"Nastavenia zmenené v Proxmox VE po inštalácii (pamäť, swap, jadrá, limit CPU, priorita CPU, spustenie spolu s uzlom) sa zachovajú a prenesú do nového kontraktu.",
"Rozhranie LAN, ktoré pridáva súprava Arr a aplikácie s viacerými kontajnermi (<code>net1</code>), aj poradie spúšťania (<code>startup</code>) sa bez zmeny prenesú do nového kontajnera.",
"Akýkoľvek iný rozdiel medzi CT a jeho zmluvou zastaví aktualizáciu pred zastavením CT."
]
}
},
{
"flow": {
"nodes": [
{
"label": "Pred",
"detail": "rootfs A\n/config mp0\n/media hostiteľský adresár"
},
{
"label": "Aktualizácia",
"detail": "nahradí iba\nrootfs"
},
{
"label": "Po",
"detail": "rootfs B\n/config mp0\n/media hostiteľský adresár"
}
]
}
},
{
"p": "Pred zastavením čohokoľvek sa overí dostatok miesta pre zálohu: využité dáta na zálohovaných zväzkoch plus rezerva. Záloha sa zapisuje vedľa záznamu aplikácie na systémový disk hostiteľa. Ak tam nie je dosť miesta, ponuka vyžiada iné úložisko hostiteľa podporujúce zálohy. Záloha sa vytvorí tam a po skončení operácie sa odstráni. Výber sa zapamätá pre danú aplikáciu aj pre plánované aktualizácie. Ak žiadne úložisko nemá dosť miesta, operácia sa odmietne a aplikácia zostane nezmenená. Rovnako sa pred stiahnutím overí miesto pre nový obraz."
}
]
},
{
"id": "recovery",
"title": "Zotavenie z prerušenej operácie",
"intro": "Aktualizácia aj úprava používajú trvalo uloženú transakciu. Ak sa proces, terminál alebo uzol preruší po zastavení CT, operácia sa nepovažuje za dokončenú.",
"blocks": [
{
"steps": {
"items": [
{
"title": "Značka nedokončenej operácie",
"body": "Keď sa otvorí správa nainštalovaných aplikácií OCI, uložený stav ukazuje, že výmena nebola nikdy zverejnená."
},
{
"title": "Zobraziť stav",
"body": "Zobrazí dosiahnutú fázu bez zmeny kontajnerov alebo dát."
},
{
"title": "Obnoviť predchádzajúcu inštaláciu",
"body": "Obnoví overenú natívnu zálohu vytvorenú pred výmenou aj predchádzajúci kontrakt."
},
{
"title": "Zostavy ako celok",
"body": "V prípade aplikácie s viacerými kontajnermi je každý člen obnovený z rovnakého transakčného bodu, nielen z vybraného."
}
]
}
},
{
"calloutWarning": {
"title": "Hostiteľské adresáre sú mimo návratu do pôvodného stavu",
"body": "Záloha zahŕňa rootfs a disky kontajnera, ktoré sú do nej zahrnuté. Hostiteľský adresár sa nevracia do predchádzajúceho stavu, pretože jeho dáta môžu používať iné kontajnery LXC."
}
}
]
},
{
"id": "watchdog",
"title": "Watchdog: reštartovanie aplikácie, ktorá sa zastaví",
"intro": "Proxmox nemá politiku reštartovania: keď sa proces aplikačného kontajnera skončí, kontajner zostane zastavený. Pri zapnutom watchdogu sa aplikácia, ktorá sa sama zastaví, znova spustí. Pre aplikáciu OCI zabezpečuje to, čo <code>restart: unless-stopped</code> v súbore Compose.",
"blocks": [
{
"table": {
"headers": [
"Čo sa stane?",
"So zapnutým watchdogom"
],
"rows": [
[
"Aplikácia havaruje alebo jej proces končí",
"Kontajner sa znova spustí do niekoľkých sekúnd"
],
[
"Zastaví sa alebo vypne cez Proxmox, Monitor alebo pomocou <code>pct</code>",
"Zostane zastavený, kým ho niekto nespustí"
],
[
"Pracuje na tom záloha, migrácia alebo operácia ProxMenux",
"Nič sa nerobí, kým to neskončí."
],
[
"Bol už zastavený pri spustení hostiteľa",
"Zostane zastavený; rozhoduje o tom <strong>Spustiť s Proxmox</strong>"
],
[
"Opakovane sa zastavuje hneď po spustení",
"Aplikácia, ktorá sa zastaví v priebehu niekoľkých sekúnd po spustení alebo sa nespustí vôbec, sa skúsi spustiť päťkrát s odstupmi 30 sekúnd, 1, 2 a 5 minút. Potom zostane zastavená a odošle sa oznámenie"
]
]
}
},
{
"p": "Inštalátor sa na túto možnosť pýta v oboch režimoch inštalácie a navrhuje hodnotu uvedenú v recepte aplikácie. Neskôr sa mení cez <strong>Spravovať nainštalované aplikácie OCI</strong> alebo prepínačom <strong>Watchdog</strong> kontajnera v <monitorLink>ProxMenux Monitor</monitorLink> a platí pre všetky kontajnery aplikácie. Jediná služba hostiteľa, <code>proxmenux-oci-watchdog.service</code>, sleduje všetky aplikácie, ktoré si to vyžiadali; jej inštalácia je uvedená na karte Zmeny v Audit & Report."
},
{
"calloutInfo": {
"title": "Čo hostiteľ nevie povedať",
"body": "Návratový kód aplikácie sa k hostiteľovi nedostane, takže riadne ukončenie a pád vyzerajú rovnako a v oboch prípadoch nasleduje reštart, podobne ako pri <code>always</code> a <code>unless-stopped</code> v Dockeri. Zastavenie vyžiadané mimo Proxmox pomocou <code>lxc-stop</code> alebo <code>systemctl</code> nevytvorí úlohu zastavenia a považuje sa za samovoľné zastavenie."
}
}
]
},
{
"id": "restore",
"title": "Zálohovanie, obnova a ďalší hostiteľ",
"intro": "Záloha vytvorená pomocou vzdump alebo Proxmox Backup Server obsahuje kontajner, disky kontajnera vybrané na zálohovanie a kópiu jeho kontraktu. To, čo inštalácia uchováva na hostiteľovi, do nej nepatrí. <strong>Spravovať nainštalované aplikácie OCI</strong> rozpozná kontajnery obnovené na hostiteľovi, ktorý nemá ich kontrakt, napríklad po novej inštalácii Proxmox alebo na inom hostiteľovi, a ponúkne ich opätovnú registráciu.",
"blocks": [
{
"steps": {
"items": [
{
"title": "Obnoviť kontajnery v Proxmoxe",
"body": "Zo zálohovacieho úložiska, s pôvodným ID alebo ľubovoľným voľným ID. Aplikácia s viacerými kontajnermi potrebuje všetky svoje kontajnery."
},
{
"title": "Otvoriť Spravovať nainštalované aplikácie OCI",
"body": "Zobrazia sa obnovené kontajnery a ponúkne sa obnovenie. Tlačidlo <strong>Obnoviť</strong> na karte Aktualizácie <monitorLink>ProxMenux Monitor</monitorLink> otvorí rovnaké obnovenie."
},
{
"title": "Pred zmenou skontrolujte",
"body": "Obnova overí, či hostiteľ má všetko, čo každá aplikácia potrebuje. Aplikácia, ktorú nemožno obnoviť ako celok, zostane nezmenená a uvedie sa dôvod."
},
{
"title": "Registrácia a spustenie",
"body": "Kontrakt sa zaregistruje na tomto hostiteľovi a znova sa zapíše to, čo na ňom inštalácia uchovávala. Spustenie aplikácií je samostatná otázka, na ktorú treba odpovedať Nie, ak pôvodné kontajnery stále bežia na inom hostiteľovi."
}
]
}
},
{
"figure": {
"src": "/oci-manager/restore-offer.png",
"alt": "Dialóg, ktorý uvádza obnovené kontajnery a ponúka ich obnoviť",
"caption": "Obnova ponúknutá po otvorení Spravovať nainštalované aplikácie OCI."
}
},
{
"table": {
"headers": [
"Čo si hostiteľ nechal?",
"Po zotavení"
],
"rows": [
[
"Kontrakt inštancie",
"Zaregistruje sa z kópie v kontajneri, ktorá sa porovná s konfiguráciou obnovenou systémom Proxmox"
],
[
"Súkromná sieť multikontajnerovej aplikácie",
"Znova sa vytvorí s rovnakým mostom a podsieťou; pevné adresy kontajnerov sa nezmenia"
],
[
"Poradie spúšťania aplikácie s viacerými kontajnermi",
"Hookscript závislostí a jeho kontrakt sa znova nainštalujú; ak žiadne úložisko nepodporuje snippets, povolia sa na úložisku <code>local</code>"
],
[
"Sieťové sysctls a súbor host-monitor",
"Znova sa zapíšu do <code>/etc/pve/proxmenux</code>"
],
[
"Runtime NVIDIA",
"Hook neprivilegovaného kontajnera sa znova nainštaluje. Privilegovaný kontajner dostane súbory ovládača tohto hostiteľa namiesto súborov pôvodného hostiteľa"
],
[
"Pripojenie Rclone",
"Hookscript a programy, ktoré sprístupňujú pripojenie, sa znova zapíšu s rovnakými pohľadmi na hostiteľovi"
],
[
"Pravidlo firewallu hostiteľa pre monitor hostiteľa",
"Znova sa vyžiada súhlas pre webový port a podsieť mosta na tomto hostiteľovi"
],
[
"<code>lost+found</code> z každého obnoveného disku",
"Odstráni sa, ak je prázdny; obnova ho vytvorí a niektoré aplikácie sa nespustia, ak je medzi ich dátami"
],
[
"Disky obnovené na inom úložisku",
"Kontrakt sa aktualizuje podľa úložiska, na ktorom sa teraz nachádzajú"
]
]
}
},
{
"p": "Kontajner obnovený s iným ID si zachová svoju aplikáciu. Kontrakt, záznam konzoly, sieťové nastavenia sysctl, hookscript pripojenia Rclone a poradie spúšťania viackontajnerovej aplikácie sa zaregistrujú s ID, ktoré majú kontajnery na tomto hostiteľovi."
},
{
"table": {
"headers": [
"Čo bráni obnove",
"Čo urobiť"
],
"rows": [
[
"Chýba kontajner aplikácie s viacerými kontajnermi",
"Obnovte aj tento kontajner; aplikácia sa obnovuje ako celok"
],
[
"Súkromná podsieť sa už používa na tomto hostiteľovi",
"Obnova sa zruší a nič sa nezmení: adresy kontajnerov sú pevné a nepresúvajú sa do inej podsiete"
],
[
"Adresár hostiteľa neexistuje",
"Pripojiť alebo vytvoriť s jeho dátami; záloha kontajnera nezahŕňa adresáre hostiteľa"
],
[
"Zariadenie neexistuje na tomto hostiteľovi",
"Pripojte ho alebo ho odstráňte z kontajnera v Proxmox"
],
[
"Aplikácia s NVIDIA na hostiteľovi bez ovládača",
"Nainštalujte ovládač NVIDIA a Container Toolkit"
],
[
"Záloha bola vytvorená skôr, než existovala kópia kontraktu",
"Kontajner zostáva ako bežný LXC a nie je opäť ponúkaný"
]
]
}
},
{
"calloutInfo": {
"title": "Kontajner, ktorý sa vráti",
"body": "Kontajner obnovený s pôvodným ID zo staršej zálohy, vrátený do snímky alebo presunutý späť z iného uzla nesie kontrakt svojho aktuálneho stavu. Ak sa pri výbere na operáciu jeho kontrakt líši od kontraktu na tomto hostiteľovi, operácia sa nespustí a ponúkne sa obnova kontajnera."
}
},
{
"figure": {
"src": "/oci-manager/restore-result.png",
"alt": "Výsledok obnovy so súkromnou sieťou, poradím spúšťania a zaregistrovanými kontajnermi",
"caption": "Výsledok zotavenia, krok za krokom."
}
}
]
},
{
"id": "remove",
"title": "Odstránenie aplikácie OCI",
"blocks": [
{
"p": "Pred potvrdením je zostavený súhrn zo skutočnej konfigurácie: kontajnery, ktoré sú odstránené, údaje s nimi vymazané, súkromná sieť, ktorá je uvoľnená a hostiteľské adresáre, ktoré sú uchovávané. Potvrdenie je predvolene <strong>Nie</strong>, pretože údaje z vymazaných diskov nie je možné následne obnoviť."
},
{
"table": {
"headers": [
"Prostriedok",
"Po odstránení",
"Dôvod"
],
"rows": [
[
"rootfs a kontajnerové disky",
"Odstránia sa",
"Patria len do kontajnera."
],
[
"Adresár hostiteľa",
"Zachová sa aj s obsahom",
"Iné aplikácie ho môžu používať"
],
[
"Hostiteľské súbory kontajnera",
"Odstránia sa",
"Jeho záznam konzoly, sieťové parametre sysctl, hookscript pripojenia Rclone a registrácia na karte App v ProxMenux Monitor neslúžia žiadnemu inému kontajneru"
],
[
"Súbory zdieľané viacerými inštaláciami",
"Vymazané s poslednou inštaláciou, ktorá ich používa",
"Súbor monitora hostiteľa a hookscript závislostí aplikácií s viacerými kontajnermi"
],
[
"Kontrakt inštancie",
"Odstráni sa po úspešnom odstránení aplikácie",
"Už s ním nie je spojený žiadny CT"
],
[
"Súkromný most zostavy",
"Uvoľní sa spolu so zostavou",
"Nemá žiadnych členov na pripojenie"
],
[
"Sieť zdieľaná súpravou Arr",
"Uvoľní sa s poslednou aplikáciou súpravy",
"Každá aplikácia súpravy je nezávislá a odstraňuje sa samostatne"
],
[
"Jeden člen zostavy",
"Neodstránené samostatne",
"Odstráni sa celá aplikácia, aby nezostala neúplná zostava"
],
[
"Kontajner na inom uzle klastra",
"Neodstránené",
"Jeho záznam a súbory na hostiteľovi sú na uzle, kde bol nainštalovaný: odstráni sa tam po migrácii späť"
]
]
}
},
{
"figure": {
"src": "/oci-manager/remove-summary.png",
"alt": "Prehľad odstránenia s dotknutými kontajnermi, dátami a adresármi hostiteľa",
"caption": "Prehľad odstránenia, postavený z reálnej konfigurácie."
}
}
]
},
{
"id": "archives",
"title": "Stiahnuté obrazy a miesto na hostiteľovi",
"blocks": [
{
"p": "Archív OCI slúži na vytvorenie rootfs; bežiaci CT ho nečíta. Po inštalácii alebo aktualizácii sa zobrazia archívy stiahnuté počas danej operácie aj s ich veľkosťou a ponúkne sa ich odstránenie. Odstránením sa uvoľní miesto bez vplyvu na kontajner alebo jeho dáta."
},
{
"calloutInfo": {
"title": "Aktualizácie nepotrebujú archív",
"body": "Bez archívu aktualizácia vyrieši uložený kanál a stiahne nový digest. S ním sa archív znova použije iba vtedy, keď sa jeho referencia a integrita zhodujú s požadovaným."
}
}
]
},
{
"id": "registry",
"title": "Register a čistenie",
"blocks": [
{
"p": "Pri otvorení <strong>Spravovať nainštalované aplikácie OCI</strong> sa najskôr odstránia pozostatky kontajnerov, ktoré už neexistujú na žiadnom uzle klastra: uložený záznam kontajnera odstráneného cez rozhranie Proxmox, uchovávaný ako história, a súbory hostiteľa, ktoré zostali po odstránení. Záznam s nedokončenou operáciou sa zachová, pretože jeho záloha môže byť ešte potrebná. Zväzky ani adresáre hostiteľa sa nikdy neodstraňujú na základe domnienok."
}
]
},
{
"id": "cluster",
"title": "V klastri: migrácia a vysoká dostupnosť",
"intro": "Kontajner OCI je bežný LXC Proxmox: možno ho migrovať alebo spravovať pomocou HA ako ostatné, s rovnakými obmedzeniami. Všetko potrebné na spustenie je uložené tam, kde to nájde každý uzol klastra.",
"blocks": [
{
"table": {
"headers": [
"Časť",
"Na inom uzle klastra"
],
"rows": [
[
"Konzolový log",
"Kontajner pred spustením vytvorí <code>/var/log/proxmenux/oci</code> na uzle, ktorý ho spúšťa. Každý uzol uchováva záznam spustení, ktoré vykonal."
],
[
"Sieťové parametre sysctl a monitor hostiteľa",
"Uchovávajú sa v <code>/etc/pve/proxmenux</code>, ktorý zdieľajú všetky uzly klastra, takže migrovaný kontajner ich nájde."
],
[
"Kontajnerové disky",
"Proxmox ich presúva s kontajnerom. HA potrebuje mať ich dáta dostupné na cieľovom uzle cez zdieľané úložisko alebo podporovanú konfiguráciu replikácie."
],
[
"Hostiteľské adresáre a zariadenia",
"Rovnaké pravidlá ako všetky LXC: hostiteľský adresár musí existovať na cieľovom uzle a musí byť označený ako zdieľaný a musí tam byť prítomný GPU, Coral alebo NPU."
],
[
"Záznam ProxMenux",
"Kontrakt zostáva na uzle, kde bola aplikácia nainštalovaná, a každý uzol číta kópiu v <code>/etc/pve/priv/proxmenux/oci</code>. Migrovaná aplikácia s jedným kontajnerom sa zaregistruje na cieľovom uzle po otvorení <strong>Spravovať nainštalované aplikácie OCI</strong> alebo po spustení operácie pre danú aplikáciu. Aplikácia s viacerými kontajnermi sa tam ponúkne na obnovu, pretože jej súkromná sieť sa musí vytvoriť na tomto uzle."
]
]
}
},
{
"calloutWarning": {
"title": "Nie je určené pre vysokú dostupnosť",
"body": "Aplikácia s viacerými kontajnermi komunikuje so svojimi členmi cez súkromný most uzla, na ktorom bola nainštalovaná, preto jej členovia zostávajú na tomto uzle. Monitor hostiteľa, napríklad Glances v režime hostiteľa alebo Netdata, sleduje uzol, na ktorom beží; presunutím by sledoval iný uzol."
}
},
{
"p": "Pri obnove aplikácie dostane záloha obnovená mimo klastra súbory z <code>/etc/pve/proxmenux</code>, ktoré kontajner používa."
}
]
},
{
"id": "channel",
"title": "Priebežne aktualizovaná značka neznamená bezobslužnú aktualizáciu",
"blocks": [
{
"p": "Katalóg nainštaluje priebežne aktualizovanú značku, ktorú publikuje správca, ale skutočný digest sa zistí a zaznamená a zmení sa iba explicitnou aktualizáciou s predbežnou kontrolou a možnosťou návratu späť. <monitorLink>ProxMenux Monitor</monitorLink> porovná nainštalovaný digest s digestom publikovaným registrom a zobrazí aj odošle upozornenie, keď je dostupný nový obraz."
}
]
}
]
}
@@ -0,0 +1,213 @@
{
"meta": {
"title": "Kontajnery OCI v ProxMenux Monitor | ProxMenux",
"description": "Čo ProxMenux Monitor zobrazuje pre kontajner nainštalovaný cez OCI manager Apps: verzie aplikácie a obrazu, nové obrazy, výstup konzoly a terminál Proxmox VE."
},
"header": {
"title": "V ProxMenux Monitore",
"description": "Kontajner nainštalovaný cez OCI manager Apps sa zobrazuje v časti VM a LXC ako každý iný LXC. Jeho detail načíta záznam inštalácie: verzie aplikácie a obrazu, nové obrazy, výstup konzoly a terminál.",
"section": "OCI manager Apps"
},
"sections": [
{
"id": "intro",
"blocks": [
{
"calloutInfo": {
"title": "Záznam je zdroj",
"body": "OCI manager Apps vie, čo nainštaloval a odkiaľ to pochádza. Monitor načíta tento záznam inštalácie namiesto vyhľadávania aplikácie v kontajneri. Tieto údaje sú preto rovnaké pri spustenom aj zastavenom kontajneri."
}
},
{
"table": {
"headers": [
"Karta",
"Čo sa mení pri kontajneri OCI"
],
"rows": [
[
"Stav",
"Prepínač <strong>Watchdog</strong> pod Start at boot: aplikácia sa znova spustí, keď sa sama zastaví"
],
[
"Aplikácia",
"Aplikácia je identifikovaná zo záznamu a aktualizácie sú sledované obrazom"
],
[
"Aktualizácie",
"Obraz je aktualizovaný alebo aplikácia upravená s rovnakým tokom ako OCI menu"
],
[
"Pripojenia",
"Kontajnerové disky a hostiteľské adresáre s ich použitím"
],
[
"Logy",
"Len pre kontajnery OCI: výstup konzoly aplikácie"
]
]
}
}
]
},
{
"id": "app",
"title": "Aplikácia",
"intro": "Záložka <appLink>App</appLink> ponúka nainštalovanú aplikáciu ako detekciu s názvom, logom, portom a schémou záznamu. Zaregistrovanie otvára editor metódou <strong>Obraz OCI (nainštalovaný ProxMenux)</strong>, ktorá nepotrebuje konfiguráciu.",
"blocks": [
{
"cards": {
"items": [
{
"icon": "boxes",
"title": "Aplikácia",
"body": "Verzia aplikácie v obraze, načítaná zo samotného obrazu: z jeho prostredia alebo štítku <code>org.opencontainers.image.version</code>. Je to informatívny údaj."
},
{
"icon": "archive",
"title": "Obraz",
"body": "Dátum zostavenia a digest nainštalovaného obrazu. O aktualizácii sa rozhoduje tu: nainštalovaný digest sa porovná s tým, ktorý register dnes publikuje pre rovnakú značku."
}
]
}
},
{
"list": {
"items": [
"Keď register zverejní nový digest, na karte sa zobrazí <strong>Nový obraz</strong> s jeho dátumom a digest, aj keď sa verzia aplikácie vo vnútri nezmenila: prestavba na aktualizovanej báze je aktualizáciou.",
"Keď sa hodnoty digest zhodujú, karta zobrazí <strong>Verzia</strong>.",
"Karta odkazuje na úložisko obrazu: jeho projekt GitHub alebo jeho stránku Docker Hub pre oficiálny obraz.",
"Prístupové spojenie používa LAN adresu kontajnera, aj pre hlavného člena viackontajnerovej aplikácie, ktorá má druhú adresu vo svojej súkromnej sieti.",
"Tlačidlo <strong>Obnoviť údaje</strong> znovu načíta záznam aj register obrazov. Možnosti vyhľadávania alebo registrácie ďalších aplikácií sa neponúkajú: kontajner obsahuje presne aplikáciu zo svojho záznamu."
]
}
},
{
"figure": {
"src": "/oci-manager/monitor-app-tab.png",
"alt": "App záložka kontajnera OCI s verziou aplikácie, obrazom a odkazom na úložisko",
"caption": "Karta Aplikácia kontajnera nainštalovaného cez OCI manager Apps."
}
},
{
"p": "Kontrola prebieha raz denne s kontrolami aktualizácií monitora a <strong>Obnoviť údaje</strong> ju spustí okamžite. Nový obraz sa odošle ako upozornenie prostredníctvom kanálov nakonfigurovaných v <notificationsLink>Upozornenia</notificationsLink>. Aktualizácia sa aplikuje na karte Aktualizácie."
}
]
},
{
"id": "updates",
"title": "Aktualizácie",
"intro": "Pri kontajneri nainštalovanom cez OCI manager Apps zobrazuje karta Aktualizácie aplikáciu s nainštalovaným obrazom a prípadným novým obrazom z registra, rovnako ako pri ostatných aplikáciách. Nástroje na aktualizáciu balíkov a aplikácií bežného LXC sa nezobrazujú.",
"blocks": [
{
"table": {
"headers": [
"Tlačidlo",
"Čo to otvára?"
],
"rows": [
[
"Aktualizácia",
"Aktualizácia z časti <lifecycleLink>Spravovať nainštalované aplikácie OCI</lifecycleLink> pre tento kontajner v termináli Monitor. Možno ju spustiť aj bez nového obrazu; vtedy sa nič nezmení. Vo viackontajnerovej aplikácii aktualizuje všetkých členov."
],
[
"Upraviť",
"Editor aplikácie (zdroje, sieť, cesty a GPU). Vo viackontajnerovej aplikácii pridáva alebo odstraňuje ďalšie cesty a zariadenia aplikačného kontajnera a v Immich mení, čo vykonáva rozpoznávanie."
],
[
"Obnoviť",
"Nahradí Aktualizáciu po prerušení operácie na kontajneri a otvorí jeho obnovu."
],
[
"Obnoviť (obnovený kontajner)",
"Zobrazí sa pri kontajneri obnovenom zo zálohy, ktorý na tomto hostiteľovi nemá kontrakt, v časti <strong>Obnovená aplikácia OCI</strong>. Otvorí <lifecycleLink>obnovu</lifecycleLink> v termináli Monitor; po registrácii sa zobrazia možnosti Aktualizovať a Upraviť."
]
]
}
},
{
"p": "Externé zmeny, hostiteľské adresáre a multikontajnerové aplikácie sú spracované ako v ponuke OCI. Vo viackontajnerovej aplikácii sa tlačidlá a možnosti zobrazia len na hlavnom kontajneri; ostatní členovia zobrazujú svoj obraz, poznámku, že sú aktualizované z hlavného kontajnera a tlačidlo, ktoré ho otvára. Keď sa terminál uzavrie, obraz, záznam a pripojenia sa znovu prečítajú."
},
{
"table": {
"headers": [
"Možnosť",
"Správanie"
],
"rows": [
[
"Ponechať zálohu vytvorenú pred aktualizáciou",
"Každá aktualizácia zálohuje kontajner, aby ho bolo možné obnoviť pri zlyhaní aktualizácie. Pri tejto voľbe sa tá istá záloha ponechá vo vybranom úložisku a zobrazí medzi zálohami CT; pri Proxmox Backup Server sa záloha zapíše pred aktualizáciou."
],
[
"Plánované aktualizácie",
"Obraz sa aktualizuje v zvolenom čase iba vtedy, keď register publikuje nový obraz; voliteľne až po jeho dosiahnutí veku 1, 3, 7 alebo 14 dní. Kontajner so zmenami mimo ProxMenux sa preskočí a nahlási."
]
]
}
}
]
},
{
"id": "logs",
"title": "Logy",
"intro": "Karta Záznamy sa zobrazuje iba pri kontajneroch nainštalovaných cez OCI manager Apps, medzi kartami Pripojenia a Zálohy. Zobrazuje štandardný a chybový výstup hlavného procesu obrazu, teda rovnaký výstup ako <code>docker logs</code> pri kontajneri Docker.",
"blocks": [
{
"list": {
"items": [
"Výstup sa uchováva na hostiteľovi v <code>/var/log/proxmenux/oci/VMID.console.log</code> (režim 0600) od prvého spustenia aj cez reštarty, takže ho možno čítať pri zastavenom kontajneri.",
"Súbor sa otáča na 10 MB, pričom sa uchovávajú tri komprimované kópie (<code>/etc/logrotate.d/proxmenux-oci</code>).",
"Každý začiatok kontajnera je označený vo výstupe. Karta štandardne zobrazuje výstup od posledného spustenia; <strong>Úplná história</strong> zobrazuje aj predchádzajúce.",
"Po odstránení aplikácie sa odstráni jej výstup.",
"Zobrazuje sa posledných 100, 500 alebo 1000 riadkov. Počas behu kontajnera sa nové riadky sledujú naživo; posunutie nahor sledovanie pozastaví a tlačidlo <strong>Sledovať</strong> ho obnoví.",
"Filter zobrazí iba riadky, ktoré obsahujú text a <strong>Stiahnuť</strong> uloží načítané riadky.",
"Farebné kódy sa odstránia a riadok opakovane prekresľovaný ukazovateľom priebehu sa zobrazí v konečnom stave.",
"Karta načíta súbor pri každom otvorení; nepoužíva vyrovnávaciu pamäť."
]
}
},
{
"calloutInfo": {
"title": "Prihlasovacie údaje pri prvom spustení",
"body": "Obrazy, ktoré vytlačia vygenerované heslo na ich prvom štarte, to nechajú v tomto výstupe, ako to robí <code>docker logs</code>. Inštalátor ho odtiaľ prečíta, aby ju ukázal v súhrne."
}
},
{
"figure": {
"src": "/oci-manager/monitor-logs-tab.png",
"alt": "Karta záznamov s výstupom konzoly kontajnera OCI, výberom počtu riadkov, filtrom a tlačidlom sledovania",
"caption": "Konzolový výstup kontajnera OCI."
}
}
]
},
{
"id": "terminal",
"title": "konzola Proxmox VE",
"blocks": [
{
"p": "Obraz OCI spúšťa vlastný proces ako PID 1 a neobsahuje prihlasovaciu službu. Predvolená konzola LXC by preto otvorila terminál bez procesu, ktorý by odpovedal na prihlásenie. Kontajnery nainštalované cez OCI manager Apps sa vytvárajú s <code>cmode: shell</code>: konzola Proxmox VE otvorí shell pomocou <code>lxc-attach</code>, čo zodpovedá <code>docker exec</code>. Spustená aplikácia zostáva nedotknutá."
},
{
"list": {
"items": [
"Shell je ten, ktorý súbor <code>/etc/passwd</code> v obraze priraďuje používateľovi root. Ak root nemá shell alebo obraz žiadny neobsahuje, zostane predvolená konzola.",
"Shell beží ako root vnútri kontajnera, bez hesla. O tom, kto ho môže otvoriť, rozhoduje <code>VM.Console</code> povolenie Proxmox VE.",
"Terminál monitora vstupuje do kontajnera s <code>pct enter</code>, ktorý funguje rovnako."
]
}
}
]
},
{
"id": "mounts",
"title": "Pripojenia",
"blocks": [
{
"p": "Karta <mountsLink>Pripojenia</mountsLink> uvádza disky kontajnera a jeho adresáre hostiteľa. Využitie disku kontajnera na blokovom úložisku, napríklad LVM-thin, sa číta zo súborového systému disku, ktorý je pripojený iba v kontajneri."
}
]
}
]
}
@@ -0,0 +1,404 @@
{
"meta": {
"title": "Aplikácie s viacerými kontajnermi | ProxMenux",
"description": "Ako OCI manager Apps mení aplikáciu s databázou a vyrovnávacou pamäťou na koordinované natívne LXC: plán, súkromná sieť, hook závislostí, overenie a transakčné aktualizácie."
},
"header": {
"title": "Aplikácie s viacerými kontajnermi",
"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",
"labels": {
"plan": "Stack plán",
"app": "Aplikácia LXC",
"appNet": "LAN + súkromné",
"db": "PostgreSQL LXC",
"cache": "Valkey LXC",
"private": "súkromné"
}
}
}
]
},
{
"id": "plan",
"title": "1. Plán ešte pred vytvorením kontajnerov",
"blocks": [
{
"p": "Počas spracovania definície Compose sa nevytvára žiadny LXC. Najprv vznikne úplný plán so všetkými členmi, obrazmi, VMID, sieťami, cestami, tajnými údajmi, poradím a kontrolami stavu. Ak plán nie je konzistentný, inštalácia sa nezačne."
},
{
"table": {
"headers": [
"Prvok plánu",
"Obsah",
"Overenie pred vytvorením čohokoľvek"
],
"rows": [
[
"Členovia",
"Hlavná aplikácia, databáza, vyrovnávacia pamäť, strojové učenie a iné závislosti",
"Jedinečné VMID, známe úlohy a presne jeden hlavný člen"
],
[
"Obrazy",
"Priebežne aktualizovaný odkaz, architektúra a určený digest každej služby",
"Všetky existujú, podporujú architektúru a prejdú kontrolou integrity OCI"
],
[
"Sieť",
"Súkromný most, podsieť, pevná adresa pre každú službu a prístup LAN pre hlavného člena",
"Žiadna zrážka s existujúcimi mostmi alebo podsietami a žiadna opakovaná adresa"
],
[
"Perzistencia",
"Kontajnerové disky, hostiteľské adresáre, majitelia a zálohovanie",
"Žiadne prekrývanie ciest, dostupné úložisko a deklarované oprávnenia"
],
[
"Tajomstvá",
"Heslo databázy, aplikačné kľúče a počiatočné prihlasovacie údaje",
"Generované raz a podané iba členom, ktorí ich používajú"
],
[
"Životný cyklus",
"Poradie spúšťania, poradie zastavovania a kontrola stavu každého člena",
"Hlavná aplikácia sa spúšťa posledná a zastavuje prvá"
]
]
}
}
]
},
{
"id": "create",
"title": "2. Vytváranie jednotlivých členov",
"blocks": [
{
"steps": {
"items": [
{
"title": "Rezervujte každý VMID",
"body": "Súpis Proxmox VE a inštančný register sú kontrolované. Existujúce CT nie je prijaté a zmluva, ktorá stále patrí do inej inštancie, sa opätovne nepoužíva."
},
{
"title": "Pripravte každý obraz",
"body": "Všetky obrazy sú vyriešené, stiahnuté a overené pred vytvorením prvého kontajnera."
},
{
"title": "Vytvoriť každý rootfs",
"body": "Importujú sa oficiálne metadáta OCI a pridá sa identita inštancie ProxMenux a rola člena."
},
{
"title": "Súkromná sieť",
"body": "Vytvorí sa most a podsieť a každý člen dostane pevnú adresu; iba hlavný člen navyše dostane rozhranie LAN."
},
{
"title": "Perzistencia",
"body": "Každá databáza a konfigurácia dostane svoj vlastný disk kontajnera; iba údaje určené na zdieľanie používajú adresáre hostiteľov."
},
{
"title": "Prostredie",
"body": "Zapíšu sa interné koncové body, zdieľané tajné údaje a premenné služieb. Aplikácia pristupuje k svojim závislostiam cez ich vyhradené súkromné adresy."
},
{
"title": "Záznam",
"body": "Každý člen zaznamenáva svoju natívnu konfiguráciu, rootfs zmeny, ktoré aktualizácie musia reprodukovať a jeho vzťah k stohu."
}
]
}
}
]
},
{
"id": "checks",
"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",
"Celý zásobník pracuje prostredníctvom aplikácie, ktorá používa závislosti"
]
]
}
},
{
"calloutWarning": {
"title": "Spustený neznamená funkčný",
"body": "Stav spustené len hovorí, že proces LXC existuje. Tam, kde služba ponúka lepšiu kontrolu, sa používa exec alebo HTTP kontrola s časovým limitom. Ak člen zastaví alebo zlyhá jeho kontrola, zásobník nie je deklarovaný ako nainštalovaný."
}
}
]
},
{
"id": "hook",
"title": "4. Hook závislostí",
"blocks": [
{
"p": "Hook sa nastaví iba na hlavnom kontajneri zostavy so závislosťami. Proxmox VE uchováva skript ako snippet a spúšťa ho ako <code>hookscript</code> daného CT. Recept zostavy nie je zapísaný v skripte: nachádza sa v samostatnom súkromnom kontrakte."
},
{
"codeGrid": {
"items": [
{
"title": "Hlavné nastavenie CT",
"code": "hookscript: local:snippets/proxmenux-stack-dependencies.sh"
},
{
"title": "Súkromná zmluva (príklad)",
"code": "/etc/pve/priv/proxmenux-stack-VMID.json\n{\n \"schema\": 1,\n \"stack\": \"immich\",\n \"dependencies\": [\n {\"vmid\": 107, \"label\": \"PostgreSQL\", \"healthcheck\": {...}},\n {\"vmid\": 108, \"label\": \"Valkey\", \"healthcheck\": {...}},\n {\"vmid\": 106, \"label\": \"Machine Learning\", \"healthcheck\": {...}}\n ]\n}"
}
]
}
},
{
"snippet": {
"summary": "Kompletný zdroj proxmenux-stack-dependencies.sh",
"pathCode": "local:snippets/proxmenux-stack-dependencies.sh",
"snippetCode": "stackDependencyHook"
}
},
{
"p": "Skript je rovnaký pre každý zásobník. VMID, názvy, kontrolné typy a timeouty pochádzajú zo súkromného kontraktu <code>/etc/pve/priv/proxmenux-stack-VMID.json</code> každého zásobníka."
},
{
"steps": {
"items": [
{
"title": "Proxmox VE zavolá pre-start",
"body": "Pred spustením hlavného CT sa hook spustí s jeho VMID a fázou životného cyklu."
},
{
"title": "Zámok na zásobník",
"body": "<code>flock</code> na <code>/run/lock/proxmenux-stack-VMID.lock</code> zabraňuje dvom štartovým sekvenciám súčasne."
},
{
"title": "Zmluva je prečítaná a overená",
"body": "Požaduje sa známa schéma, numerické závislosti, etikety, exec, http alebo kontrola chodu a pozitívny timeout."
},
{
"title": "Závislosti v poradí",
"body": "Každý CT musí existovať; zastavený sa spustí, už spustený sa nereštartuje."
},
{
"title": "Čakanie na pripravenosť služby",
"body": "Kontrola beží každé dve sekundy, a CT je tiež potvrdené, že stále beží."
},
{
"title": "Hlavné CT začína",
"body": "Keď je každá závislosť pripravená, pre-start končí a Proxmox VE spustí aplikáciu."
}
]
}
},
{
"calloutInfo": {
"title": "Háčik nezastaví závislosť",
"body": "Fázy post-start, pre-stop a post-stop nič nevykonávajú. Zastavenie hlavného CT ponechá PostgreSQL, Redis, Valkey alebo strojové učenie spustené. Hook určuje poradie spúšťania; nemení viaceré LXC na jeden proces."
}
},
{
"table": {
"headers": [
"Typ",
"Príklad",
"Neskoršie spustenia"
],
"rows": [
[
"Závislý zásobník",
"Immich, Nextcloud, aplikácia s PostgreSQL",
"Hook hlavného CT spustí závislosti a čaká na ich pripravenosť."
],
[
"Súprava aplikácií",
"Súprava Arr",
"Žiadny hlavný člen: každý LXC sleduje svoje vlastné <code>onboot</code>"
],
[
"Samostatná aplikácia",
"Jellyfin",
"Proxmox VE spustí daný LXC priamo"
]
]
}
}
]
},
{
"id": "stack-checks",
"title": "5. Kontrola stohu ako celku",
"blocks": [
{
"list": {
"items": [
"Každý VMID existuje, je jedinečný a udržiava očakávanú inštančnú identitu.",
"Každý kontrakt patrí do rovnakej zostavy, zachováva svoju rolu a zaznamenanú natívnu konfiguráciu.",
"Hlavný člen je posledný v <code>start_order</code> a prvý v <code>stop_order</code>.",
"Nechýba žiadny člen, zväzok ani úprava rootfs.",
"Hook odkazuje na oficiálny snippet, jeho obsah sa nezmenil a jeho kontrakt zodpovedá receptu zostavy.",
"Zistené obrazy a hodnoty digest zodpovedajú pripraveným archívom OCI.",
"Zariadenia, profily GPU, pripojenia, tajomstvá a koncové body stále zodpovedajú zmluvám.",
"Keď všetky závislosti prejdú kontrolou, koncový bod hlavnej aplikácie overí integráciu medzi členmi."
]
}
}
]
},
{
"id": "manage",
"title": "Správa nainštalovaného zásobníka",
"intro": "V časti <strong>Spravovať nainštalované aplikácie OCI</strong> vedie každý člen k celej zostave. 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 aktualizovateľné zostavy.",
"blocks": [
{
"steps": {
"items": [
{
"title": "Každý člen",
"body": "Zmluva člena menuje hlavné VMID a kompletný zoznam členov."
},
{
"title": "Stack je reprodukovateľný",
"body": "Overia sa identity, kontrakty, hook, úpravy a koordinované opätovné vykonanie daného receptu."
},
{
"title": "Prvé obrazy",
"body": "Aplikácia sa nezastaví, kým sa každý digest neurčí, nestiahne a neoverí."
},
{
"title": "Zastaviť súčasti a zálohovať celú zostavu",
"body": "Overené natívne zálohy sa vytvoria pri zastavenej zostave, aby aplikácia a databázy zodpovedali rovnakému okamihu."
},
{
"title": "Aktualizovať a skontrolovať každého člena",
"body": "Adaptácia, sieť, pripojenia, tajomstvá a zariadenia sa používajú opäť pred kontrolou stavu každého člena."
},
{
"title": "Publikovať alebo obnoviť všetko",
"body": "Nové zmluvy sa uverejňujú iba vtedy, keď každý člen prejde. Ak jeden zlyhá, každý člen je obnovený."
}
]
}
},
{
"table": {
"headers": [
"Upraviť",
"Čo sa zmení?",
"Čo sa uchováva"
],
"rows": [
[
"Extra cesty a zariadenia",
"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é"
]
]
}
},
{
"calloutWarning": {
"title": "Zostava bez koordinovaného opätovného vykonania sa neaktualizuje",
"body": "Ak sa príprava zásobníka nedá reprodukovať, aktualizácia sa zamietne pred zastavením zásobníka. Aplikácia funguje tak, ako je."
}
}
]
},
{
"id": "failure",
"title": "6. Keď niečo zlyhá",
"blocks": [
{
"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. Zostava sa nezverejní ako platná, kým neskončí celý postup."
},
{
"p": "Aktualizácia je transakčná: všetky obrazy sú pripravené ako prvé, potom stack zastaví, každý člen je zálohovaný a záloha overená, a len potom je každý rootfs nahradený. Členovia začínajú jeden po druhom so zdravotnou kontrolou; ak jeden zlyhá, každý člen je obnovený z rovnakého súboru záloh, takže databáza a aplikácia nikdy nepatria do rôznych momentov."
},
{
"mermaid": {
"chartCode": "flowchart LR\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}}\"]",
"labels": {
"prepare": "Pripravte každý obraz",
"stop": "Stop, hlavný člen prvý",
"backup": "Overená záloha každého CT",
"replace": "Nahradiť rootfs",
"healthy": "Sú všetky funkčné?",
"yes": "Áno",
"no": "Nie",
"commit": "Zverejniť kontrakty",
"rollback": "Obnoviť každého člena"
}
}
}
]
},
{
"id": "not-assumed",
"title": "Čo zásobník nezahŕňa",
"blocks": [
{
"list": {
"items": [
"Súprava nainštalovaná v jednom postupe, napríklad súprava Arr, nie je zostavou so závislosťami: jej kontajnery nemajú určené vzájomné poradie spúšťania.",
"Súkromná sieť nenahrádza autentifikáciu, TLS ani konfiguráciu každej aplikácie.",
"Zálohovanie jedného LXC neobsahuje most, hák ani zmluvy zvyšku zásobníka.",
"Prowlarr, Sonarr alebo Radarr neprijímajú žiadne indexátory, profily alebo poskytovateľov z ProxMenux."
]
}
}
]
}
]
}
@@ -0,0 +1,305 @@
{
"meta": {
"title": "Údaje, cesty a sieť | ProxMenux",
"description": "Ako OCI manager Apps uchováva údaje kontajnera OCI: disky kontajnera, adresáre hostiteľa, pripojenia cez rclone, adresy a súkromné siete."
},
"header": {
"title": "Údaje, cesty a sieť",
"description": "Čo sa nachádza v rootfs, čo sa zachová pri jeho výmene, ako sa zdieľajú údaje medzi kontajnermi a ako každý kontajner získa svoju adresu.",
"section": "OCI manager Apps"
},
"sections": [
{
"id": "intro",
"blocks": [
{
"calloutInfo": {
"title": "Trvalé uloženie údajov sa určí pred vytvorením LXC",
"body": "Pred vytvorením kontajnera sa načítajú zväzky deklarované obrazom a jeho súborom Compose. Každá cesta, ktorá sa má zachovať po aktualizácii, sa stane prípojným bodom nezávislým od rootfs. Rootfs tak obsahuje iba súbory patriace obrazu a možno ho vymeniť."
}
}
]
},
{
"id": "questions",
"title": "Na čo sa pýta inštalátor",
"intro": "Šablóna poskytuje cesty potrebné pre aplikáciu. Každá sa umiestni na disk kontajnera alebo do adresára hostiteľa. Pred súhrnom možno pridať ďalšie cesty.",
"blocks": [
{
"steps": {
"items": [
{
"title": "Potrebné cesty",
"body": "Zobrazia sa <code>/config</code>, <code>/data</code>, knižnice, stiahnuté súbory a všetky zväzky deklarované aplikáciou."
},
{
"title": "Umiestnenie",
"body": "Každá cesta sa umiestni na disk kontajnera alebo do existujúceho adresára hostiteľa."
},
{
"title": "Úložisko a veľkosť",
"body": "Na úložisku Proxmox VE sa vytvorí disk kontajnera so zadanou veľkosťou. Predvolená inštalácia používa <code>local-lvm</code>. Rozšírená inštalácia sa pri každej ceste pýta najprv na úložisko a potom na veľkosť; navrhuje úložisko rootfs. Disk sa zobrazuje ako <code>vm-VMID-disk-N</code> a pripája sa ako <code>mpN</code>."
},
{
"title": "Adresár hostiteľa",
"body": "Adresár hostiteľa sa zadáva jeho cestou. Ak neexistuje, vytvorí sa a jeho vlastníkom bude používateľ hostiteľa, na ktorého sa mapuje používateľ kontajnera."
},
{
"title": "Ďalšie cesty",
"body": "Pred inštaláciou možno pridať ďalšie dvojice cesty alebo zväzku hostiteľa a cesty v kontajneri."
},
{
"title": "Súhrn",
"body": "Pred vytvorením CT sa zobrazí úplné mapovanie ciest a uloží sa do kontraktu inštancie."
}
]
}
}
]
},
{
"id": "options",
"title": "Dve možnosti trvalého uloženia",
"blocks": [
{
"table": {
"headers": [
"Vlastnosť",
"Disk kontajnera",
"Adresár hostiteľa"
],
"rows": [
[
"V konfigurácii",
"<code>mpN: STORAGE:vm-VMID-disk-N,mp=/config,backup=1,size=16G</code>",
"<code>mpN: /mnt/oci-shared/media,mp=/data/media</code>"
],
[
"Záloha kontajnera (vzdump)",
"Zahrnutý pri <code>backup=1</code>",
"Nezahrnutý"
],
[
"Veľkosť",
"Pevná; zväčšuje sa zmenou veľkosti prípojného bodu",
"Voľné miesto v súborovom systéme alebo datasete hostiteľa"
],
[
"Ostatné kontajnery",
"Pripája ho iba kontajner, ktorému patrí",
"Ten istý adresár možno pripojiť do viacerých kontajnerov"
],
[
"Snapshoty a obnova",
"Spravuje ich Proxmox VE spolu s CT",
"Spravujú sa na úložisku hostiteľa"
],
[
"Pri odstránení aplikácie",
"Odstráni sa spolu s kontajnerom",
"Zachová sa aj s obsahom"
],
[
"Pri presune CT na iný uzol",
"Presunie sa spolu s CT",
"Na druhom uzle musí existovať rovnaká cesta"
]
]
}
},
{
"p": "Rootfs je vyhradený pre binárne súbory a obsah obrazu. Aktualizácia alebo opätovné vytvorenie ho nahradí bez zásahu do ktoréhokoľvek z dvoch typov prípojných bodov."
}
]
},
{
"id": "example",
"title": "Príklad: kontajner s oboma umiestneniami",
"blocks": [
{
"code": {
"title": "Jellyfin nainštalovaný ako CT 151 na local-lvm (úryvok)",
"code": "rootfs: local-lvm:vm-151-disk-0,size=8G\n# Container disk, part of the CT backup\nmp0: local-lvm:vm-151-disk-1,mp=/config,backup=1,size=16G\n\n# Host directory, outside the CT backup\nmp1: /mnt/oci-shared/media,mp=/data/media"
}
},
{
"p": "Aktualizácia alebo opätovné vytvorenie nahradí iba rootfs: <code>mp0</code> zachová používateľov, knižnice a nastavenia a <code>mp1</code> naďalej sprístupňuje rovnaké médiá. Obnova zálohy CT obnoví <code>/config</code>. Adresár s médiami sa v prípade potreby obnovuje zo zálohy úložiska hostiteľa."
},
{
"flow": {
"nodes": [
{
"label": "Kontrakt",
"detail": "/config"
},
{
"label": "Umiestnenie",
"detail": "Disk kontajnera\nalebo adresár hostiteľa"
},
{
"label": "LXC",
"detail": "Pre aplikáciu\nvždy /config"
}
],
"caption": "Aplikácia vidí cestu deklarovanú obrazom; mení sa iba miesto jej uloženia."
}
}
]
},
{
"id": "shared",
"title": "Jeden adresár hostiteľa, viacero kontajnerov",
"blocks": [
{
"mermaid": {
"chartCode": "flowchart TB\n H[\"{{host}}<br/>/mnt/oci-shared/media\"]\n H --> Q[\"qBittorrent<br/>/data\"]\n H --> J[\"Jellyfin<br/>/data\"]\n H --> R[\"Radarr / Sonarr<br/>/data\"]\n Q -. \"{{config}}\" .-> QV[(\"/config mpN\")]\n J -. \"{{config}}\" .-> JV[(\"/config mpN\")]\n R -. \"{{config}}\" .-> RV[(\"/config mpN\")]",
"labels": {
"host": "Adresár hostiteľa",
"config": "Vlastná konfigurácia"
}
}
},
{
"p": "Každý kontajner uchováva svoju konfiguráciu na vlastnom disku. Knižnica alebo stiahnuté súbory sú v jednom adresári hostiteľa, pripojenom na rovnakej vnútornej ceste v každom kontajneri. Cesta, do ktorej jedna aplikácia zapisuje, je preto rovnaká ako cesta, z ktorej druhá číta."
}
]
},
{
"id": "rclone",
"title": "Cloudové úložisko cez aplikáciu rclone",
"intro": "Položka rclone v katalógu okrem inštalácie ponúka aj možnosť <strong>Aktivovať pripojenie v existujúcom kontajneri OCI s rclone</strong>. Pripojí sa vzdialené úložisko, ktoré už bolo vytvorené a autorizované vo webovom rozhraní rclone, a sprístupní sa na hostiteľovi. Ostatné kontajnery ho môžu používať ako adresár hostiteľa.",
"blocks": [
{
"steps": {
"items": [
{
"title": "Kontajner a vzdialené úložisko",
"body": "VMID kontajnera s rclone, presný názov vzdialeného úložiska a voliteľne cesta v ňom."
},
{
"title": "Názov pripojenia a vyrovnávacia pamäť",
"body": "Názov pripojenia a režim vyrovnávacej pamäte VFS: <code>off</code>, <code>minimal</code>, <code>writes</code> alebo <code>full</code> (predvolený)."
},
{
"title": "Sprístupnené zobrazenia",
"body": "Spoločný koreňový adresár, predvolene <code>/mnt/oci-shared</code>, obsahuje zobrazenie na čítanie aj zápis v <code>/mnt/oci-shared/remotes/NAME</code> a zobrazenie iba na čítanie v <code>/mnt/oci-shared/remotes-ro/NAME</code>."
},
{
"title": "Aktivácia",
"body": "Po potvrdení sa CT zastaví, nastaví sa jeho spúšťací príkaz a hookscript Proxmox VE a znova sa spustí. Operácia čaká, kým budú obe zobrazenia pripojené na hostiteľovi."
}
]
}
},
{
"calloutInfo": {
"title": "Ak sa pripojenie neaktivuje",
"body": "Obnoví sa predchádzajúca konfigurácia kontajnera a kontajner sa znova spustí. Ak aktivácia zlyhá, rclone tak zostane v pôvodnom stave."
}
}
]
},
{
"id": "network",
"title": "Adresy a siete",
"intro": "Aplikácia s jedným kontajnerom potrebuje adresu. Aplikácia s viacerými kontajnermi potrebuje aj stabilnú sieť medzi svojimi členmi.",
"blocks": [
{
"cards": {
"items": [
{
"icon": "network",
"title": "Aplikácia s jedným kontajnerom",
"body": "Vyberie sa sieťový most a DHCP alebo pevná adresa vo formáte CIDR. LXC má vlastnú adresu a súhrn zobrazuje úplné URL služieb."
},
{
"icon": "waypoints",
"title": "Aplikácia s viacerými kontajnermi",
"body": "Vyhľadá sa voľná podsieť a vytvorí sa trvalý súkromný sieťový most. Každý člen — aplikácia, databáza a vyrovnávacia pamäť — v ňom dostane pevnú adresu."
}
]
}
},
{
"flow": {
"nodes": [
{
"label": "LAN",
"detail": "Dostupná adresa\niba pre hlavnú službu"
},
{
"label": "Hlavný LXC",
"detail": "Web / API\nLAN + súkromná sieť"
},
{
"label": "Súkromná sieť",
"detail": "PostgreSQL · Valkey · ML\npevné adresy"
}
],
"caption": "Závislé služby komunikujú cez súkromnú sieť a nemajú adresu v LAN."
}
},
{
"p": "Kontrakt zostavy uchováva sieťový most, podsieť, adresy a vzťahy medzi službami. Pri aktualizácii aplikácie sa pre všetkých členov znovu použije rovnaká topológia. ProxMenux Monitor otvára hlavný kontajner na jeho adrese v LAN, nie na adrese v súkromnej sieti."
}
]
},
{
"id": "ownership",
"title": "Vlastníctvo súborov a adresárov",
"blocks": [
{
"list": {
"items": [
"Nové adresáre sa vytvárajú s UID a GID, na ktoré sa mapuje neprivilegovaný LXC.",
"Vlastníctvo existujúcich adresárov sa nemení rekurzívne.",
"Sockety, systémové súbory a citlivé cesty sa neponúkajú ako bežné adresáre hostiteľa."
]
}
}
]
},
{
"id": "backup",
"title": "Čo obsahuje záloha kontajnera",
"blocks": [
{
"table": {
"headers": [
"Položka",
"V zálohe vzdump kontajnera CT",
"Kde sa uchováva"
],
"rows": [
[
"Rootfs OCI",
"Áno",
"V zálohe CT; možno ho tiež znovu vytvoriť z obrazu a kontraktu"
],
[
"Disk kontajnera s <code>backup=1</code>",
"Áno",
"Záloha CT"
],
[
"Adresár hostiteľa",
"Nie",
"Záloha úložiska hostiteľa"
],
[
"Kontrakt inštancie",
"Áno, kópia uložená v CT",
"<code>/.proxmenux/oci-record.json</code> v CT; ďalšie kópie hostiteľa a klastra sa uchovávajú samostatne"
],
[
"Aplikácia s viacerými kontajnermi",
"Každý člen vo vlastnej zálohe",
"Zálohy všetkých členov spolu s kontraktom zostavy a jej sieťovým mostom na hostiteľovi"
]
]
}
}
]
}
]
}