Merge remote-tracking branch 'origin/develop' into HEAD

# Conflicts:
#	web/messages/es/docs/backup-restore/cross-kernel.json
#	web/messages/es/docs/backup-restore/destinations/pbs.json
This commit is contained in:
MacRimi
2026-10-18 13:49:35 +02:00
315 changed files with 37740 additions and 1079 deletions
@@ -0,0 +1,13 @@
{
"meta": {
"title": "Pravidlá správania | Dokumentácia ProxMenux",
"description": "Kódex správania ProxMenux a najlepšie postupy pre prispievateľov, testerov a používateľov.",
"ogTitle": "Pravidlá správania | Dokumentácia ProxMenux",
"ogDescription": "Očakávania týkajúce sa zodpovednosti za kód, oznamovania bezpečnostných chýb a rozsahu PR v projekte ProxMenux."
},
"errors": {
"notFound": "Chyba: Súbor CODE_OF_CONDUCT.md nebol nájdený.",
"loadFailed": "Chyba: Nemožno načítať obsah kódexu správania."
},
"contentMarkdown": "# 📝 Kódex správania a odporúčané postupy\n\nTento dokument stanovuje **zásady a usmernenia** na používanie **ProxMenuxu** s cieľom podporovať **rešpekt, spoluprácu a bezpečnosť** pri vývoji.\n\n## 📌 1. Uvedenie autorstva kódu a uznanie\n\n- Pri použití **skriptov, úryvkov kódu alebo nápadov** z iných repozitárov či od iných vývojárov bude vždy uvedený pôvodný autor.\n- V kóde alebo dokumentácii bude komentár s uvedením zdroja a podľa možnosti s odkazom na pôvodný repozitár.\n- Pri použití kódu s konkrétnou **licenciou** je potrebné dodržať jej podmienky.\n\n### ✅ Príklad správneho uvedenia zdroja v kóde:\n\n```bash\n# Skript vychádza z práce [Autor] v [Odkaz na repozitár]\n```\n\n## 🔒 2. Bezpečnosť a zodpovednosť za kód\n\n- Všetok kód v tomto repozitári dodržiava odporúčané postupy bezpečného vývoja.\n- Príspevky, ktoré úmyselne zavádzajú zraniteľnosti alebo nebezpečné postupy, nie sú povolené.\n- Skripty nikdy nesmú ohroziť bezpečnosť systému ani údaje používateľov.\n- Pred implementáciou je potrebné príspevky skontrolovať z hľadiska bezpečnosti a stability.\n\n### ⚠️ Zodpovedné nahlasovanie zraniteľností\n\nAk objavíte bezpečnostnú zraniteľnosť, NEHLÁSTE ju vo verejných issues ani na fórach.\n\nNamiesto toho ju nahláste súkromne e-mailom:\n\n📧 proxmenux@macrimi.pro\n\nPodrobnosti o bezpečnostných zraniteľnostiach a ich nahlasovaní nájdete v našich [bezpečnostných zásadách](./SECURITY.md).\n\n## 🤝 3. Pravidlá komunity\n\nNa zachovanie rešpektujúceho a profesionálneho prostredia musia všetci používatelia dodržiavať tieto pravidlá:\n\n- ✅ V diskusiách buďte úctiví a konštruktívni.\n- ❌ Obťažovanie, nenávistné prejavy ani urážlivé správanie sa nebudú tolerovať.\n- ✅ Spätnú väzbu poskytujte profesionálne a bez osobných útokov.\n- ❌ Porušenie pravidiel môže podľa závažnosti viesť k upozorneniu alebo vylúčeniu.\n\n##\n\nTento dokument podporuje etické používanie kódu, povedomie o bezpečnosti a rešpektujúcu komunitu.\n\n📢 Vytvorme spolu niečo skvelé!\n"
}
@@ -0,0 +1,293 @@
{
"meta": {
"title": "Prispievanie k ProxMenux | ProxMenux Dokumentácia",
"description": "Ako prispieť do ProxMenux: model vetiev (main / develop / feature/*), postup pull requestu, hlavička skriptu s autorstvom a voliteľným odkazom na podporu, dvojfázové rozhranie, funkcie správ a cesta od vetvy funkcie po stabilné vydanie.",
"ogTitle": "Prispievanie k ProxMenux",
"ogDescription": "Model vetiev, pracovný postup, autorstvo v hlavičke a dvojfázové rozhranie, ktoré musia prispievatelia dodržiavať."
},
"header": {
"title": "Prispievanie k ProxMenux",
"description": "ProxMenux víta príspevky komunity: nové skripty, opravy existujúcich, vylepšenia dialógov, preklady aj integrácie. Táto stránka vysvetľuje štruktúru repozitára, model vetiev a postup pull requestu, hlavičku skriptu s autorstvom a voliteľným odkazom na podporu aj pravidlá návrhu pre každý príspevok.",
"section": "O projekte"
},
"twoPagesCallout": {
"title": "Dve súvisiace stránky, jeden projekt",
"body": "Nemýľte si túto stránku s <contributorsLink>Prispievateľmi</contributorsLink>: tá oslavuje ľudí, ktorí už prispievajú (testeri, recenzenti, vývojári). Táto stránka je pre <em>vás</em> – potenciálneho prispievateľa – a vysvetľuje, ako poslať PR, ktoré bude zlúčené."
},
"branching": {
"heading": "Model vetiev",
"intro": "ProxMenux používa trojstupňový vetviaci model:",
"headerBranch": "Vetva",
"headerPurpose": "Účel",
"rows": [
{
"branch": "main",
"purposeRich": "Stabilný kód pripravený na produkciu. Sem sa začleňujú iba zmeny pripravené na vydanie. Túto verziu dostanú používatelia pri bežnej inštalácii ProxMenux."
},
{
"branch": "develop",
"purposeRich": "Aktívna vývojová vetva. Všetky nové zmeny sa najskôr začleňujú sem; ide o kanál „beta“. Keď je stabilné vydanie pripravené, z tejto vetvy sa prenesie do <code>main</code>."
},
{
"branch": "feature/*",
"purposeRich": "Krátkodobé vetvy pre funkciu, opravu alebo vylepšenie. Vzniknú z <code>develop</code> a po kontrole sa cez pull request zlúčia späť do <code>develop</code>."
}
],
"calloutTitle": "Čo to znamená pre užívateľov",
"calloutBody": "Používatelia vetvy <code>main</code> dostávajú otestované vydania. Kto chce nové funkcie skôr a znesie občasné nedostatky, môže sledovať <code>develop</code>. Nové funkcie vždy najprv prejdú cez <code>develop</code>; bez tohto cyklu sa do <code>main</code> nedostanú."
},
"workflow": {
"heading": "Postup pull requestu",
"intro": "Od nápadu po začlenenie do vydania v piatich krokoch:",
"step1Lead": "<strong>Vytvorte vetvu pre funkciu z <code>develop</code></strong>:",
"step1Code": "git clone https://github.com/MacRimi/ProxMenux.git\ncd ProxMenux\ngit checkout develop\ngit pull origin develop\ngit checkout -b feature/your-feature-name",
"step1Trail": "Použite výstižný názov vetvy: <code>feature/zfs-arc-tuning</code>, <code>feature/fix-iommu-detection</code>, <code>feature/add-tailscale-script</code>.",
"step2Lead": "<strong>Pracujte na svojich zmenách a posuňte vetvu:</strong>",
"step2Code": "# Make your changes, then:\ngit add scripts/...\ngit commit -m \"Add ZFS ARC tuning script\"\ngit push -u origin feature/your-feature-name",
"step3": "<strong>Otvorte pull request do <code>develop</code></strong>, nie do <code>main</code>. Na GitHube overte, že základná vetva je <code>develop</code>. Opíšte účel skriptu, jeho zmeny a verzie Proxmox VE, na ktorých ste ho testovali.",
"step4": "<strong>Po kontrole sa zmeny zlúčia do <code>develop</code>.</strong> Správca skontroluje kvalitu kódu, hlavičky a dvojfázové rozhranie. Ak vyžiada úpravy, odošlite ďalšie commity do rovnakej vetvy; PR sa aktualizuje automaticky.",
"step5": "<strong>Stabilné vydania sa prenášajú z <code>develop</code> do <code>main</code>.</strong> Pri vydaní sa <code>main</code> posunie na <code>develop</code> pomocou fast-forward a označí sa tagom. Váš príspevok sa stane súčasťou ďalšej stabilnej verzie."
},
"scriptHeader": {
"heading": "Hlavička skriptu: metadáta a popis",
"intro": "Každý skript ProxMenux začína dvoma susednými blokmi komentárov, ktoré tvoria hlavičku. <strong>Oba sú povinné</strong>: prezradia autora a účel bez potreby čítať samotný kód.",
"bullets": [
"<strong>Horný blok: metadáta.</strong> Autor, voliteľné odkazy na GitHub a podporu, správca, autorské práva, licencia, verzia a dátum aktualizácie. Tu prebieha aj <em>uznanie prispievateľov</em>: pri novom skripte uveďte svoje meno a voliteľne stránku GitHub a profil podpory, napríklad Ko-fi, GitHub Sponsors alebo Buy Me a Coffee.",
"<strong>Dolný blok: popis.</strong> Krátky odsek v jednoduchej angličtine vysvetľuje skript. Číta sa <em>pred</em> kódom a musí sám objasniť účel, hlavné akcie, dotknuté zdroje a predpoklady."
],
"licenseCalloutTitle": "Licenčná linka je pevne stanovená GPL-3.0",
"licenseCalloutBody": "ProxMenux je vydaný pod <strong>GNU General Public License v3.0</strong>. Všetky skripty používajú rovnakú licenciu; riadok <code>License</code> v hlavičke musí obsahovať odkaz GPL-3.0 z príkladu nižšie. Nie je to voľba pre jednotlivý skript. Prispením súhlasíte s vydaním pod GPL-3.0: každý môže skript čítať, upraviť a ďalej šíriť vrátane zmien pri zachovaní rovnakej licencie. Úplné znenie: <licenseLink>MacRimi/ProxMenux/LICENSE</licenseLink>.",
"templateCode": "#!/bin/bash\n\n# ==========================================================\n# ProxMenux - A menu-driven script for Proxmox VE management\n# ==========================================================\n# Author : Your Name\n# GitHub : github.com/yourhandle\n# Sponsor : ko-fi.com/yourhandle\n# Maintainer : MacRimi\n# Copyright : (c) 2026 MacRimi & contributors\n# License : (GPL-3.0) (https://github.com/MacRimi/ProxMenux/blob/main/LICENSE)\n# Version : 1.0\n# Last Updated: DD/MM/YYYY\n# ==========================================================\n# Description:\n# Short paragraph explaining what the script does.\n# Mention the main actions (e.g. \"creates a ZFS pool\",\n# \"configures IOMMU and reboots\", \"imports an ISO into a VM\"),\n# the resources it touches, and any prerequisites the user\n# should be aware of before running it.\n# ==========================================================",
"optionalNote": "Riadky <code>GitHub</code> a <code>Sponsor</code> sú voliteľné – vynechajte ich, ak ich nechcete zverejniť. Všetko ostatné sa vyžaduje.",
"whyCalloutTitle": "Prečo na tom záleží",
"whyCalloutBody": "Prispievanie do otvoreného softvéru je dobrovoľná práca. Meno a prípadný odkaz na podporu priamo v zdrojovom kóde zviditeľňujú autorstvo pri každom čítaní; nestratí sa za názvom projektu. Popis má iný význam: je prvou vecou, ktorú číta budúci správca alebo zvedavý používateľ. Jasný popis často rozhoduje, či skriptu dôverujú alebo sa mu vyhnú."
},
"structure": {
"heading": "Štruktúra projektu",
"intro": "Kde sa v repozitári nachádzajú jednotlivé druhy skriptov:",
"treeCode": "scripts/\n├── menus/ # Top-level menu scripts (entry points)\n├── storage/ # Disk, storage and passthrough scripts\n├── share/ # NFS, Samba, local share scripts\n├── vm/ # VM creation and configuration scripts\n├── gpu_tpu/ # GPU / TPU passthrough scripts\n├── post_install/ # Post-install automation scripts\n├── backup_restore/ # Backup and restore scripts\n├── utilities/ # System utility scripts\n├── global/ # Shared helper libraries (sourced by other scripts)\n├── utils.sh # Shared utility functions and message helpers\n└── help_info_menu.sh # Interactive help and command reference",
"outro": "Každý skript pri štarte načíta <code>utils.sh</code> pomocou source, aby získal funkcie správ, indikátor priebehu, farby a prekladový systém. Zdieľané pomocné knižnice v <code>scripts/global/</code> výslovne načítavajú skripty, ktoré ich potrebujú."
},
"twoPhase": {
"heading": "Dvojfázová politika návrhu UI",
"intro": "Ide o najdôležitejšie pravidlo ProxMenux a najčastejší dôvod požiadaviek na úpravu PR. Každý skript je rozdelený na <strong>presne dve fázy</strong>:",
"headerPhase": "Fáza",
"headerPurpose": "Účel",
"headerScreen": "Stav obrazovky",
"rows": [
{
"phaseRich": "<strong>Fáza 1: výber</strong>",
"purposeRich": "Zbierajte každé rozhodnutie užívateľa. Spustite všetky potrebné prípravné práce (sondy, skeny, kontroly).",
"screenRich": "Prekrytia <code>dialog</code>. Ak kontrola medzi ponukami trvá viac ako sekundu či dve, zobrazte indikátor <code>msg_info</code>, aby používateľ vedel, že skript nezamrzol. Tesne pred ďalším dialógom zavolajte <code>stop_spinner</code>."
},
{
"phaseRich": "<strong>Fáza 2: vykonanie</strong>",
"purposeRich": "Vykonajte všetky operácie. Na obrazovke postupne zobrazujte úplnú históriu priebehu.",
"screenRich": "Viditeľné hlásenia <code>msg_info</code> / <code>msg_ok</code>; nikdy nie <code>dialog</code>."
}
],
"principle": "Zásada: <strong>najprv zhromaždiť všetky voľby, potom všetko vykonať</strong>. Používateľ najprv pracuje s prehľadným dialógovým menu (fáza 1) a potom sleduje vykonávanie vo forme záznamu (fáza 2). Fázy sa nemiešajú: počas vykonávania sa neotvárajú dialógy a počas výberu sa nevypisuje priebeh.",
"phase1Heading": "Fáza 1: typický vzor",
"phase1Code": "# Silent preparatory work between dialogs\nmsg_info \"$(translate \"Checking disk assignments...\")\"\nASSIGNED_TO=$(check_assignments \"$DISK\")\nstop_spinner # ← clears line silently, result saved in variable\n\n# Next dialog can now use ASSIGNED_TO\nif [ -n \"$ASSIGNED_TO\" ]; then\n dialog --yesno \"$(translate \"Disk already assigned. Continue?\")\" $UI_YESNO_H $UI_YESNO_W\nfi\n\n# Collect multiple decisions per item with parallel arrays\ndeclare -a DISK_LIST=()\ndeclare -a DISK_FORMAT_TYPES=()\ndeclare -a DISK_MOUNT_POINTS=()\nfor DISK in $SELECTED; do\n msg_info \"$(translate \"Analyzing disk...\")\"\n CURRENT_FS=$(lsblk -no FSTYPE \"$DISK\" | xargs)\n stop_spinner\n\n FORMAT=$(dialog --backtitle \"$BACKTITLE\" \\\n --title \"$(translate \"Select Filesystem\")\" \\\n --menu \"...\" $UI_SHORT_MENU_H $UI_SHORT_MENU_W $UI_SHORT_MENU_LIST_H \\\n \"ext4\" \"...\" \"xfs\" \"...\" \"btrfs\" \"...\" \\\n 2>&1 >/dev/tty)\n [ -z \"$FORMAT\" ] && continue\n\n DISK_LIST+=(\"$DISK\")\n DISK_FORMAT_TYPES+=(\"$FORMAT\")\ndone",
"phase1RulesIntro": "<strong>Pravidlá pre fázu 1:</strong>",
"phase1Rules": [
"Ak beží indikátor <code>msg_info</code> a potrebujete otvoriť ponuku <code>dialog</code> alebo <code>whiptail</code>, najprv zavolajte <code>stop_spinner</code>. Indikátor nemôže bežať súčasne s prekrytím týchto nástrojov. Ak indikátor nebeží, volanie nie je potrebné.",
"Použite <code>show_proxmenux_logo</code> + <code>msg_title</code> + <code>msg_info</code> na vizuálny kontext dlhej operácie vo fáze 1, napríklad kontroly trvajúcej päť sekúnd či viac. Funkcia už vyčistí obrazovku, preto pred ňou nevolajte <code>clear</code>.",
"Nevolajte <code>show_proxmenux_logo</code> medzi dialógovými menumi, kde nie je čo zobraziť, a vyčistenie obrazovky prázdneho terminálu je len vizuálny hluk.",
"Uložte všetky rozhodnutia a výsledky sondy v premenných alebo paralelných poliach. Viditeľné zhrnutie sa uskutoční na začiatku fázy 2, nie vo fáze 1."
],
"phase2Heading": "Fáza 2: typický vzor",
"phase2Code": "# ── PHASE 2 — EXECUTION ─────────────────────────────\nshow_proxmenux_logo\nmsg_title \"$(translate \"My Script Title\")\"\n\n# Recap Phase 1 preparatory results — show what was already done\nmsg_ok \"$(translate \"CT $CTID selected.\")\"\nmsg_ok \"$(translate \"Repositories verified.\")\"\nmsg_ok \"$(translate \"Disks to process: ${#DISK_LIST[@]}\")\"\n\n# Now execute operations\nfor i in \"${!DISK_LIST[@]}\"; do\n DISK=\"${DISK_LIST[$i]}\"\n FORMAT=\"${DISK_FORMAT_TYPES[$i]}\"\n\n msg_info \"$(translate \"Formatting\") $DISK $(translate \"as\") $FORMAT...\"\n mkfs.\"$FORMAT\" \"$DISK\" >/dev/null 2>&1\n msg_ok \"$(translate \"Formatted.\")\"\ndone\n\nmsg_ok \"$(translate \"Completed. ${#DISK_LIST[@]} disk(s) processed.\")\"\nmsg_success \"$(translate \"Press Enter to return to menu...\")\"\nread -r",
"phase2Rules": "<strong>Pravidlá fázy 2:</strong> začnite s <code>show_proxmenux_logo + msg_title</code> a hneď zhrňte výsledky fázy 1 riadkami <code>msg_ok</code>. Už nevolajte <code>show_proxmenux_logo</code>, pretože by vymazalo nahromadený priebeh. Nevolajte <code>dialog</code>; pri nevyhnutnom rozhodnutí za behu použite <code>whiptail</code> podľa nasledujúcej časti."
},
"dialogVsWhiptail": {
"headingRich": "Kedy používať <code>dialog</code> vs <code>whiptail</code>",
"intro": "Oba nástroje vykresľujú textové používateľské rozhranie, ale na obrazovke sa správajú odlišne. ProxMenux ich preto používa v dvoch samostatných fázach.",
"headerTool": "Nástroj",
"headerWhen": "Kedy ju použiť",
"headerEffect": "Účinok na obrazovku",
"rows": [
{
"toolRich": "<strong><code>dialog</code></strong>",
"whenRich": "<strong>Vždy vo fáze 1.</strong> Každý interaktívny výber, napríklad VM, disk, súborový systém alebo potvrdenie akcie, používa <code>dialog</code>. Ide o predvolený nástroj rozhrania ProxMenux.",
"effectRich": "Preberá terminál: vyčistí obrazovku, kreslí jej prekrývanie a pri zatvorení vráti terminál do svojho predchádzajúceho stavu. Fáza 1, pretože zatiaľ nič užitočné neukazuje."
},
{
"toolRich": "<strong><code>whiptail</code></strong>",
"whenRich": "<strong>Iba vo fáze 2, iba ak je to nevyhnutné.</strong> Typickým prípadom je výzva na reštartovanie na konci vykonávania. Nesiahajte po <code>whiptail</code>, aby ste sa spýtali „pokračovať?“ uprostred vykonávania — toto rozhodnutie malo byť urobené vo fáze 1.",
"effectRich": "Ľahšie prekrytie, ktoré <em>nevymaže</em> kontext terminálu. Nahromadená história <code>msg_ok</code>/<code>msg_info</code> z fázy 2 zostane viditeľná za dialógom. Preto je vhodné, keď už obrazovka zobrazuje priebeh."
}
],
"calloutTitle": "Prečo je rozdelenie dôležité",
"calloutBody": "Ak zavoláte <code>dialog</code> uprostred fázy 2, zmiznú všetky riadky <code>msg_ok</code>, ktoré používateľ dovtedy sledoval. Vymažete tým viditeľný záznam vykonaných krokov. <code>whiptail</code> tomu zabráni. Pravidlo teda nie je svojvoľné: zachováva používateľovi prehľad o tom, čo skript doteraz urobil.",
"rebootHeading": "Výzva na reštart: typické použitie whiptail vo fáze 2",
"rebootIntro": "Ak môže byť po skončení skriptu potrebný reštart, napríklad po zapnutí IOMMU alebo zmene parametrov jadra, výzva na konci fázy 2 používa <code>whiptail</code>. Vždy pridajte vetvu Nie, ktorá upozorní, aby používateľ nepoužíval dotknutý zdroj pred reštartom:",
"rebootCode": "if [[ \"$HOST_REBOOT_REQUIRED\" == \"yes\" ]]; then\n echo \"\"\n if whiptail --title \"$(translate \"Reboot Required\")\" --yesno \\\n \"\\n$(translate \"A host reboot is required before starting the VM. Reboot now?\")\" \\\n 13 78; then\n msg_warn \"$(translate \"Rebooting the system...\")\"\n reboot\n else\n echo \"\"\n msg_info2 \"$(translate \"Do not start the VM until the system has been rebooted.\")\"\n fi\nfi\n\nmsg_success \"$(translate \"Press Enter to return to menu...\")\"\nread -r"
},
"messageFunctions": {
"heading": "Prehľad funkcií správ",
"intro": "Všetky sú definované v <code>utils.sh</code>. Používajte ich pre výstup viditeľný používateľovi, aby skripty mali jednotný vzhľad. Ak potrebujete novú funkciu, napríklad úroveň závažnosti alebo pomocníka rozloženia, navrhnite ju v pull requeste. Po kontrole sa pridá do <code>utils.sh</code>, ak má širšie využitie.",
"headerFunction": "Funkcia",
"headerWhen": "Kedy používať",
"headerSpinner": "Indikátor priebehu",
"rows": [
{
"function": "msg_info \"text\"",
"whenRich": "Prebieha operácia.",
"spinner": "Spustí"
},
{
"function": "stop_spinner",
"whenRich": "Koniec tichej prípravnej práce vo fáze 1: zastaví indikátor a vyčistí riadok.",
"spinner": "Zastaví"
},
{
"function": "msg_ok \"text\"",
"whenRich": "Operácia bola úspešná. Použite aj pre zapnutú funkciu, hoci je ešte potrebný reštart.",
"spinner": "Zastaví"
},
{
"function": "msg_warn \"text\"",
"whenRich": "Skutočné varovanie alebo zhoršený stav.",
"spinner": "Zastaví"
},
{
"function": "msg_error \"text\"",
"whenRich": "Závažná chyba.",
"spinner": "Zastaví"
},
{
"function": "msg_info2 \"text\"",
"whenRich": "Neblokujúce odporúčanie, tyrkysový informačný riadok.",
"spinner": "Zastaví"
},
{
"function": "msg_success \"text\"",
"whenRich": "Záverečná výzva „Stlačte Enter pre návrat“ na konci fázy 2.",
"spinner": "Zastaví"
},
{
"function": "msg_title \"text\"",
"whenRich": "Tučný nadpis so zabudovanými rozostupmi. Používa sa na začiatku fázy 2.",
"spinner": "—"
},
{
"function": "show_proxmenux_logo",
"whenRich": "Vyčistí obrazovku a zobrazí logo. Na začiatku fázy 2 sa volá <em>raz</em>.",
"spinner": "—"
}
]
},
"dialogConventions": {
"heading": "Pravidlá používania dialog",
"bullets": [
"Každému volaniu <code>dialog</code> a <code>whiptail</code> vždy odovzdajte <code>--backtitle \"$BACKTITLE\"</code>. <code>$BACKTITLE</code> je vždy <code>\"ProxMenux\"</code>, nastavené raz v hlavičke skriptu a nikdy neprepísané. Rámec rozhrania musí používateľovi ukazovať názov projektu, nie vlastný nadpis skriptu.",
"Vždy zabaľte titulky a správy s <code>$(translate \"...\")</code>.",
"Vždy presmerujte <code>dialog</code> výstup pomocou <code>2&gt;&amp;1 &gt;/dev/tty</code> — zachytený stdout sa stane výberom používateľa, zatiaľ čo samotné dialógové okno sa kreslí na terminál.",
"Použite štandardné premenné rozmerov UI (<code>$UI_MENU_H</code>, <code>$UI_MSG_W</code>, atď.) pre konzistentnú veľkosť medzi skriptmi.",
"Vždy skontrolujte prázdne / zrušené výbery a zaobchádzajte s nimi elegantne."
],
"exampleIntro": "Úplný príklad: vytvorenie ponuky na výber VM a spracovanie zrušenia.",
"exampleCode": "# 1) Build the list of VMs as alternating \"ID NAME\" pairs.\n# dialog --menu expects this exact shape: tag1 description1 tag2 description2 ...\nVM_LIST=\"\"\nfor vmid in $(qm list | awk 'NR>1 {print $1}'); do\n vm_name=$(qm config \"$vmid\" | awk -F': ' '/^name:/ {print $2}')\n VM_LIST=\"$VM_LIST $vmid \\\"$vm_name\\\"\"\ndone\n\n# 2) Show the dialog. Captured stdout is the user's selection (the VMID).\nVMID=$(eval \"dialog --backtitle \\\"\\$BACKTITLE\\\" \\\n --title \\\"\\$(translate \\\"Select VM\\\")\\\" \\\n --menu \\\"\\$(translate \\\"Choose a VM from the list:\\\")\\\" \\\n \\$UI_MENU_H \\$UI_MENU_W \\$UI_MENU_LIST_H \\\n $VM_LIST \\\n 2>&1 >/dev/tty\")\n\n# 3) Empty result means the user pressed Cancel or Esc — exit silently.\nif [ -z \"$VMID\" ]; then\n exit 0\nfi\n\n# 4) Continue with the rest of Phase 1, knowing VMID is now set.\necho \"User selected VMID=$VMID\""
},
"translation": {
"heading": "Politika prekladu",
"intro": "Všetky užívateľsky viditeľné reťazce musia byť zabalené s funkciou <code>translate</code>. ProxMenux ich automaticky prekladá do všetkých podporovaných jazykov, ktoré píšete anglicky, užívateľ číta ich rodný jazyk.",
"code": "msg_ok \"$(translate \"Operation completed successfully.\")\"\nmsg_error \"$(translate \"Failed to start container\") $CTID.\"\ndialog --title \"$(translate \"Select Storage\")\" ...",
"bullets": [
"Reťazce píšte po anglicky; preklad sa spracuje automaticky pri zostavení.",
"Udržujte stručnosť. Ak je to možné, nepoužívajte premenné vo vnútri dlhých viet.",
"<strong>Neprekladajte</strong> názvy premenných, cesty ani technické identifikátory."
]
},
"variableStyle": {
"heading": "Pravidlá premenných a štýlu",
"bullets": [
"Pre premenné úrovne skriptov použite <code>UPPER_CASE</code>.",
"Pre lokálne funkčné premenné (vyhlásiť s <code>local</code>) použite <code>lower_case</code>.",
"Všetky rozvinutia premenných uzavrite do úvodzoviek: <code>\"$VAR\"</code>, nie <code>$VAR</code>.",
"Použite <code>[[ ]]</code> pre podmienky, nie <code>[ ]</code> (s výnimkou prípadov, keď sa POSIX vyžaduje).",
"<code>show_proxmenux_logo</code> je správny spôsob vyčistenia obrazovky: vyčistí ju a zobrazí logo projektu pre vizuálny kontext. Zavolajte ho raz na začiatku fázy 2 a voliteľne pred dlhou prípravnou kontrolou s indikátorom vo fáze 1."
],
"standardNamesIntro": "Štandardné názvy premenných v rámci projektu:",
"standardNamesCode": "CTID # container ID\nVMID # virtual machine ID\nDISK # device path (e.g. /dev/sdb)\nPARTITION # partition path (e.g. /dev/sdb1)\nSTORAGE # Proxmox storage name\nMOUNT_POINT # filesystem mount path",
"redirectHeading": "Presmerovanie výstupu nástroja počas fázy 2",
"redirectIntro": "Fáza 2 zobrazuje prehľadný záznam riadkov <code>msg_info → msg_ok</code>. Ak volaný nástroj, napríklad apt, mkfs, qm, pct alebo dd, zapisuje na stdout/stderr, posúva správy a naruší prehľad. Používateľ potom nerozozná priebeh skriptu od podrobného výstupu nástroja.",
"withoutRedirectIntro": "<strong>Bez presmerovania</strong>: čo používateľ vidí, ak neošetríte rušivý výstup.",
"withoutRedirectCode": "ℹ Installing kernel package...\nReading package lists... Done\nBuilding dependency tree... Done\nReading state information... Done\nThe following NEW packages will be installed:\n proxmox-kernel-6.5\n0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.\nNeed to get 12.5 MB of archives.\nAfter this operation, 47.2 MB of additional disk space will be used.\nGet:1 http://download.proxmox.com/debian/pve trixie/pve-no-subscription amd64 ...\n... [200+ more lines of dpkg output] ...\n✓ Kernel installed.",
"withRedirectIntro": "<strong>S presmerovaním</strong> — ako vyzerá tá istá operácia, keď je šum odoslaný inam:",
"withRedirectCode": "ℹ Installing kernel package...\n✓ Kernel installed.\nℹ Configuring kernel command line...\n✓ Configured.\nℹ Refreshing boot loader...\n✓ Boot loader updated.",
"twoPatternsIntro": "Dva vzory na výber:",
"discardLead": "<strong>Zahodiť výstup</strong>, ak ho nepotrebujete: najjednoduchšia a najrýchlejšia možnosť.",
"discardCode": "DEBIAN_FRONTEND=noninteractive apt-get install -y \"$package\" >/dev/null 2>&1",
"logLead": "<strong>Pošlite výstup do súboru denníka</strong>, keď ho budete chcieť neskôr skontrolovať (ladenie neúspešnej inštalácie, kontrola toho, čo dpkg skutočne urobil). Toto je preferovaný vzor pre akúkoľvek operáciu apt:",
"logCode": "apt-get install -y \"$package\" >> \"$log_file\" 2>&1",
"referenceOutro": "<code>scripts/global/update-pve9_2.sh</code> je referenčná implementácia: každé volanie <code>apt-get</code> zapisuje do súboru záznamu. Používateľ vidí iba prehľadný tok <code>msg_info → msg_ok</code>, no pri probléme možno zo súboru presne zistiť, čo apt vykonal."
},
"dosAndDonts": {
"heading": "Čo robiť a čomu sa vyhnúť",
"doHeading": "✅ Robiť",
"doBullets": [
"<code>stop_spinner</code> pred <code>dialog</code> vo fáze 1 iba vtedy, keď <code>msg_info</code> spinner beží.",
"Fáza 2 začína s <code>show_proxmenux_logo + msg_title + msg_ok</code> zhrnutie výsledkov fázy 1.",
"Pre úspešne zapnuté funkcie použite <code>msg_ok</code>, aj keď je potrebný reštart.",
"Používajte <code>whiptail</code> (nie <code>dialog</code>) pre akýkoľvek postup po vykonaní, ktorý sa musí objaviť vo fáze 2.",
"V dialógových oknách reštartu vždy zahrňte vetvu „Nie“, ktorá varuje používateľa, aby nespúšťal dotknutý zdroj, kým nebude reštartovaný.",
"Logiku určenú iba pre VM chráňte kontrolou <code>[[ -f \"/etc/pve/qemu-server/$'{'vmid'}'.conf\" ]]</code>: radiče a NVMe PCIe nemožno priradiť LXC cez PCI passthrough.",
"Použite <code>ensure_repositories</code> z <code>utils-install-functions.sh</code> namiesto bezpodmienečného <code>apt-get update</code>.",
"Používajte paralelné polia vo fáze 1, ak každá položka potrebuje viac dialógov."
],
"dontHeading": "❌ Nerobiť",
"dontBullets": [
"Zavolajte <code>dialog</code>, kým je spinner aktívny.",
"Preskočiť zhrnutie fázy 1 na začiatku fázy 2.",
"Zavolať <code>show_proxmenux_logo</code> druhýkrát; vymaže všetko, čo fáza 2 vypísala.",
"Použite <code>dialog</code> vo fáze 2 (použite <code>whiptail</code> pre zriedkavý nevyhnutný prípad).",
"Použite holý <code>clear</code>.",
"Obaľovať <code>msg_title</code> prázdnymi riadkami <code>echo \"\"</code> — potrebné medzery už obsahuje.",
"Použiť <code>msg_warn</code> pre hlásenie úspešne zapnutej funkcie, ktorá je <code>msg_ok</code>.",
"Spustiť bezpodmienečné <code>apt-get update</code>; namiesto toho použite <code>ensure_repositories</code>."
]
},
"submitting": {
"heading": "Predloženie príspevku",
"steps": [
"Vytvorte fork repozitára <code>MacRimi/ProxMenux</code> na GitHube a potom svoj fork naklonujte.",
"Vytvorte vetvu <code>feature/*</code> z <code>develop</code> (pozrite <em>Model vetiev</em> vyššie).",
"Postupujte podľa tejto príručky pre akékoľvek nové alebo zmenené skripty. Napíšte hlavičku s Vaším menom; pridajte voliteľný riadok sponzora, ak chcete.",
"Otestujte skript na skutočnej inštancii Proxmox VE: fázu 1 so všetkými vetvami dialógov a fázu 2 so všetkými operáciami aj čistým návratom pri chybe.",
"Otvorte pull request <strong>do vetvy <code>develop</code></strong> s jasným opisom: čo skript robí, čo sa zmenilo a na ktorej verzii Proxmox VE bol otestovaný.",
"Uistite sa, že váš príspevok rešpektuje <cocLink>Kódex správania</cocLink>."
],
"securityOutro": "Pokiaľ ide o otázky citlivé na bezpečnosť, postupujte podľa toku zverejnenia v <securityLink>SECURITY.md</securityLink> namiesto otvárania verejnej otázky."
},
"whereNext": {
"heading": "Kam ďalej",
"items": [
{
"kind": "external",
"url": "https://github.com/MacRimi/ProxMenux/blob/main/CONTRIBUTING.md",
"label": "CONTRIBUTING.md (úplný sprievodca)",
"tail": " — záväzný zdroj všetkých pravidiel vrátane pokročilých hardvérových postupov."
},
{
"kind": "internal",
"href": "/docs/about/contributors",
"label": "Prispievatelia",
"tail": " — ľudia, ktorých práca formovala vydania ProxMenux. Ide o inú stránku než túto."
},
{
"kind": "internal",
"href": "/docs/about/code-of-conduct",
"label": "Kódex správania",
"tail": " — Každý prispievateľ súhlasí s dodržiavaním noriem."
},
{
"kind": "external",
"url": "https://github.com/MacRimi/ProxMenux/discussions",
"label": "GitHub Discussions",
"tail": " — Ak si nie ste istí, či idea sedí, alebo nájsť spolupracovníkov na väčšiu funkciu, spýtajte sa pred stavaním."
}
]
}
}
@@ -0,0 +1,38 @@
{
"meta": {
"title": "Prispievatelia | Dokumentácia ProxMenux",
"description": "Poďakovanie ľuďom, vďaka ktorým ProxMenux vzniká: testerom, kontrolórom a vývojárom, ktorí sa podieľajú na každom vydaní.",
"ogTitle": "Prispievatelia | Dokumentácia ProxMenux",
"ogDescription": "Zoznámte sa s prispievateľmi ProxMenux."
},
"header": {
"title": "Prispievatelia",
"description": "Projekt ProxMenux rastie vďaka svojim prispievateľom. Táto stránka oceňuje ich prácu: testovanie zostáv pred vydaním, odhaľovanie regresií, kontrolu PR a formovanie nových funkcií.",
"section": "O projekte"
},
"beyond": {
"title": "Ďalší prispievatelia",
"body": "Mnohí ďalší ľudia prispievajú hlásením chýb, návrhmi funkcií v Discussions, beta testovaním a prekladmi. Úplný zoznam prispievateľov do kódu nájdete v <extlink>grafe prispievateľov na GitHube</extlink>. Táto stránka vyzdvihuje ľudí, ktorí sa najaktívnejšie zapájajú do testovania a kontroly vydaní ProxMenuxu."
},
"testers": {
"heading": "Testeri a kontrolóri",
"intro": "Títo ľudia patrili medzi prvých prispievateľov do projektu. Testovaním, hlásením problémov a návrhmi zlepšení pomohli ProxMenuxu vyrásť do dnešnej podoby.",
"roles": {
"testing": "Testovanie",
"testingReviewer": "Testovanie a kontrola"
},
"youtube": "YouTube"
},
"contribute": {
"heading": "Chceš prispieť?",
"intro": "Akýkoľvek príspevok je vítaný – kód, testovanie, dizajn, dokumentácia alebo len zdieľanie nápadov:",
"tester": "<strong>Tester</strong> — vyskúšajte <beta>beta kanál</beta> a pred stabilným vydaním nahláste, čo funguje a čo nie.",
"developer": "<strong>Vývojár</strong> — Bash, Next.js (TypeScript) a trochu Pythonu pre virtuálne prostredie prekladov (venv). PR na <gh>GitHube</gh> sú vítané.",
"designer": "<strong>Dizajnér</strong> — vylepšenia používateľského rozhrania, ikony a snímky obrazovky pre dokumentáciu.",
"ideas": "<strong>Nápady</strong> — pred vytvorením požiadavky na novú funkciu otvorte tému v <disc>GitHub Discussions</disc>."
},
"coc": {
"title": "Najprv si prečítajte kódex správania",
"body": "Pred odoslaním kódu alebo nahlásením problému si prečítajte <coclink>Pravidlá správania a osvedčené postupy</coclink>. Opisujú očakávania týkajúce sa zodpovednosti za kód, oznamovania bezpečnostných chýb a rozsahu PR."
}
}
+94
View File
@@ -0,0 +1,94 @@
{
"meta": {
"title": "Časté otázky | Dokumentácia ProxMenux",
"description": "Časté otázky o ProxMenuxe: funkcie, inštalácia, kompatibilita od PVE 8, prispôsobenie, aktualizácie, bezpečnosť, produkčné použitie, systémové súbory, prispievanie a odinštalovanie.",
"ogTitle": "Časté otázky | Dokumentácia ProxMenux",
"ogDescription": "Časté otázky o inštalácii ProxMenuxu, kompatibilite, bezpečnosti a možnostiach prispievania."
},
"header": {
"title": "Často kladené otázky",
"description": "Bežné otázky o ProxMenuxe: čo to je, komu slúži, inštalácia, aktualizácia, odinštalovanie, kompatibilita, prispôsobenie, bezpečnosť a prispievanie. Ak tu svoju otázku nenájdete, pozrite si GitHub Discussions alebo vytvorte issue.",
"section": "O projekte"
},
"quickLinks": {
"title": "Rýchle odkazy",
"installationLabel": "Inštalácia",
"installationSuffix": " — inštalačný príkaz na jednom riadku a potrebné závislosti.",
"introductionLabel": "Úvod",
"introductionSuffix": " — čo ProxMenux robí, za päť minút.",
"uninstallLabel": "Odinštalovať",
"uninstallSuffix": " — úplné odstránenie programu.",
"issuesLabel": "GitHub Issues",
"discussionsLabel": "Diskusie"
},
"q1": {
"question": "Čo je ProxMenux a na čo slúži?",
"p1Rich": "<strong>ProxMenux</strong> je interaktívny nástroj s ponukami, ktorý sprístupňuje <strong>Proxmox VE</strong> všetkým používateľom bez ohľadu na ich technické skúsenosti. Zjednodušuje vykonávanie príkazov a umožňuje spravovať systém bez pokročilých znalostí Linuxu.",
"p2": "Menej skúsení používatelia môžu spúšťať príkazy cez prehľadné ponuky a nemusia ich ručne zadávať do terminálu. Skúseným správcom ProxMenux šetrí kroky pri opakovaných úlohách: zabezpečení po inštalácii, GPU passthrough, importe VM vo formáte OVF a rotácii snímok ZFS.",
"p3": "Proxmox VE sa široko používa na:",
"items": [
"Virtualizácia na podnikovej úrovni",
"HomeLab a osobné cloudové riešenia",
"Multimediálne servery, automatizácia a ďalšie"
]
},
"q2": {
"question": "Ako nainštalujem ProxMenux?",
"p1Rich": "Postupujte podľa <installlink>inštalačnej príručky</installlink>. V skratke:",
"stableInstall": "bash -c \"$(wget -qLO - https://raw.githubusercontent.com/MacRimi/ProxMenux/main/install_proxmenux.sh)\"",
"p2": "Po nainštalovaní jednoducho spustite:",
"menuCmd": "menu"
},
"q3": {
"question": "Je ProxMenux kompatibilný so všetkými verziami Proxmoxu?",
"bodyRich": "<strong>Nie — ProxMenux vyžaduje Proxmox VE 8 alebo novší.</strong> PVE 7 a staršie verzie nie sú podporované. Ak ešte používate PVE 7, najskôr prejdite na 8.x podľa oficiálneho postupu Proxmoxu. Následný prechod z 8 na 9 môžete vykonať v ProxMenuxe cez <upgradelink>Nástroje → Aktualizovať PVE 8 na PVE 9</upgradelink>."
},
"q4": {
"question": "Môžem prispôsobiť ProxMenux?",
"p1Rich": "Aktualizácie môžu prepísať miestne zmeny hlavných skriptov, preto tieto súbory neupravujte priamo. Prispôsobiť si však <em>môžete</em>:",
"items": [
"Banner konzoly prostredníctvom nástroja <strong>FastFetch</strong> v možnostiach po inštalácii.",
"Ktoré voliteľné súčasti sa nainštalujú (Monitor, Fail2Ban, Lynis a ďalšie): vyberiete ich počas inštalácie alebo neskôr v príslušných ponukách."
]
},
"q5": {
"question": "Ako aktualizujem ProxMenux?",
"p1Rich": "Keď je dostupná nová verzia, ProxMenux ju zistí pri ďalšom spustení <code>menu</code> a ponúkne aktualizáciu. Ak ju prijmete, nahradí súbory a konfiguráciu nástroja v existujúcej inštalácii. Nemusíte nič sťahovať ručne.",
"p2Rich": "Používatelia stabilnej verzie dostávajú stabilné aktualizácie a používatelia beta verzie beta aktualizácie. Po vydaní stabilnej verzie na to beta upozorní pri ďalšom otvorení ponuky a ponúkne automatický prechod. Pozrite si <betalink>beta program</betalink>."
},
"q6": {
"question": "Kde môžem nahlásiť problémy?",
"p1Rich": "Chyby nahlasujte cez <issueslink>GitHub Issues</issueslink>. Uveďte kroky na ich zopakovanie, chybové hlásenie a podľa potreby výstup Monitora z príkazu <code>journalctl -u proxmenux-monitor -n 50</code>.",
"p2Rich": "V prípade problémov s <strong>bezpečnosťou</strong> ich prosím <strong>nezverejňujte</strong>. Prečítajte si <coclink>Kódex správania a osvedčené postupy</coclink> o zodpovednom postupe zverejnenia."
},
"q7": {
"question": "Môžem prispieť k ProxMenux?",
"p1Rich": "<strong>Samozrejme.</strong> ProxMenux je otvorený komunitný projekt. Prispieť môžete kódom (Bash, Next.js/TypeScript a prekladové nástroje v Pythone), testovaním, dokumentáciou, dizajnom alebo nápadmi.",
"item1Rich": "Pred otvorením žiadosti o funkciu prediskutujte nápady v <discusslink>GitHub diskusiách</discusslink>.",
"item2Rich": "Pred odoslaním pull requestu si prečítajte <coclink>kódex správania a odporúčané postupy</coclink>.",
"item3Rich": "Na <contriblink>stránke prispievateľov</contriblink> nájdete aktuálnych testerov a recenzentov."
},
"q8": {
"question": "Upravuje ProxMenux kritické systémové súbory?",
"p1Rich": "<strong>Inštalácia ProxMenuxu pridá nasledujúce súčasti.</strong>",
"item1Rich": "Závislosti cez apt: <code>dialog</code>, <code>curl</code>, <code>jq</code> a <code>git</code>. Preklady používajú vopred vytvorené katalógy JSON; inštalátor na hostiteľa nepridáva virtuálne prostredie na preklad.",
"item2Rich": "Adresárový strom skriptov v <code>/usr/local/share/proxmenux/</code>.",
"item3Rich": "Spúšťač v <code>/usr/local/bin/menu</code>.",
"item4Rich": "Voliteľne: služba systemd pre Monitor, <code>proxmenux-monitor.service</code>.",
"p2Rich": "ProxMenux <em>nemení</em> základnú konfiguráciu Proxmoxu, pokiaľ o to výslovne nepožiadate v príslušnej ponuke. Oprava siete napríklad upravuje <code>/etc/network/interfaces</code>, ale až po vašom potvrdení a vytvorení zálohy."
},
"q9": {
"question": "Je bezpečné používať ProxMenux v produkčnom prostredí?",
"bodyRich": "<strong>Áno.</strong> Keďže ProxMenux mení základné súbory Proxmoxu iba na výslovnú žiadosť, možno ho používať aj v produkčnom prostredí. Ako pri každej automatizácii ho najprv otestujte v kontrolovanom prostredí a pred deštruktívnymi operáciami majte zálohy. Týka sa to napríklad prechodu z PVE 8 na 9, formátovania diskov či odstránenia VM."
},
"q10": {
"question": "Ako odinštalujem ProxMenux?",
"p1Rich": "V ProxMenuxe: <strong>Nastavenia → Odinštalovať ProxMenux</strong>. Odinštalovanie odstráni skripty, spúšťač a službu Monitor a voliteľne aj vybrané závislosti. Súbory <code>/root/.bashrc</code> a <code>/etc/motd</code> obnoví zo záloh vytvorených pri inštalácii, ak sú dostupné.",
"p2Rich": "Celý postup nájdete na stránke <uninstalllink>Odinštalovanie ProxMenuxu</uninstalllink>."
},
"q11": {
"question": "VirusTotal označuje inštalačnú URL ako podozrivú — je bezpečná?",
"p1Rich": "Výsledok 1/95 od <em>Chong Lua Dao</em>, nahlásený v issue #162, správca projektu označil za falošný poplach. Inštalátor používa vzor <code>curl | bash</code> a môže stiahnuť <code>jq</code> z jeho oficiálneho vydania na GitHube. Takéto <em>správanie</em> môže spustiť heuristickú detekciu; historické hlásenie nie je hodnotením všetkých budúcich stiahnutí.",
"p2Rich": "ProxMenux má úplne otvorený zdrojový kód a inštalačný skript si môžete skontrolovať riadok po riadku: <scriptlink>install_proxmenux.sh</scriptlink>. Ďalšie súvislosti nájdete v <issuelink>issue #162</issuelink>."
}
}
+67
View File
@@ -0,0 +1,67 @@
{
"meta": {
"title": "O projekte | Dokumentácia ProxMenux",
"description": "O projekte ProxMenux: ciele, prispievatelia, časté otázky a pravidlá správania. Nástroj s otvoreným zdrojovým kódom na správu Proxmox VE 8+ cez ponuky, ktorý vyvíja a udržiava MacRimi s malým tímom testerov a prispievateľov.",
"ogTitle": "O projekte | Dokumentácia ProxMenux",
"ogDescription": "O ProxMenuxe — nástroji s otvoreným zdrojovým kódom na správu Proxmox VE 8+ cez ponuky."
},
"header": {
"title": "O projekte",
"description": "Informácie o projekte, časté otázky, prispievatelia a pravidlá správania. ProxMenux je nástroj s otvoreným zdrojovým kódom na správu Proxmox VE 8+ cez ponuky, ktorý vyvíja a udržiava MacRimi s pomocou malého tímu testerov a prispievateľov.",
"section": "O projekte"
},
"callout": {
"title": "Otvorený zdrojový kód, vývoj vedený komunitou",
"body": "ProxMenux sa poskytuje pod licenciou GPL-3.0 a vyvíja sa verejne na GitHube. Každý skript možno skontrolovať a každú zmenu dohľadať. Hlásenia chýb, nápady, kód aj testovanie sú vítané."
},
"section": {
"heading": "V tejto časti:",
"options": [
{
"icon": "HelpCircle",
"href": "/docs/about/faq",
"title": "FAQ",
"description": "Časté otázky: čo je ProxMenux, inštalácia, kompatibilita, prispôsobenie, aktualizácie, bezpečnosť, používanie v produkcii a odinštalovanie."
},
{
"icon": "Users",
"href": "/docs/about/contributors",
"title": "Prispievatelia",
"description": "Poďakovanie ľuďom, vďaka ktorým ProxMenux vzniká: testerom, kontrolórom a vývojárom, ktorí sa podieľajú na každom vydaní."
},
{
"icon": "ScrollText",
"href": "/docs/about/code-of-conduct",
"title": "Kódex správania",
"description": "Hodnoty projektu, zodpovednosť za kód a pravidlá prispievania. Povinné čítanie pred odoslaním PR alebo hlásenia problému."
}
]
},
"involved": {
"heading": "Zapojte sa",
"intro": "Tri miesta na zapojenie sa do projektu:",
"cards": [
{
"href": "https://github.com/MacRimi/ProxMenux/issues/new",
"title": "🐛 Nahlásiť chybu",
"description": "GitHub Issues — priložte záznamy a kroky na zopakovanie problému."
},
{
"href": "https://github.com/MacRimi/ProxMenux/discussions",
"title": "💡 Navrhnúť funkciu",
"description": "GitHub Discussions — podeľte sa o nápady pred odoslaním PR."
},
{
"href": "https://github.com/MacRimi/ProxMenux/pulls",
"title": "🔀 Odoslať PR",
"description": "GitHub Pull Requests — najskôr si prečítajte pravidlá správania."
}
]
},
"support": {
"heading": "Podpora projektu",
"introRich": "Ak vám ProxMenux šetrí čas, najjednoduchšie mu pomôžete osloviť ďalších ľudí tak, že <starlink>dáte repozitáru na GitHube ⭐</starlink>. Ak chcete pomôcť viac:",
"kofiLabel": "Podpora pre Ko-fi",
"kofiOutro": " — prispejete správcovi na kávu a podporíte pokračovanie vývoja."
}
}
@@ -98,7 +98,7 @@
],
"sourcesHeading": "Zdroje dostupnej verzie",
"sources": [
"<strong>GitHub repozitár</strong>: najnovšie vydanie alebo značka verejného repozitára <code>vlastník/názov</code>.",
"<strong>GitHub repozitár</strong>: najnovšie vydanie alebo značka verejného repozitára <code>owner/name</code>.",
"<strong>HTTP JSON</strong>: verejný koncový bod a cesta ako <code>data.version</code> alebo <code>releases[0].tag_name</code>.",
"<strong>Docker Hub</strong>: verzované značky filtrované regulárnym výrazom. Živý náhľad pred uložením ukáže skutočné zodpovedajúce značky.",
"Pohyblivé značky ako <code>latest</code>, <code>stable</code> alebo <code>lts</code> neobsahujú verziu. Tieto obrazy sledujte podľa digestu v aktualizáciách Docker obrazov."
@@ -110,7 +110,7 @@
"Nepridávajte <code>pct exec</code>; ProxMenux už vstupuje do kontajnera a príkaz spúšťa ako root."
],
"exampleLead": "Príklad úplného postupu v kontajneri:",
"example": "cd /opt/moja-aplikacia && ./update.sh",
"example": "cd /opt/my-app && ./update.sh",
"callout": "Príkaz ako <code>myapp --version</code> iba číta verziu a nič neaktualizuje. Príkazy sa spúšťajú s oprávneniami správcu a musia sa kontrolovať ako príkazy shellu root."
},
"bulk": {
@@ -140,7 +140,7 @@
"items": [
"Vyberte predvoľbu alebo cron výraz a potom presné ciele: balíky OS, jednotlivé aplikácie, Docker Engine, samostatné jednotky Dockeru alebo skupiny služieb Compose.",
"Oneskorenie po vydaní platí iba pre vybrané aplikácie so sledovaním verzie. Aplikácie bez sledovania spustia aktualizátor pri každom termíne.",
"Stav posledného behu rozlišuje úspech, čiastočné dokončenie, zlyhanie, bezpečnostné pozdržanie a stav bez čakajúcich aktualizácií.",
"Stav posledného behu rozlišuje úspech, čiastočné dokončenie, zlyhanie, bezpečnostné pozastavenie a žiadne čakajúce aktualizácie. Po prvom plánovanom behu otvorí <strong>Aktualizácie → Plánované aktualizácie → Zobraziť záznam</strong> celý výstup aktualizátora a podradených skriptov.",
"Zistené externé plány Proxmox VE Helper-Scripts sa zobrazia samostatne, aby bola viditeľná prekrývajúca sa automatizácia."
],
"callout": "Pred zapnutím plánu otestujte každú vybranú metódu manuálne. Plánovaný príkaz nemôže odpovedať na interaktívne otázky."
@@ -0,0 +1,110 @@
{
"meta": {
"title": "Záloha a reštart rozhraní | Dokumentácia ProxMenux",
"description": "Ručné vytváranie snímok, prehliadanie a obnova záloh /etc/network/interfaces uložených v /var/backups/proxmenux/. Zahŕňa reštart sieťovej služby s potvrdením a rýchle zobrazenie aktuálnej konfigurácie.",
"ogTitle": "Záloha a reštart rozhraní | Dokumentácia ProxMenux",
"ogDescription": "Vytvorte snímku a obnovte sieťovú konfiguráciu Proxmox; reštartujte sieťovú službu s potvrdením."
},
"header": {
"title": "Záloha a reštart rozhraní",
"description": "Štyri nástroje pre /etc/network/interfaces: ručne vytvoriť snímku, zobraziť aktuálnu konfiguráciu, obnoviť predchádzajúcu zálohu s voliteľným náhľadom a reštartovať sieťovú službu s výslovným súhlasom. Používajú rovnaký záložný adresár ako opravy so sprievodcom.",
"section": "Sieť"
},
"intro": {
"title": "Čo to robí?",
"body": "Spravuje rovnaký adresár záloh ako opravy so sprievodcom (<code>/var/backups/proxmenux/</code>). Umožňuje vytvoriť ďalšiu snímku pred každou ručnou zmenou, prehliadať všetky existujúce zálohy a obnoviť ktorúkoľvek z nich — vždy s automaticky vytvorenou novou zálohou stavu pred obnovou ako druhou ochranou."
},
"shared": {
"heading": "Zdieľaný adresár zálohovania",
"intro": "Každá záloha vytvorená kdekoľvek v menu Sieť sa uloží na rovnaké miesto:",
"outro": "Názvy súborov sú časovo označené, zoradené podľa dátumu a nikdy neprepísané. Adresár je vytvorený pri prvom použití."
},
"show": {
"heading": "Zobraziť konfiguračný súbor siete",
"body": "Vypíše presný obsah <code>/etc/network/interfaces</code> do terminálu. Iba na čítanie. Užitočné na kontrolu pred zálohovaním alebo po obnove. Samostatný nástroj na porovnanie s predchádzajúcou zálohou neexistuje, takže najjednoduchšie je skontrolovať obsah aktuálneho súboru pohľadom."
},
"create": {
"heading": "Vytvoriť zálohu siete",
"body": "Skopíruje aktuálny <code>/etc/network/interfaces</code> do adresára záloh s novou časovou pečiatkou. To je všetko — bez analýzy, bez výziev, iba snímka.",
"whenTitle": "Kedy vytvoriť ručnú zálohu",
"whenBody": "Pred ručnou úpravou <code>/etc/network/interfaces</code>, pred inštaláciou balíka, ktorý môže meniť sieťový stack (napríklad NetworkManager alebo Open vSwitch), alebo pred zmenami hardvéru. Opravy so sprievodcom už vytvárajú snímky automaticky — táto možnosť je určená na <em>ručné</em> zásahy."
},
"restore": {
"heading": "Obnoviť sieť zo zálohy",
"intro": "Zobrazí všetky zálohy v <code>/var/backups/proxmenux/</code> od najnovšej po najstaršiu a prevedie vás obnovou s bezpečnostnými opatreniami:",
"steps": [
{
"title": "1. Vybrať zálohu",
"body": "Menu zobrazí každú zálohu podľa jej časovej pečiatky. Ak neexistujú žiadne zálohy, postup sa ukončí s jasným hlásením.",
"tone": "blue"
},
{
"title": "2. Nepovinný náhľad",
"body": "Ponúkne otvorenie vybranej zálohy v posúvateľnom zobrazení pred potvrdením obnovy. Predvolená odpoveď je Áno — na vzdialenom hostiteľovi tento krok nevynechávajte.",
"tone": "blue"
},
{
"title": "3. Záloha pred obnovou",
"body": "Pred prepísaním <code>/etc/network/interfaces</code> vytvorí <strong>ďalšiu</strong> zálohu aktuálneho stavu. Obnova je sama osebe deštruktívna akcia, preto nová snímka pred obnovou umožní návrat, ak bola vybraná záloha nesprávna.",
"tone": "amber"
},
{
"title": "4. Použiť obnovenie",
"body": "Kopíruje vybranú zálohu cez <code>/etc/network/interfaces</code>. Zmena súboru je na disku; stav živého jadra stále odráža predchádzajúcu konfiguráciu.",
"tone": "amber"
},
{
"title": "5. Nepovinný reštart",
"body": "Pýta sa, či má teraz spustiť <code>systemctl restart networking</code>. Odmietnutím odložíte použitie zmeny na ďalší reštart.",
"tone": "emerald"
}
],
"autoBackupTitle": "Obnova automaticky vytvorí vlastnú zálohu",
"autoBackupBody": "Výber <em>Obnoviť sieť zo zálohy</em> vždy vytvorí novú snímku <em>aktuálnej</em> konfigurácie pred jej prepísaním. Ak obnovíte nesprávnu zálohu, najnovší súbor v <code>/var/backups/proxmenux/</code> obsahuje predchádzajúci stav."
},
"restart": {
"heading": "Reštartovať sieťovú službu",
"body": "Po potvrdení áno/nie spustí <code>systemctl restart networking</code>. Výsledok oznámi cez <code>msg_ok</code> / <code>msg_error</code>. Väčšina postupov v tomto menu ponúka vlastný reštart na konci. Táto možnosť slúži na reštart po ručnej úprave alebo po odmietnutí skôr ponúknutého reštartu.",
"warnTitle": "Zaručené krátke odpojenie; možné trvalé odpojenie",
"warnBody": "Reštart <code>networking</code> deaktivuje a znovu nastaví každé rozhranie deklarované v <code>/etc/network/interfaces</code>. Relácie SSH cez tieto rozhrania sa prerušia. Ak je nová konfigurácia neplatná, sieť sa neobnoví. Spustite to iba vtedy, keď:",
"warnItems": [
"Máte konzolu / IPMI / iKVM prístup pripravený, <em>alebo</em>",
"Ste fyzicky vedľa stroja, <em>alebo</em>",
"Práve ste úspešne obnovili overenú funkčnú konfiguráciu a chcete ju použiť."
]
},
"manualRollback": {
"heading": "Ručné vrátenie zmien z konzoly",
"intro": "Ak nemôžete dosiahnuť menu (žiadne SSH, dialógové zrútenie, ...), ale môžete dosiahnuť konzolu, rollback je dva príkazy:",
"outro": "Ide o <em>rovnakú</em> operáciu, akú vykonáva menu, iba zadanú ručne. Ak sa <code>networking</code> stále nespustí, skontrolujte <code>journalctl -u networking -b</code> a zistite príčinu v syntaxi alebo ovládači."
},
"troubleshoot": {
"heading": "Riešenie problémov",
"noneTitle": "„Nenašli sa žiadne zálohy“ pri obnove",
"noneBody": "Adresár <code>/var/backups/proxmenux/</code> neexistuje alebo neobsahuje súbory <code>interfaces_backup_*</code>. Aspoň raz spustite <em>Vytvoriť zálohu siete</em> alebo opravu so sprievodcom, ktorá vytvorí zálohu automaticky. Overte to cez <code>ls /var/backups/proxmenux/</code>.",
"unreachTitle": "Reštart siete prejde, ale hostiteľ je stále nedosiahnuteľný",
"unreachBody": "Nová konfigurácia je nesprávna alebo nepriraďuje vašu IP adresu na správu. Obnovte predchádzajúci stav z konzoly (pozri vyššie). Potom použite <bridgeLink>analýzu mostov</bridgeLink> a <configLink>analýzu konfigurácie</configLink>, aby ste pred opätovným použitím pochopili príčinu.",
"emptyTitle": "Náhľad obnovy zobrazuje prázdny súbor",
"emptyBody": "Záložný súbor je prázdny (0 bajtov). Stane sa to, ak kopírovanie počas predchádzajúceho spustenia nepozorovane zlyhalo. Vyberte staršiu zálohu alebo znovu spustite <em>Vytvoriť zálohu siete</em>, ak je aktuálna konfigurácia funkčná."
},
"related": {
"heading": "Súvisiace",
"items": [
{
"label": "Analýza mostov a oprava so sprievodcom",
"href": "/docs/network/bridge-analysis",
"tail": " — Najbežnejší dôvod, prečo tu končí záloha."
},
{
"label": "Analýza konfigurácie a čistenie so sprievodcom",
"href": "/docs/network/config-analysis",
"tailRich": " — tiež automaticky zapisuje do <code>/var/backups/proxmenux/</code>."
},
{
"label": "Diagnostika",
"href": "/docs/network/diagnostics",
"tail": " — na overenie aktuálneho stavu po obnove."
}
]
}
}
@@ -0,0 +1,132 @@
{
"meta": {
"title": "Analýza mostov a oprava so sprievodcom | Dokumentácia ProxMenux",
"description": "Zistí mosty vmbrX s chýbajúcimi alebo neplatnými fyzickými portmi, typicky po opätovnom číslovaní PCI. Nahlási ich s návrhmi príkazov shellu a ponúkne opravu so sprievodcom v 5 krokoch s povinnou zálohou.",
"ogTitle": "Analýza mostov a oprava so sprievodcom | Dokumentácia ProxMenux",
"ogDescription": "Skontrolujte a opravte porty mostov Proxmox po zmenách hardvéru pomocou postupu so sprievodcom a bezpečným vrátením zmien."
},
"header": {
"title": "Analýza mostov a oprava so sprievodcom",
"description": "Skontroluje každý most vmbrX deklarovaný v /etc/network/interfaces, overí existenciu fyzických portov a pri chýbajúcich ponúkne opravu krok za krokom. Analýza je iba na čítanie; oprava vyžaduje súhlas, zobrazí náhľad a vytvorí zálohu.",
"section": "Sieť"
},
"intro": {
"title": "Čo to robí?",
"body": "Prečíta každý most v <code>/etc/network/interfaces</code>, skontroluje jeho riadok <code>bridge-ports</code> a overí, či každý deklarovaný port, napríklad <code>enp3s0</code>, existuje na hostiteľovi. Ak port chýba, navrhne náhradu a s výslovným súhlasom použije zmenu postupom <strong>záloha, náhľad, použitie, overenie</strong>."
},
"when": {
"heading": "Keď to potrebujete",
"intro": "Linux prideľuje predvídateľné názvy rozhraní podľa topológie PCI a poradia slotov. Viaceré udalosti ich môžu zmeniť, takže <code>/etc/network/interfaces</code> odkazuje na názvy, ktoré už neexistujú:",
"items": [
"Pridanie alebo odstránenie PCIe karty (NIC, GPU, a HBA, nosič NVMe).",
"Presun existujúcej karty na iný PCIe slot.",
"Aktualizácie BIOS / UEFI, ktoré znovu číslujú zariadenia PCI.",
"Migrácia zavádzacieho disku na iný hardvér."
],
"outro": "Po ďalšom štarte sa most pokúsi pripojiť k portu, ktorý už neexistuje, neaktivuje sa a hostiteľ stratí sieťové pripojenie. <link>Trvalé názvy rozhraní</link> zabránia opakovaniu tohto problému. Ak ste už stratili prístup, táto stránka opisuje postup obnovy."
},
"bigPicture": {
"heading": "Celkový prehľad",
"diagram1": {
"arrowLabel": "krok 1",
"nodes": {
"sourceLabel": "/etc/network/interfaces",
"sourceDetail": "auto vmbr0\niface vmbr0 inet static\n bridge-ports enp3s0",
"bridgeLabel": "Analyzovať (iba na čítanie)",
"bridgeDetail": "ip link show enp3s0\n→ neexistuje",
"targetLabel": "Správa + návrh",
"targetDetail": "❌ enp3s0: NENÁJDENÉ\nNahradiť za: eno1\n(zatiaľ bez zmien)"
}
},
"diagram2": {
"arrowLabel": "aplikovať so zálohou",
"nodes": {
"sourceLabel": "Oprava so sprievodcom",
"sourceDetail": "1. Záloha\n2. Zobraziť aktuálny stav\n3. Náhľad zmien\n4. Použiť\n5. Overiť",
"targetLabel": "/etc/network/interfaces (nový)",
"targetDetail": "auto vmbr0\niface vmbr0 inet static\n bridge-ports eno1"
}
}
},
"step1": {
"heading": "Krok 1: analýza (iba na čítanie)",
"intro": "Po výbere <strong>Analyzovať konfiguráciu mostov</strong> sa nástroj okamžite zastaví, ak hostiteľ nepoužíva klasický stack Debian/Proxmox. Inak prejde každý most a nahlási:",
"items": [
"Názov mosta, aktuálny stav (UP / DOWN) a pridelená IP adresa.",
"Každý deklarovaný port a či v súčasnosti existuje (<code>ip link show &lt;port&gt;</code>).",
"Pre každý neplatný port: navrhovaná náhrada (prvé dostupné fyzické rozhranie) plus presný <code>sed</code> príkaz na manuálne použitie.",
"Mosty bez riadka <code>bridge-ports</code> a osirelé položky <code>auto</code> bez zodpovedajúceho bloku <code>iface</code>."
],
"readonlyTitle": "Záruka režimu iba na čítanie",
"readonlyBody": "Až do tohto bodu skript nespustil žiadny príkaz meniaci systém. Analýzu môžete nechať otvorenú, skopírovať navrhnuté príkazy <code>sed</code> a použiť ich ručne, ak to uprednostňujete. Alebo prijmite nasledujúcu výzvu na spustenie opravy so sprievodcom."
},
"step2": {
"heading": "Krok 2: oprava so sprievodcom (5 krokov)",
"intro": "Spustí sa iba po prijatí výzvy na konci analýzy. Každý krok zobrazí plánovanú akciu a pred pokračovaním vyžiada potvrdenie.",
"steps": [
{
"title": "1. Bezpečnostná záloha",
"body": "Skopíruje <code>/etc/network/interfaces</code> do <code>/var/backups/proxmenux/interfaces_backup_&lt;TIMESTAMP&gt;</code>. Presnú cestu zálohy zobrazí pred kopírovaním aj po ňom spolu s príkazom na vrátenie zmien.",
"tone": "blue"
},
{
"title": "2. Preskúmanie aktuálnej konfigurácie",
"body": "Otvorí aktuálny <code>/etc/network/interfaces</code> v posúvateľnom dialógu, aby ste presne videli, čo sa zmení.",
"tone": "blue"
},
{
"title": "3. Náhľad navrhovaných zmien",
"body": "Presne vypíše dotknuté mosty a plánované náhrady portov. Ak už oprava nie je potrebná, pretože sa port medzi kontrolami znovu objavil, postup sa ukončí hlásením <em>„Nie sú potrebné žiadne zmeny.“</em>",
"tone": "blue"
},
{
"title": "4. Použiť zmeny",
"body": "Pre každý postihnutý most beží <code>sed -i \"/iface $bridge/,/bridge-ports/ s/bridge-ports.*/bridge-ports $new_ports/\"</code> proti <code>/etc/network/interfaces</code>. Ak most nemal k dispozícii platnú náhradu, substitúcia sa preskočí a zaznamená v kroku 5.",
"tone": "amber"
},
{
"title": "5. Overovanie",
"body": "Znovu prečíta súbor a potvrdí, že nový port každého mosta existuje. Vypíše príkaz na vrátenie zmien (<code>cp &lt;backup&gt; /etc/network/interfaces</code>). Nakoniec ponúkne <strong>Reštartovať sieť</strong> — prijmite iba vtedy, ak máte náhradný prístup cez konzolu.",
"tone": "emerald"
}
],
"restartTitle": "Reštart siete ≠ bezpečné vrátenie zmien",
"restartBody": "Oprava sa zapíše na disk bez ohľadu na reštart služby. <code>systemctl restart networking</code> použije zmenu <em>teraz</em>, čo môže prerušiť reláciu SSH, ak je nový port nesprávny. Ak reštart odmietnete, zmena sa aj tak prejaví pri ďalšom štarte. Najprv overte novú konfiguráciu alebo ju vráťte zobrazeným príkazom."
},
"edits": {
"heading": "Čo sa edituje (presne)",
"body": "Iba riadok <code>bridge-ports</code> každého dotknutého mosta. Ostatné direktívy (<code>address</code>, <code>netmask</code>, <code>gateway</code>, <code>bridge-stp</code>, …) zostávajú nezmenené. Skript v tomto postupe nevytvára ani neodstraňuje bloky <code>iface</code> — to je úloha <link>analýzy konfigurácie &amp; čistenia</link>."
},
"troubleshoot": {
"heading": "Riešenie problémov",
"unsupportedTitle": "Analýza sa zastaví s hlásením „Nepodporovaný sieťový stack“",
"unsupportedBody": "Hostiteľ používa netplan, systemd-networkd alebo NetworkManager. Nástroj podporuje iba <code>/etc/network/interfaces</code>. Najprv prepnite hostiteľa na klasický stack alebo upravte konfiguráciu natívnymi nástrojmi správcu (napríklad <code>netplan apply</code>).",
"noSuggestTitle": "Pre neplatný port sa nevypíše žiadny návrh",
"noSuggestBody": "Hostiteľ nemá žiadne voľné fyzické rozhrania: všetky sú už v inom moste alebo neexistujú. Analýza preto navrhne <code>bridge-ports none</code>, aby sa most mohol aspoň aktivovať bez portu. Pred opätovným spustením pridajte sieťovú kartu alebo ručne presuňte porty medzi mostmi.",
"stillDownTitle": "Oprava sa skončila, ale most je stále dole",
"stillDownBody": "<code>sed</code> aktualizoval súbor, ale <code>systemctl restart networking</code> bol odmietnutý. Po overení novej konfigurácie ho spustite ručne alebo reštartujte systém. Ak bol reštart prijatý a most je stále DOWN, overte existenciu nového portu cez <code>ip link show</code> a skontrolujte <code>journalctl -u networking</code> pre skutočnú chybu: odpojený kábel, nevyjednané spojenie alebo port už patriaci do iného mosta.",
"lostSshTitle": "Stratila som prístup SSH hneď po reštarte siete",
"lostSshIntro": "Použite konzolu / IPMI / iKVM na dosiahnutie hostiteľa. Obnoviť zálohu:",
"lostSshOutro": "Potom znovu spustite analýzu z konzoly a zistite, prečo návrh nefungoval, typicky preto, že náhradný port nie je zapojený."
},
"related": {
"heading": "Súvisiace",
"items": [
{
"label": "Trvalé názvy rozhraní",
"href": "/docs/network/persistent-names",
"tail": " — priradí názvy k MAC adresám, aby sa problém neopakoval."
},
{
"label": "Analýza konfigurácie a čistenie so sprievodcom",
"href": "/docs/network/config-analysis",
"tailRich": " — Pre osirotené <code>iface</code> bloky (druhá polovica rovnakého problému)."
},
{
"label": "Záloha a reštart rozhraní",
"href": "/docs/network/backup-restore",
"tail": " — ručné snímky a prehliadanie záloh na obnovu."
}
]
}
}
@@ -0,0 +1,122 @@
{
"meta": {
"title": "Analýza konfigurácie a čistenie so sprievodcom | Dokumentácia ProxMenux",
"description": "Zistí bloky iface v /etc/network/interfaces odkazujúce na fyzické sieťové karty, ktoré už nie sú na hostiteľovi. Nahlási ich a ponúkne odstránenie so sprievodcom v 5 krokoch s povinnou zálohou a náhľadom každého bloku.",
"ogTitle": "Analýza konfigurácie a čistenie so sprievodcom | Dokumentácia ProxMenux",
"ogDescription": "Nájdite a odstráňte osirelé bloky rozhraní, ktoré zostali po zmenách hardvéru, s úplným náhľadom a možnosťou vrátenia zmien."
},
"header": {
"title": "Analýza konfigurácie a čistenie so sprievodcom",
"description": "Prejde každý blok iface v /etc/network/interfaces a overí, či príslušná fyzická sieťová karta stále existuje. Nahlási osirelé bloky po zmenách hardvéru a ponúkne odstránenie so sprievodcom, zálohou, náhľadom a potvrdením každého bloku.",
"section": "Sieť"
},
"intro": {
"title": "Čo to robí?",
"body": "Identifikuje deklarácie <code>iface</code>, ktorých sieťová karta už nie je na hostiteľovi, typicky po výmene alebo odobratí karty. Potom ponúkne čistenie so sprievodcom, ktoré odstráni <em>iba</em> osirelé bloky, so zálohou, náhľadom každej sekcie a výslovným záverečným potvrdením."
},
"differs": {
"heading": "Ako sa líši od analýzy mosta",
"headerAspect": "Aspekt",
"headerBridge": "Analýza mosta",
"headerConfig": "Analýza konfigurácie",
"rows": [
{
"aspect": "Pozerá sa na",
"bridge": "Mosty (<code>vmbrX</code>) a ich riadok <code>bridge-ports</code>",
"config": "Každý blok <code>iface</code> okrem loopbacku, mostov a bondov"
},
{
"aspect": "Zisťuje",
"bridge": "Mosty odkazujúce na neexistujúci port",
"config": "Samostatné bloky rozhrania pre NIC, ktoré neexistujú"
},
{
"aspect": "Oprava",
"bridge": "Nahrádza názov portu v <code>bridge-ports</code>",
"config": "Odstráni celý blok <code>iface</code>"
},
{
"aspect": "Nezahŕňa",
"bridge": "Nič, každý most je analyzovaný",
"config": "Mosty (<code>vmbrX</code>) a bondy (<code>bondX</code>) sa vždy zachovajú, pretože sú virtuálne a ich neprítomnosť počas štartu môže byť normálna"
}
],
"outro": "V praxi často použijete oba nástroje v tomto poradí: najprv <strong>analýzu konfigurácie</strong> na odstránenie osirelých blokov, potom <link>analýzu mostov</link> na nové priradenie mostov, ktoré používali odstránené rozhranie."
},
"step1": {
"heading": "Krok 1: analýza (iba na čítanie)",
"intro": "Okamžite sa zastaví, ak hostiteľ nepoužíva klasický sieťový stack. Inak zobrazí všetky nakonfigurované rozhrania okrem loopbacku a ich stav:",
"virtTitle": "Virtuálne rozhrania sú chránené",
"virtBody": "Mosty (<code>vmbrX</code>) a bondy (<code>bondX</code>) sú virtuálne konštrukcie. Pri kontrole môžu oprávnene chýbať, napríklad most bez portov. Analýza preto nikdy nenavrhuje ich odstránenie, iba odstránenie fyzických sieťových kariet."
},
"step2": {
"heading": "Krok 2: čistenie so sprievodcom (5 krokov)",
"intro": "Spustí sa iba po prijatí výzvy na konci analýzy. Každý krok vyžaduje potvrdenie; zrušením v ktoromkoľvek bode sa postup ukončí bez zápisu.",
"steps": [
{
"title": "1. Bezpečnostná záloha",
"body": "Skopíruje <code>/etc/network/interfaces</code> do <code>/var/backups/proxmenux/interfaces_backup_&lt;TIMESTAMP&gt;</code>. Cestu zobrazí pred kopírovaním aj po ňom.",
"tone": "blue"
},
{
"title": "2. Potvrdenie zoznamu odstránenia",
"body": "Presne vypíše bloky fyzických rozhraní určené na odstránenie. Ak sa karty medzi analýzou a čistením znovu objavia, napríklad po opätovnom zasunutí, postup sa ukončí hlásením <em>„Čistenie nie je potrebné.“</em>",
"tone": "blue"
},
{
"title": "3. Náhľad presných blokov",
"body": "Otvorí rolovací pohľad na každý blok <code>iface</code>, ktorý by bol vymazaný, doslovne zo súboru. Toto je chvíľa, kedy si môžete všimnúť napríklad zaujímavý <code>up</code> hák, ktorý chcete zachovať.",
"tone": "blue"
},
{
"title": "4. Použiť odstránenie",
"body": "Pre každé sirotské rozhranie beží <code>sed -i \"/^iface $iface/,/^$/d\" /etc/network/interfaces</code>. To odstráni zo zodpovedajúcej línie <code>iface</code> až do ďalšieho prázdneho riadku.",
"tone": "amber"
},
{
"title": "5. Overovanie",
"body": "Opätovne načíta súbor, vypíše, čo bolo odstránené, a znova skontroluje zostávajúce rozhrania. Vytlačí príkaz na vrátenie. <strong>nereštartuje</strong> automaticky sieť – odstránenie nepoužívaného bloku je bezpečné použiť pri ďalšom reštarte a nedotýka sa aktívneho stavu.",
"tone": "emerald"
}
],
"noRestartTitle": "Nereštartuje sieť automaticky",
"noRestartBody": "Na rozdiel od opravy mostov čistenie neponúka reštart služby. Odstránenie nepoužívaného bloku rozhrania okamžite neovplyvní bežiacu konfiguráciu, takže reštart nie je potrebný a zbytočne by ohrozil pripojenie. Zmena sa prejaví pri ďalšom ručnom <code>systemctl restart networking</code> alebo pri ďalšom reštarte systému."
},
"caveats": {
"heading": "Dôležité upozornenia",
"boundaryTitle": "Hranica bloku je prvý prázdny riadok",
"boundaryBody": "Vzor <code>sed</code> odstráni obsah od <code>iface &lt;name&gt;</code> po ďalší prázdny riadok. Ak v <code>/etc/network/interfaces</code> chýbajú prázdne riadky medzi blokmi, čo je zriedkavé, ale možné po ručných úpravách, môže sa odstrániť aj nasledujúci blok. Preto je <strong>krok 3 povinný</strong>: pred potvrdením skontrolujte náhľad.",
"tandemTitle": "Osirelý blok iface používaný mostom sa zistí tu, nie pri analýze mostov",
"tandemBody": "Ak <code>vmbr0</code> deklaruje <code>bridge-ports enp3s0</code> a <code>enp3s0</code> má aj vlastný blok <code>iface enp3s0 inet manual</code>, odstránenie <code>enp3s0</code> tu ponechá neplatný odkaz v <code>vmbr0</code>. Po čistení spustite <link>analýzu mostov</link> na zmenu priradenia alebo odstránenie portu mosta. Oba postupy sú navrhnuté na spoločné použitie."
},
"troubleshoot": {
"heading": "Riešenie problémov",
"notFoundTitle": "Analýza zobrazuje moju novú sieťovú kartu ako „NENÁJDENÁ“",
"notFoundBody": "Jadro vidí zariadenie pod iným názvom, než je v súbore. Spustite <code>ip link show</code> a zistite skutočný názov. Presne v takomto prípade by <link>trvalé názvy rozhraní</link> zabránili problému v budúcnosti.",
"tooMuchTitle": "Čistenie odstránilo príliš veľa, aj blok, ktorý som chcel zachovať",
"tooMuchBody": "Obnovte stav zo zálohy uvedenej v kroku 5:",
"tooMuchOutro": "Pred opätovným spustením čistenia ručne upravte súbor a pridajte prázdny riadok medzi bloky alebo problematický blok odstráňte ručne.",
"bridgeBreakTitle": "Most prestane pracovať po vyčistení.",
"bridgeBreakBody": "Most používal port, ktorého blok <code>iface</code> sa práve odstránil. Spustite <link>analýzu mostov</link> a návrh priradí most k existujúcemu fyzickému rozhraniu."
},
"related": {
"heading": "Súvisiace",
"items": [
{
"label": "Analýza mostov a oprava so sprievodcom",
"href": "/docs/network/bridge-analysis",
"tail": " — prirodzený ďalší krok po čistení."
},
{
"label": "Trvalé názvy rozhraní",
"href": "/docs/network/persistent-names",
"tail": " — zabraňuje hromadeniu osirelých blokov po každej zmene hardvéru."
},
{
"label": "Záloha a reštart rozhraní",
"href": "/docs/network/backup-restore",
"tail": " — ručné snímky a prehliadanie záloh na obnovu."
}
]
}
}
@@ -0,0 +1,94 @@
{
"meta": {
"title": "Diagnostika | Dokumentácia ProxMenux",
"description": "Tri jednorazové diagnostické kontroly iba na čítanie: Zobraziť smerovaciu tabuľku, Test pripojenia a Pokročilá diagnostika. Iba kontrola — nikdy nezapisuje do /etc/network/interfaces ani nespúšťa príkazy meniace systém, s jedinou výslovnou výnimkou: úplné odstránenie zisteného NetworkManager vyžaduje váš súhlas.",
"ogTitle": "Diagnostika | Dokumentácia ProxMenux",
"ogDescription": "Sieťová diagnostika iba na čítanie pre hostiteľa Proxmoxu: smerovanie, dosiahnuteľnosť, pokročilé štatistiky."
},
"header": {
"title": "Diagnostika",
"description": "Tri jednorazové kontroly aktuálneho stavu siete iba na čítanie: smerovacia tabuľka, test pripojenia a pokročilé štatistiky. Žiadna nezapisuje do /etc/network/interfaces — bezpečné použitie kedykoľvek, aj cez SSH. Pre interaktívne sledovanie v reálnom čase pozrite Nástroje na sledovanie v reálnom čase.",
"section": "Sieť"
},
"intro": {
"title": "Čo to robí?",
"body": "Zobrazuje informácie o smerovaní, dosiahnuteľnosti a súhrnných štatistikách <strong>bez akýchkoľvek zmien</strong>. Overte ním správne fungovanie siete alebo odhaľte duplicitné IP adresy. Na nepretržité sledovanie prevádzky pozrite <monitoringLink>Nástroje na sledovanie v reálnom čase</monitoringLink>; na zobrazenie nespracovaného konfiguračného súboru pozrite <backupLink>Záloha a reštart rozhraní</backupLink>."
},
"routing": {
"heading": "Zobraziť smerovaciu tabuľku",
"body": "Zobrazí všetky trasy aktuálne používané jadrom (<code>ip route show</code>) a zvýrazní predvolenú bránu. Umožňuje overiť, že prevádzka do internetu odchádza očakávaným rozhraním a žiadne zvyšné trasy nemajú prednosť."
},
"connectivity": {
"heading": "Otestovať pripojenie",
"intro": "Postupne odošle na každý z troch cieľov dve sondy ICMP a vypíše výsledky. Potom spustí <code>nslookup google.com</code> na overenie prekladu DNS nezávisle od ICMP.",
"headerTest": "Skúška",
"headerTarget": "Cieľ",
"headerConfirms": "Čo potvrdzuje",
"rows": [
{
"test": "Google DNS",
"target": "8.8.8.8",
"confirms": "Externá dosiahnuteľnosť cez známu IP adresu anycast"
},
{
"test": "Cloudflare DNS",
"target": "1.1.1.1",
"confirms": "Nezávislé druhé stanovisko, ak Google blokuje ICMP"
},
{
"test": "Brána",
"target": "(štandardná trasa)",
"confirms": "L2 / L3 pripojenie k miestnemu routeru"
},
{
"test": "Preklad DNS",
"target": "google.com",
"confirms": "DNS server je dosiahnuteľný a odpovedá"
}
],
"readingTitle": "Čítanie výsledku",
"readingBody": "Ak test brány prejde, ale verejné servery DNS neodpovedajú, máte lokálne pripojenie, no nemáte internet — skontrolujte pripojenie brány smerom k poskytovateľovi. Ak preklad DNS zlyhá, ale ping na <code>8.8.8.8</code> funguje, problém je v resolveri, nie v sieti: skontrolujte <code>/etc/resolv.conf</code>."
},
"advanced": {
"heading": "Pokročilá diagnostika",
"intro": "Zhromažďuje štatistiky celej siete a vykonáva sériu kontrol bežných problémov. Hlási počet aktívnych pripojení, načúvajúce porty a celkový počet rozhraní a výslovne upozorňuje na dve nevhodné konfigurácie:",
"items": [
"<strong>NetworkManager beží na hostiteľovi Proxmox.</strong> NetworkManager a <code>ifupdown</code> systému Proxmox sú v konflikte: oba sa pokúšajú spravovať rozhrania, takže mosty opakovane menia stav alebo sa nedajú aktivovať. Ak sa zistí NetworkManager, nástroj ponúkne interaktívne potvrdenie jeho zastavenia, zakázania a úplného odstránenia (ide o <em>jedinú</em> diagnostiku, ktorá môže meniť systém, a to iba po výslovnom súhlase).",
"<strong>Duplicitné IP adresy na rôznych rozhraniach.</strong> Dve rozhrania s rovnakou IPv4 adresou spôsobujú občasné výpadky pripojenia, ktoré sa zvnútra VM veľmi ťažko diagnostikujú. Zisťujú sa cez <code>ip -4 addr show | sort | uniq -d</code>."
],
"nmTitle": "Výzva pre NetworkManager je tu jedinou akciou, ktorá môže meniť systém",
"nmBody": "Všetky ostatné kontroly pokročilej diagnostiky sú iba na čítanie. Odstránenie NetworkManager vyžaduje potvrdenie áno/nie a spustí <code>systemctl stop / disable</code> + <code>apt-get purge -y network-manager</code>. Ak odmietnete, nič sa nezmení."
},
"troubleshoot": {
"heading": "Riešenie problémov",
"gwTitle": "Test pripojenia hlási zlyhanie brány, ale hostiteľ má prístup na internet",
"gwBody": "Niektoré smerovače neodpovedajú na ICMP na internom rozhraní, aj keď správne preposielajú prevádzku. V konzole skúste <code>traceroute 8.8.8.8</code>: ak je druhým skokom váš poskytovateľ a test verejného DNS prešiel, brána funguje aj napriek neúspešnému pingu.",
"dupTitle": "Pokročilá diagnostika stále hlási duplicitné IP adresy aj po odstránení jednej z nich",
"dupBody": "Kontrola skúma aktuálny stav jadra, nie konfiguračný súbor. Overte ho príkazom <code>ip -4 addr show</code>; ak je duplicitná adresa stále prítomná, niektoré rozhranie ju stále používa. Pomocou <code>ip addr del &lt;IP&gt;/&lt;mask&gt; dev &lt;iface&gt;</code> ju odstráňte z aktuálneho stavu a potom upravte <code>/etc/network/interfaces</code>, ak je nastavená aj natrvalo."
},
"related": {
"heading": "Súvisiace",
"items": [
{
"label": "Nástroje na sledovanie v reálnom čase",
"href": "/docs/network/monitoring",
"tail": " — Interaktívne iftop / iptraf-ng / iperf3 spúšťače."
},
{
"label": "Analýza mostov a oprava so sprievodcom",
"href": "/docs/network/bridge-analysis",
"tail": " — Keď vmbrX chýba fyzický port."
},
{
"label": "Analýza konfigurácie a čistenie so sprievodcom",
"href": "/docs/network/config-analysis",
"tail": " — keď je stará sieťová karta stále deklarovaná, ale už nie je prítomná."
},
{
"label": "Záloha a reštart rozhraní",
"href": "/docs/network/backup-restore",
"tail": " — na vytvorenie snímky konfigurácie pred každou zmenou."
}
]
}
}
+107
View File
@@ -0,0 +1,107 @@
{
"meta": {
"title": "Správa siete Proxmox — Mosty, bondy, diagnostika, oprava | ProxMenux",
"description": "Diagnostika iba na čítanie, analýzy s následnými návrhmi a opravy so sprievodcom pre sieťový stack Debian / Proxmox (/etc/network/interfaces). Skontrolujte mosty a bondy, spustite nástroje na sledovanie v reálnom čase, nastavte trvalé názvy rozhraní, zálohujte konfiguráciu a bezpečne reštartujte sieť — s povinnými zálohami a náhľadmi jednotlivých krokov.",
"ogTitle": "Správa siete Proxmox — Mosty, bondy, diagnostika, oprava",
"ogDescription": "Diagnostika, analýza a opravy sieťového stacku Proxmox so sprievodcom, povinnými zálohami a náhľadmi jednotlivých krokov.",
"twitterTitle": "Správa siete Proxmox | ProxMenux",
"twitterDescription": "Mosty, bondy, diagnostika a opravy sieťového stacku Proxmox so sprievodcom a povinnými zálohami."
},
"header": {
"title": "Správa siete",
"description": "Diagnostika iba na čítanie, analytické správy s následnými návrhmi a opravy so sprievodcom pre klasický sieťový stack Debian/Proxmox. Každý deštruktívny postup najprv vytvorí zálohu a pred použitím zobrazí presné zmeny.",
"section": "Sieť"
},
"intro": {
"title": "Na čo je toto menu",
"body": "Skontrolujte, diagnostikujte a v prípade potreby opravte sieťovú konfiguráciu hostiteľa Proxmox bez straty vzdialeného prístupu. Nástroje sa riadia jednou zásadou: <strong>najprv prečítať, potom navrhnúť a zmeny použiť iba s výslovným súhlasom a bezpečnostnou zálohou</strong>. Tlačidlo „Automaticky opraviť všetko“ neexistuje."
},
"openingMenu": {
"heading": "Otvorenie menu",
"intro": "V hlavnom menu ProxMenux vyberte <strong>Sieť</strong>. Zobrazí sa toto:",
"imageAlt": "Menu Správa siete s možnosťami diagnostiky, sledovania, analýzy, opráv, trvalých názvov a zálohovania"
},
"safety": {
"heading": "Bezpečnostný model",
"body": "Úprava sieťovej konfigurácie vzdialeného hostiteľa Proxmox je jedným z najjednoduchších spôsobov, ako stratiť prístup. ProxMenux to zohľadňuje pri každej akcii. Nástroje sú rozdelené do troch úrovní správania — vyberte kartu, ktorá zodpovedá vášmu zámeru:"
},
"tiers": {
"readOnly": {
"title": "Iba na čítanie",
"body": "Iba kontrola. Za žiadnych okolností nemôže meniť systém.",
"items": [
"Smerovacia tabuľka, testy pripojenia, pokročilé štatistiky",
"Sledovanie sieťovej prevádzky v reálnom čase (iftop, iptraf-ng)",
"Test priepustnosti (iperf3)"
]
},
"analyze": {
"title": "Analyzovať, potom navrhnúť",
"body": "Zistí problémy, vypíše správu s navrhovanými príkazmi shellu a zastaví sa. Sami sa rozhodnete, či potom spustíte opravu so sprievodcom.",
"items": [
"Analýza konfigurácie mosta",
"Analýza konfigurácie siete"
]
},
"apply": {
"title": "Aplikovať so zálohou",
"body": "Mení systém. Vždy najprv vytvorí zálohu dotknutého súboru s časovou pečiatkou a pred zápisom zobrazí náhľad.",
"items": [
"Trvalé názvy rozhraní (súbory .link)",
"Ručné zálohovanie, obnovenie a reštart služby"
]
}
},
"classicTitle": "Iba klasický sieťový stack",
"classicBody": "Každá funkcia analýzy a opravy pred zásahom skontroluje aktívneho správcu siete. Ak hostiteľ používa <strong>netplan</strong>, <strong>systemd-networkd</strong> alebo <strong>NetworkManager</strong>, nástroj sa ihneď zastaví s jasným hlásením. Menu podporuje iba klasickú sieťovú konfiguráciu Debian/Proxmox v <code>/etc/network/interfaces</code>. Je to zámerné: úprava súboru netplan podľa pravidiel pre <code>ifupdown</code> by mohla konfiguráciu nepozorovane poškodiť.",
"backups": {
"heading": "Kam sa ukladajú zálohy",
"intro": "Každá oprava so sprievodcom, obnova alebo ručné zálohovanie zapíše kópiu <code>/etc/network/interfaces</code> s časovou pečiatkou do <code>/var/backups/proxmenux/</code>:",
"rollbackIntro": "Na ručné obnovenie predchádzajúceho stavu z konzoly:"
},
"readOnlySection": {
"heading": "Kontrola len na čítanie",
"body": "Východiskový bod, keď niečo nefunguje správne. Iba kontrola — nikdy nezapisuje do <code>/etc/network/interfaces</code> ani nespúšťa príkazy meniace systém, s jedinou výslovnou výnimkou: úplné odstránenie zisteného NetworkManager vyžaduje váš súhlas. Bezpečné použitie cez SSH kedykoľvek.",
"options": [
{
"title": "Diagnostika",
"description": "Tri jednorazové kontroly iba na čítanie: Zobraziť smerovaciu tabuľku, Test pripojenia a Pokročilá diagnostika. Iba kontrola — nikdy nezapisuje do systému."
},
{
"title": "Nástroje na sledovanie v reálnom čase",
"description": "Tri interaktívne spúšťače: iftop (šírka pásma v reálnom čase pre každú dvojicu hostiteľov), iptraf-ng (sledovanie prevádzky vo viacerých režimoch) a iperf3 (test šírky pásma, režim server / klient)."
}
]
},
"analyzeSection": {
"heading": "Analyzovať, potom navrhnúť",
"body": "Používajú sa, keď kontrola alebo skutočný výpadok poukazuje na problém konfigurácie. Každý nástroj prejde príslušnú časť <code>/etc/network/interfaces</code>, vypíše podrobnú správu s presným príkazom shellu na opravu každého zistenia a <strong>zastaví sa</strong>. Ak potom prijmete voliteľnú opravu so sprievodcom, pred každou zmenou sa vytvorí záloha a zmena sa zobrazí pred zápisom.",
"options": [
{
"title": "Analýza mostov a oprava so sprievodcom",
"description": "Zistí mosty vmbrX s chýbajúcimi alebo neplatnými portmi, typicky po opätovnom číslovaní zariadení PCI. Najprv zobrazí správu a opravu vykoná iba po prijatí postupu so sprievodcom v 5 krokoch."
},
{
"title": "Analýza konfigurácie a čistenie so sprievodcom",
"description": "Nájde fyzické rozhrania deklarované v /etc/network/interfaces, ktoré už neexistujú — osirelé konfigurácie po zmenách hardvéru. Nahlási ich a ponúkne odstránenie so sprievodcom."
}
]
},
"applySection": {
"heading": "Aplikovať so zálohou",
"body": "Tieto nástroje zo svojej podstaty zapisujú na disk. Každý pred zápisom vytvorí zálohu dotknutého súboru s časovou pečiatkou. Deštruktívne možnosti, ako obnova a reštart, vyžadujú výslovné potvrdenie áno/nie. <em>Trvalé názvy rozhraní</em> sa prejavia až pri ďalšom reštarte, nie okamžite, takže ich nastavenie možno bezpečne naplánovať aj na vzdialenom hostiteľovi.",
"options": [
{
"title": "Trvalé názvy rozhraní",
"description": "Priradí názvy rozhraní (eno1, enp3s0, …) k MAC adresám pomocou súborov .link služby systemd. Názvy zostanú zachované pri zmene slotov PCI, aktualizáciách jadra aj pridávaní alebo odoberaní iných sieťových kariet."
},
{
"title": "Záloha a reštart rozhraní",
"description": "Ručné vytvorenie snímky /etc/network/interfaces, prehliadanie a obnova predchádzajúcich záloh, zobrazenie aktuálnej konfigurácie a reštart sieťovej služby podľa potreby."
}
]
},
"consoleTitle": "Pripravte si prístup ku konzole",
"consoleSubTitle": "Pred akoukoľvek opravou na vzdialenom hostiteľovi",
"consoleBody": "Ak ste pripojení cez SSH a máte iba jednu cestu k hostiteľovi, pred zmenami siete si pripravte náhradný prístup: fyzickú konzolu / IPMI / iKVM alebo iný počítač v rovnakej LAN. Opravy so sprievodcom sú bezpečné a vždy ponúkajú príkaz na vrátenie zmien, ale nesprávne nakonfigurovaný most alebo prerušené spojenie vás aj tak môže pripraviť o prístup, kým sa nedostanete ku konzole."
}
@@ -0,0 +1,136 @@
{
"meta": {
"title": "Nástroje na sledovanie v reálnom čase | Dokumentácia ProxMenux",
"description": "Tri interaktívne spúšťače nástrojov na sledovanie siete: iftop (šírka pásma v reálnom čase pre každú dvojicu hostiteľov), iptraf-ng (sledovanie prevádzky vo viacerých režimoch) a iperf3 (test šírky pásma, režim server / klient). Každý sa nainštaluje pri prvom použití.",
"ogTitle": "Nástroje na sledovanie v reálnom čase | Dokumentácia ProxMenux",
"ogDescription": "Interaktívne monitorovanie siete a testovanie šírky pásma pre Proxmox host: iftop, iptraf-ng, iperf3."
},
"header": {
"title": "Nástroje na sledovanie v reálnom čase",
"description": "Tri interaktívne spúšťače na sledovanie siete v reálnom čase a meranie šírky pásma: iftop, iptraf-ng a iperf3. Každý nástroj sa pri prvom použití automaticky nainštaluje cez apt, beží v popredí a ukončuje sa uvedeným klávesom. Nemenia sieťovú konfiguráciu hostiteľa; iperf3 generuje testovaciu prevádzku.",
"section": "Sieť"
},
"intro": {
"title": "Čo to robí?",
"body": "Tri interaktívne monitorovacie nástroje, každý za vlastným vstupom do menu. Pri prvom spustení jedného sa balík inštaluje ticho cez <code>apt-get</code>. Následné štarty začínajú okamžite. Žiadny z týchto nástrojov nemení konfiguráciu hostiteľskej siete."
},
"when": {
"heading": "Kedy použiť ktorý",
"headerQuestion": "Otázka",
"headerUse": "Použitie",
"rows": [
{
"question": "Kto vyťažuje spojenie <em>práve teraz</em>?",
"use": "iftop"
},
{
"question": "Aké členenie protokolu / veľkosti paketov / toky TCP prúdia?",
"use": "iptraf-ng"
},
{
"question": "Koľko šírky pásma je skutočne k dispozícii medzi dvoma hostiteľmi?",
"use": "iperf3"
}
]
},
"iftop": {
"heading": "Sieťová prevádzka v reálnom čase (iftop)",
"body": "Šírka pásma v reálnom čase pre dvojice hostiteľov (zdroj ↔ cieľ) — ako <code>top</code> pre sieťovú prevádzku. Najväčšie toky zobrazuje navrchu s kĺzavými priemermi za 2/10/40 sekúnd. Najlepší nástroj na otázku <em>„Prečo je moje odchádzajúce spojenie vyťažené?“</em>.",
"exit": "<strong>Ukončenie:</strong> stlačte <kbd>q</kbd>. ProxMenux pred spustením zobrazí pripomenutie.",
"keysTitle": "Užitočné klávesy v iftop",
"keysBody": "<kbd>n</kbd> prepína vyhľadávanie DNS, <kbd>p</kbd> zobrazuje čísla portov, <kbd>P</kbd> pozastaví zobrazenie, <kbd>t</kbd> prepína smer riadku (odoslané / prijaté / oboje), <kbd>1</kbd>/<kbd>2</kbd>/<kbd>3</kbd> zoradí podľa priemeru za 2 s / 10 s / 40 s. Úplný zoznam nájdete v <code>man iftop</code>."
},
"iptraf": {
"heading": "Nástroj na sledovanie siete (iptraf-ng)",
"intro": "Nástroj na sledovanie prevádzky vo viacerých režimoch, ovládaný cez menu. iftop odpovedá na <em>„kto“</em>, iptraf-ng na <em>„čo“</em>: počty bajtov a paketov podľa protokolu, sledovanie stavu spojení TCP, histogramy veľkosti paketov a aktivita LAN podľa stanice.",
"menuIntro": "Pri spustení dostanete ponuku piatich možností:",
"headerMode": "Režim",
"headerUseFor": "Použiť pre",
"rows": [
{
"mode": "IP traffic monitor",
"useFor": "Zoznam tokov TCP / UDP / ICMP / iných protokolov IP v reálnom čase s počítadlami bajtov a stavom pripojenia"
},
{
"mode": "General interface stats",
"useFor": "Súhrnný počet paketov IPv4 / IPv6 / TCP / UDP / ICMP / non-IP paketov na sieťovú kartu"
},
{
"mode": "Detailed interface stats",
"useFor": "Rovnaké ako vyššie, ale pre jedno rozhranie, s podrobnosťami o veľkosti a rýchlosti paketov"
},
{
"mode": "Statistical breakdowns",
"useFor": "Histogram rozdelenia veľkosti paketov podľa portu TCP / UDP"
},
{
"mode": "LAN station monitor",
"useFor": "Štatistiky prevádzky podľa MAC adresy pre lokálnu broadcastovú doménu"
}
],
"exit": "<strong>Ukončenie:</strong> stlačte <kbd>x</kbd> v ľubovoľnom zobrazení alebo <kbd>Q</kbd> v hlavnom menu. ProxMenux pred spustením zobrazí pripomenutie.",
"logTitle": "Zaznamenávanie zachytených údajov do súboru",
"logBody": "Každý režim ponúka zápis zachytených štatistík do <code>/var/log/iptraf-ng/</code>. Ak potrebujete záznam špičky prevádzky, nechajte nástroj bežať, zapisujte do súboru a skontrolujte ho neskôr namiesto sledovania obrazovky v reálnom čase."
},
"iperf3": {
"heading": "Test priepustnosti (iperf3)",
"intro1": "Meria skutočnú priepustnosť TCP medzi dvoma hostiteľmi. Na rozdiel od iftop / iptraf-ng, ktoré sledujú existujúcu prevádzku, iperf3 generuje syntetickú prevádzku na záťažový test spojenia. Nevyhnutné pri otázkach ako <em>„Dosahuje moje 10 GbE skutočne 10 GbE?“</em> alebo <em>„Je úzkym miestom sieťová karta, prepínač alebo úložisko?“</em>.",
"intro2": "iperf3 je <strong>nástroj pre dvoch hostiteľov</strong>: jeden beží ako server a načúva na porte TCP 5201, druhý ako klient, ktorý sa pripojí, odošle údaje a vypíše rýchlosť. Spúšťač ProxMenux sa opýta na požadovaný režim:",
"headerMode": "Režim",
"headerBehaviour": "Správanie",
"headerCli": "Ekvivalentný príkaz CLI",
"rows": [
{
"mode": "Server",
"behaviour": "Načúva na porte TCP 5201 a vypíše výsledky každého prichádzajúceho testu. Ukončí sa cez Ctrl+C.",
"cli": "iperf3 -s"
},
{
"mode": "Klient",
"behaviour": "Vyžiada IP adresu alebo názov servera, pripojí sa, spustí predvolený 10-sekundový test a vypíše správu.",
"cli": "iperf3 -c <target>"
}
],
"workflowIntro": "Typický pracovný postup na testovanie 10 GbE spojenia medzi dvoma hostiteľmi Proxmox:",
"workflow": [
"Na hostiteľovi A otvorte menu Sieť → <em>Test priepustnosti (iperf3)</em> → vyberte <strong>Server</strong>.",
"Na hostiteľovi B otvorte rovnakú položku ponuky → vyberte <strong>Klient</strong> → zadajte IP hostiteľa A.",
"Počkajte 10 sekúnd. Porovnajte nameranú rýchlosť s teoretickým maximom spojenia."
],
"sample": "Vzorový výstup klienta:",
"flagsTitle": "Užitočné voľby pri ručnom spustení zo shellu",
"flagsBody": "<code>-t 60</code> dlhší test (60 s namiesto 10 s), <code>-P 4</code> 4 paralelné toky (rýchlejšie vyťažia spojenie), <code>-R</code> opačný smer (server → klient), <code>-u -b 100M</code> test UDP pri 100 Mbit/s (meranie kolísania oneskorenia a straty paketov), <code>-p 5202</code> iný port (viac testov súčasne). Úplný zoznam nájdete v <code>man iperf3</code>.",
"firewallTitle": "Otvoriť firewall port na serveri",
"firewallBody": "Server predvolene načúva na porte TCP <strong>5201</strong>. Ak ho spustíte na hostiteľovi Proxmox s prísnym firewallom na úrovni dátového centra alebo hostiteľa, počas testu povoľte prichádzajúce TCP 5201 z IP adresy klienta a potom port opäť zatvorte. To isté platí pre <code>nftables</code> / <code>iptables</code> na fyzických hostiteľoch."
},
"install": {
"heading": "Prvé spustenie nainštaluje balík",
"body": "Všetky tri spúšťače overia prítomnosť programu a ak chýba, spustia <code>apt-get update -qq &amp;&amp; apt-get install -y &lt;pkg&gt;</code>. Inštalácia prebieha bez výpisu: pri prvom použití môže menu pôsobiť zamrznuto 10–30 sekúnd. Ďalšie spustenia sú okamžité."
},
"troubleshoot": {
"heading": "Riešenie problémov",
"hangTitle": "Inštalácia visí navždy pri prvom spustení",
"hangBody": "Hostiteľ nemá internet alebo apt repo sú nedosiahnuteľné. Zrušiť pomocou <kbd>Ctrl</kbd>+<kbd>C</kbd>, spustiť <code>apt-get update</code> ručne vidieť skutočnú chybu (DNS, repo podpis, proxy ...), potom sa vrátiť do menu.",
"refusedTitle": "Klient iperf3: „unable to connect to server: Connection refused“",
"refusedBody": "Server buď nebeží, alebo jeho firewall blokuje TCP 5201. Na serveri overte cez <code>ss -tlnp | grep 5201</code>, že iperf3 načúva. Ak načúva, ale klient stále zlyháva, skontrolujte firewally na trase medzi hostiteľmi.",
"slowTitle": "iperf3 hlási výrazne nižšiu rýchlosť, než sa od spojenia očakáva",
"slowBody": "Bežné príčiny v poradí pravdepodobnosti: (1) CPU jedného hostiteľa je úzkym miestom — skúste <code>iperf3 -c &lt;target&gt; -P 4</code> na využitie viacerých jadier; (2) prenos prechádza pomalším spojom, napríklad gigabitovým prepínačom medzi dvoma kartami 10 GbE; (3) nezhodné MTU — skontrolujte <code>ip link show</code> na oboch koncoch; (4) vypnutý NIC offloading — pri karte Intel e1000e pozrite komunitný skript <em>Disable NIC Offloading</em>.",
"noTrafficTitle": "iftop / iptraf-ng nevykazujú žiadnu prevádzku pre rušného hostiteľa",
"noTrafficBody": "Predvolené zachytávanie používa prvé zistené rozhranie. Správne rozhranie zadajte výslovne zo shellu: <code>iftop -i vmbr0</code> alebo <code>iptraf-ng -i vmbr0</code>. Spúšťač v menu používa predvolené rozhranie; pre iné rozhrania spustite nástroj z konzoly."
},
"related": {
"heading": "Súvisiace",
"items": [
{
"label": "Diagnostika",
"href": "/docs/network/diagnostics",
"tail": " — jednorazové kontroly iba na čítanie (smerovanie, pripojenie a pokročilé štatistiky)."
},
{
"label": "Analýza mostov a oprava so sprievodcom",
"href": "/docs/network/bridge-analysis",
"tail": " — keď sledovanie odhalí, že rozhranie alebo most nefunguje správne."
}
]
}
}
@@ -0,0 +1,130 @@
{
"meta": {
"title": "Trvalé názvy rozhraní | Dokumentácia ProxMenux",
"description": "Priraďte názvy rozhraní Proxmox (eno1, enp3s0, …) k MAC adresám pomocou súborov .link služby systemd, aby zostali zachované pri opätovnom číslovaní PCI, aktualizáciách jadra a pridávaní či odoberaní iných sieťových kariet.",
"ogTitle": "Trvalé názvy rozhraní | Dokumentácia ProxMenux",
"ogDescription": "Zabráňte zmene názvov rozhraní Proxmox pri zmene hardvéru. Používa súbory .link služby systemd s priradením podľa MAC adresy."
},
"header": {
"title": "Trvalé názvy rozhraní",
"description": "Pre každú fyzickú sieťovú kartu vytvorí súbor .link služby systemd, ktorý priradí názov pridelený jadrom k MAC adrese karty. Po použití pri ďalšom reštarte sa názvy rozhraní prestanú meniť pri pridávaní, odoberaní alebo presúvaní kariet PCIe.",
"section": "Sieť"
},
"intro": {
"title": "Čo to robí?",
"body": "Pre každú fyzickú sieťovú kartu hostiteľa zapíše malý súbor <code>/etc/systemd/network/10-&lt;iface&gt;.link</code> s pravidlom: <em>„Zariadenie s touto MAC adresou sa musí vždy volať týmto názvom.“</em> systemd-udevd použije pravidlo pri každom štarte skôr, než <code>ifupdown</code> prečíta <code>/etc/network/interfaces</code>."
},
"problem": {
"heading": "Problém, ktorý rieši",
"intro": "Linux odvodzuje predvolené názvy rozhraní z topológie PCI — <code>eno1</code> = integrovaná karta, <code>enp3s0</code> = karta na zbernici PCI 3, slot 0 atď. Schéma názvov je deterministická <em>pri rovnakom rozložení hardvéru</em>. Ak sa rozloženie zmení, zmenia sa aj názvy:",
"items": [
"Pridanie GPU pred existujúcu sieťovú kartu → číslo zbernice sieťovej karty sa môže zmeniť → zmení sa názov.",
"Presunutie karty do iného slotu PCIe → zmení sa názov.",
"Aktualizácia BIOS / UEFI s opätovným číslovaním zariadení → názvy sa môžu zmeniť.",
"Nahradenie chybnej karty rovnakým modelom v inom slote → zmení sa názov."
],
"outro": "Po takejto zmene <code>/etc/network/interfaces</code> stále odkazuje na <em>starý</em> názov; most sa neaktivuje a hostiteľ stratí sieťové pripojenie. Nastavenie trvalých názvov zabráni opakovaniu tejto situácie."
},
"howWorks": {
"heading": "Ako to funguje",
"arrowLabel": "na NIC",
"nodes": {
"detectLabel": "Zistiť fyzické sieťové karty",
"detectDetail": "ls /sys/class/net/\nvylúčiť vmbr / bond /\ndocker / veth / wireguard …",
"readLabel": "Prečítať každú MAC adresu",
"readDetail": "cat /sys/class/net/\n '<'iface'>'/address",
"writeLabel": "Zapísať súbor .link",
"writeDetail": "/etc/systemd/network/\n 10-'<'iface'>'.link"
},
"minimalIntro": "Každý vygenerovaný súbor je zámerne minimálny:",
"minimalOutro": "Pri štarte systemd-udevd identifikuje zariadenie podľa MAC adresy a pridelí požadovaný názov <em>skôr</em>, než zasiahnu iné komponenty (ifupdown, predvolené pomenovanie jadra). Predpona <code>10-</code> zabezpečuje skoré načítanie pravidiel pred predvoleným súborom <code>99-default.link</code>."
},
"scope": {
"heading": "Čo sa napíše, čo sa preskočí",
"headerType": "Typ",
"headerBehaviour": "Správanie",
"headerWhy": "Prečo?",
"rows": [
{
"type": "Integrovaná / PCIe sieťová karta",
"behaviour": "Zapíše sa súbor <code>.link</code>",
"why": "Zodpovedá skutočnému zariadeniu PCI — prípad, pre ktorý je nástroj určený"
},
{
"type": "Wi-Fi (phy80211)",
"behaviour": "Zapíše sa súbor <code>.link</code>",
"why": "Má skutočnú MAC adresu a využije stabilný názov"
},
{
"type": "Mosty (vmbrX)",
"behaviour": "Preskočené",
"why": "Virtuálne; meno pochádza z <code>/etc/network/interfaces</code>"
},
{
"type": "Bondy (bondX)",
"behaviour": "Preskočené",
"why": "Virtuálne; názov bondu nastavuje ifupdown"
},
{
"type": "veth / docker0 / br-XXXX",
"behaviour": "Preskočené",
"why": "Vytvárané podľa potreby systémom Docker / LXC — nejde o trvalý hardvér"
},
{
"type": "tap / fwpr / fwln",
"behaviour": "Preskočené",
"why": "Vytvárané podľa potreby systémom Proxmox pre každú VM/CT"
},
{
"type": "WireGuard / Cilium / Tailscale",
"behaviour": "Preskočené",
"why": "Softvérové rozhrania spravované vlastnými démonmi"
}
]
},
"safety": {
"heading": "Ochrana: predchádzajúce súbory .link sa zálohujú",
"intro": "Ak <code>/etc/systemd/network/</code> už obsahuje <code>.link</code> súbory (z predchádzajúceho spustenia alebo iného nástroja), skopírujú sa do záložného adresára s časovou značkou pred generovaním nových:",
"outro": "Ak chcete vrátiť späť: skopírujte súbory späť zo záložného adresára a reštartujte.",
"rebootTitle": "Prejaví sa pri ďalšom reštarte, nie okamžite",
"rebootBody": "Zmeny súborov <code>.link</code> sa použijú iba pri štarte, keď udev znovu enumeruje zariadenia. Preto nástroj hlási <em>„Zmeny sa použijú po reštarte“</em>. Premenovanie rozhrania za behu je riskantné a nástroj sa oň nepokúša: aktívny <code>vmbr0</code> s členskými rozhraniami by sa musel prekonfigurovať atómovo. Operácia sa preto odkladá na ďalší čistý štart."
},
"afterReboot": {
"heading": "Po reštarte",
"intro": "Keď sú názvy napevno priradené, postup pri budúcich zmenách hardvéru je jednoduchý:",
"items": [
"Vypnite počítač, zmeňte hardvér (pridajte kartu, zmeňte slot, …) a spustite ho.",
"Každý NIC si ponechá svoje predchádzajúce meno, pretože jeho MAC zodpovedá súboru <code>.link</code>.",
"Ak je NIC nahradený (iný MAC), dostane predvolený názov jadra (<code>enp&lt;bus&gt;s&lt;slot&gt;</code>); znovu spustite toto menu pre pridanie položky <code>.link</code> pre MAC novej karty."
]
},
"troubleshoot": {
"heading": "Riešenie problémov",
"emptyTitle": "\"Nenájdené žiadne fyzické rozhrania\" po spustení nástroja",
"emptyBody": "Jadro na hostiteľovi nevidí žiadne rozhrania založené na PCI / phy80211. Overte to cez <code>ls -l /sys/class/net/</code> — každá položka by mala obsahovať symbolický odkaz <code>device</code> (PCI) alebo položku <code>phy80211</code> (Wi-Fi). Ak pri skutočnej sieťovej karte chýbajú obe, ovládač nie je načítaný.",
"noChangeTitle": "Po reštarte sa mená nezmenili podľa očakávania.",
"noChangeBody": "Skontrolujte, či súbor existuje a má správny formát: <code>cat /etc/systemd/network/10-&lt;iface&gt;.link</code>. Potom skontrolujte záznamy udev: <code>journalctl -u systemd-udevd -b | grep -i link</code>. Bežnou príčinou je starý parameter jadra <code>net.ifnames=0</code>, ktorý úplne vypína predvídateľné názvy — odstráňte ho z <code>/etc/default/grub</code>, spustite <code>update-grub</code> a reštartujte.",
"undoTitle": "Chcem zrušiť trvalé pomenovanie.",
"undoBody": "Buď odstráňte súbory <code>.link</code> (<code>rm /etc/systemd/network/10-*.link</code>), alebo ich obnovte z adresára záloh vytvoreného pri predchádzajúcom spustení. Zmenu použijete reštartom."
},
"related": {
"heading": "Súvisiace",
"items": [
{
"label": "Analýza mostov a oprava so sprievodcom",
"href": "/docs/network/bridge-analysis",
"tailRich": " — postup obnovy, keď sa názvy <em>už</em> zmenili."
},
{
"label": "Analýza konfigurácie a čistenie so sprievodcom",
"href": "/docs/network/config-analysis",
"tail": " — na odstránenie osirelých blokov, ktoré zostali po zmenách názvov."
},
{
"label": "Diagnostika",
"href": "/docs/network/diagnostics",
"tailRich": " — po reštarte overte nové názvy cez <em>Zobraziť smerovaciu tabuľku</em>."
}
]
}
}
@@ -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"
]
]
}
}
]
}
]
}
+152
View File
@@ -0,0 +1,152 @@
{
"meta": {
"title": "Fail2Ban | Dokumentácia ProxMenux",
"description": "Nainštalujte Fail2Ban s tromi jails vyladenými pre Proxmox (SSH agresívny, Proxmox UI 8006, ProxMenux Monitor 8008). Zahŕňa opravu journald MaxLevelStore, vlastné protokolové služby pre spoľahlivosť, automaticky detekovaný backend nftables/iptables a zosilnenie SSH MaxAuthTries.",
"ogTitle": "Fail2Ban | Dokumentácia ProxMenux",
"ogDescription": "Ochrana pred hrubou silou pre SSH a webové rozhrania Proxmox s opravami journald a backendu špecifickými pre Proxmox."
},
"header": {
"title": "Fail2Ban",
"description": "Nainštaluje Fail2Ban pre Proxmox: tri jaily (agresívny SSH, rozhranie Proxmox na 8006, ProxMenux Monitor na 8008 a reverzný proxy), opravu úrovne journald na ukladanie udalostí SSH, dve služby kopírujúce denník do súborov na obídenie známeho problému backendu systemd, detekciu backendu firewallu a posilnenie SSH pomocou MaxAuthTries.",
"section": "Zabezpečenie"
},
"intro": {
"title": "Čo to robí?",
"body": "Inštaluje Fail2Ban z repozitárov Debian a vytvorí konfiguráciu Proxmox, ktorá ihneď chráni SSH, rozhranie Proxmox a ProxMenux Monitor. Ak rozpozná existujúcu inštaláciu, ponúkne menu správy na preinštalovanie alebo odstránenie."
},
"firstLaunch": {
"heading": "Dialóg prvého spustenia",
"body": "Ak Fail2Ban nie je nainštalovaný, skript zobrazí potvrdenie so súhrnom plánovanej inštalácie a konfigurácie. Zrušenie ukončí postup bez zmien; potvrdenie spustí inštaláciu.",
"imageAlt": "Potvrdenie inštalácie Fail2Ban s tromi jailmi, opravou journald a posilnením SSH"
},
"jails": {
"heading": "Tri jails",
"headerJail": "Jail",
"headerProtects": "Chráni",
"headerRetries": "Pokusy / Časové okno",
"headerBan": "Trvanie blokovania",
"rows": [
{
"jail": "[sshd]",
"protects": "SSH (agresívny režim — zahŕňa ddos, mode, normal)",
"retries": "2 / 60 min",
"ban": "9 hodín"
},
{
"jail": "[proxmox]",
"protects": "Webové rozhranie Proxmox (port 8006)",
"retries": "3 / 10 min",
"ban": "1 hodina"
},
{
"jail": "[proxmenux]",
"protects": "ProxMenux Monitor (port 8008 + http/https reverzný proxy)",
"retries": "3 / 10 min",
"ban": "1 hodina"
}
],
"outro": "Globálne predvolené hodnoty od <code>jail.local</code>: <code>ignoreip = 127.0.0.1/8 ::1</code>, <code>ignoreself = true</code>,<code> bantime = 86400</code> (24-hodinová rezerva pre jails ktoré to neprepíšu), <code>maxretry = 2</code>, <code>findtime = 1800</code>."
},
"journald": {
"heading": "Prečo je oprava journald dôležitá",
"intro": "Proxmox dodáva <code>/etc/systemd/journald.conf</code> s <codeNw>MaxLevelStore=warning</codeNw>. journald pred uložením zahodí správy s úrovňou <em>nižšou</em> než warning. SSH a PAM hlásia chyby overovania na úrovniach <em>info</em> / <em>notice</em>, preto:",
"diagram": {
"sshLabel": "SSH / PAM",
"sshDetail": "chyba overovania\n(úroveň info / notice)",
"journaldLabel": "journald",
"journaldDetail": "MaxLevelStore=warning\n→ udalosť sa bez upozornenia zahodí",
"fail2banLabel": "Fail2Ban",
"fail2banDetail": "nevidí nič\n→ nikdy nič nezakazuje",
"arrowLabel": "predvolený Proxmox"
},
"afterDiagram": "Inštalátor to rozpozná a vytvorí doplnkový súbor <codeXs>/etc/systemd/journald.conf.d/proxmenux-loglevel.conf</codeXs>, ktorý nastaví <code>MaxLevelStore</code> aj <code>MaxLevelSyslog</code> na <code>info</code>:",
"code": "[Journal]\nMaxLevelStore=info\nMaxLevelSyslog=info",
"outro": "Potom reštartuje <code>systemd-journald</code>. Pri odinštalovaní sa doplnkový súbor odstráni a obnoví sa pôvodné nastavenie Proxmox."
},
"loggers": {
"heading": "Prečo dve vlastné logger služby",
"intro1": "Fail2Ban môže čítať priamo denník systemd (<code>backend = systemd</code>), ale tento backend má na Proxmoxe známe problémy s pracovnými procesmi <code>pvedaemon</code>: udalosti overovania sa objavia v denníku, ale nie vždy sa zachytia. Problém sa občas týka aj <code>sshd</code>.",
"intro2": "ProxMenux vytvorí dve malé služby systemd, ktoré sledujú príslušné jednotky pomocou <code>journalctl -f</code> a pridávajú každý riadok do súboru. Fail2Ban číta tieto súbory spoľahlivým <code>backend = auto</code> (súborový režim):",
"headerService": "Služba",
"headerSource": "Zdrojová jednotka",
"headerOutput": "Výstupný súbor",
"rows": [
{
"service": "proxmox-auth-logger.service",
"source": "pvedaemon.service",
"output": "/var/log/proxmox-auth.log"
},
{
"service": "ssh-auth-logger.service",
"source": "ssh.service",
"output": "/var/log/ssh-auth.log"
}
],
"outro": "Obe služby sú deklarované ako <code>PartOf=fail2ban.service</code>, takže sa reštartujú s Fail2Ban a zastavia sa s ním. Režim 640, ktorý vlastní <code>root:adm</code> v súboroch denníka. Tretí protokol používaný <code>[proxmenux]</code> jail (<code>/var/log/proxmenux-auth.log</code>) je zapísaný priamo aplikáciou ProxMenux Monitor Flask – nie je potrebná žiadna služba zapisovača."
},
"backend": {
"heading": "Automatická detekcia backendu firewallu",
"intro": "Inštalátor sonduje hostiteľa: ak <code>nft list ruleset</code> funguje, vyberie <code>nftables</code> ako akciu zákazu. Inak sa vráti do <code>iptables-multiport</code> / <code>iptables-allports</code>. Voľba je napísaná do <code>jail.local</code>:",
"code": "# nftables host\nbanaction = nftables\nbanaction_allports = nftables[type=allports]\n\n# iptables host (fallback)\nbanaction = iptables-multiport\nbanaction_allports = iptables-allports"
},
"hardening": {
"heading": "Posilnenie SSH: MaxAuthTries",
"intro": "Kontrola Lynis <strong>SSH-7408</strong> odporúča <code>MaxAuthTries 3</code> v <code>sshd_config</code>. SSH jail používa <code>maxretry = 2</code> na blokovanie po opakovaných zlyhaniach; MaxAuthTries obmedzuje pokusy v rámci jedného spojenia. Toto nastavenie SSH pridáva ďalšiu vrstvu ochrany aj pri zastavení Fail2Ban počas údržby.",
"installerIntro": "Inštalátor:",
"items": [
"Číta aktuálnu hodnotu <code>MaxAuthTries</code> (alebo predvolené hodnoty 6 v prípade neprítomnosti).",
"Ukladá to na <code>/usr/local/share/proxmenux/sshd_maxauthtries_backup</code>.",
"Upraví <code>sshd_config</code> priamo: nahradí existujúci riadok, odkomentuje zakomentovaný alebo pridá nový.",
"Znova načíta <code>sshd</code> bez reštartu, aby existujúce relácie zostali aktívne."
],
"outro": "Na odinštalovanie je uložená pôvodná hodnota obnovená a <code>sshd</code> je znovu načítaná."
},
"manage": {
"heading": "Spravovať existujúcu inštaláciu",
"intro": "Ak je Fail2Ban nainštalovaný už pri otvorení ponuky, skript ho detekuje a zobrazí riadiace menu namiesto opätovného spustenia inštalátora:",
"headerAction": "Akcia",
"headerWhat": "Čo to robí?",
"rows": [
{
"action": "Preinštalovať",
"what": "Znova spustí celý inštalátor a prepíše všetky jaily aktuálnymi predvolenými hodnotami ProxMenux. Použite to, keď aktualizácia zmení odporúčané hodnoty."
},
{
"action": "Odstrániť",
"what": "Zastaví fail2ban a dve loggerové služby, vyčistí balík apt, odstráni všetky jail / súbory filtrov, odstráni drop-in journald (obnoví predvolené nastavenie Proxmox) a obnoví pôvodný SSH MaxAuthTries."
}
]
},
"verify": {
"heading": "Overte, či funguje.",
"intro": "Po inštalácii užitočné príkazy od hostiteľa:",
"code": "# Service status and version\nsystemctl status fail2ban\nfail2ban-client --version\n\n# All active jails\nfail2ban-client status\n\n# Detail on one jail\nfail2ban-client status sshd\nfail2ban-client status proxmox\nfail2ban-client status proxmenux\n\n# Currently banned IPs in a jail\nfail2ban-client status sshd | grep \"Banned IP\"\n\n# Manually unban an IP (use this if you ban yourself)\nfail2ban-client unban 192.0.2.10\n\n# Tail the auth logs Fail2Ban watches\ntail -f /var/log/ssh-auth.log\ntail -f /var/log/proxmox-auth.log\ntail -f /var/log/fail2ban.log"
},
"troubleshoot": {
"heading": "Riešenie problémov",
"neverBansTitle": "Fail2Ban beží, ale nikdy nič nezakazuje",
"neverBansBody": "Overte, či <code>tail -f /var/log/ssh-auth.log</code> dostane záznam po pokuse o SSH prihlásenie s nesprávnym heslom z iného počítača. Ak zostane prázdny, skontrolujte <code>systemctl status ssh-auth-logger.service</code>. Ak služba beží, prezrite udalosti príkazom <code>journalctl -u ssh.service -n 50 --no-pager -p info</code> a overte, či doplnková konfigurácia journald povoľuje úroveň <em>info</em>.",
"monitorEmptyTitle": "ProxMenux Monitor jail nemá žiadne položky ani po neúspešnom prihlásení",
"monitorEmptyBody": "<code>[proxmenux]</code> jail číta <code>/var/log/proxmenux-auth.log</code>, ktorý je napísaný aplikáciou ProxMenux Monitor Flask – nie zapisovačom journald. Ak nespustíte Monitor, súbor zostane prázdny a jail sa nikdy nespustí. To sa očakáva; konfigurácia jail je neškodná. Ak spustíte Monitor a protokol je prázdny, skontrolujte konfiguráciu protokolovania Flask.",
"selfBanTitle": "Zakázal som sám seba.",
"selfBanIntro": "Z konzoly / IPMI / iKVM (alebo inej povolenej IP adresy):",
"selfBanCode": "fail2ban-client unban '<'YOUR_IP'>'\n\n# To prevent it next time, edit /etc/fail2ban/jail.local and add your IP:\nignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 203.0.113.42\n\n# Then reload\nfail2ban-client reload",
"aptFailTitle": "apt-get zlyhá: ''Unable to locate package fail2ban''",
"aptFailBody": "Hostiteľovi chýbajú repozitáre Debian (bežné pri minimálnej inštalácii Proxmox). Inštalátor to rozpozná a pred opakovaním vytvorí <code>/etc/apt/sources.list.d/debian.sources</code> so správnym kódovým označením (<code>bookworm</code> / <code>trixie</code>). Ak chyba pretrváva, skontrolujte <code>VERSION_CODENAME</code> v <code>/etc/os-release</code> a dostupnosť URL repozitára.",
"lockoutTitle": "SSH ma po inštalácii zamkne",
"lockoutBody": "Inštalatér nastaví <code>MaxAuthTries=3</code>. Ak váš správca hesla / agent získa viac kľúčov, môžete to prekročiť pri jednom pokuse o pripojenie. Obmedzte ponúkané kľúče: <code>ssh -o IdentitiesOnly=yes -i ~/.ssh/specific_key user@host</code>. Alebo dočasne zvýšiť <code>MaxAuthTries</code> v <code>sshd_config</code>, zatiaľ čo vy ladíte."
},
"files": {
"heading": "Súbory napísané",
"code": "/etc/fail2ban/jail.local # global defaults + [sshd]\n/etc/fail2ban/jail.d/proxmox.conf # [proxmox]\n/etc/fail2ban/jail.d/proxmenux.conf # [proxmenux]\n/etc/fail2ban/filter.d/proxmox.conf # auth-failure regex for pvedaemon\n/etc/fail2ban/filter.d/proxmenux.conf # auth-failure regex for Monitor\n/etc/systemd/system/proxmox-auth-logger.service # journal → file (pvedaemon)\n/etc/systemd/system/ssh-auth-logger.service # journal → file (sshd)\n/etc/systemd/journald.conf.d/proxmenux-loglevel.conf # MaxLevelStore=info\n/etc/ssh/sshd_config # MaxAuthTries=3 (in-place edit)\n/var/log/proxmox-auth.log # written by logger service\n/var/log/ssh-auth.log # written by logger service\n/var/log/proxmenux-auth.log # written by Monitor Flask app\n/usr/local/share/proxmenux/sshd_maxauthtries_backup # for restore on uninstall"
},
"related": {
"heading": "Súvisiace",
"monitorLabel": "ProxMenux Monitor → Bezpečnostná karta",
"monitorTail": " — inštalácia z ovládacieho panela, aktuálny stav jailov, blokované IP adresy a nastavenie počtu pokusov a trvania blokovania pre každý jail v prehliadači.",
"lynisLabel": "Lynis",
"lynisTail": " — spustite bezpečnostný audit pred zmenou a po nej a overte splnenie kontroly SSH-7408.",
"securityLabel": "Prehľad bezpečnosti",
"securityTail": " — Späť na prehľad sekcie."
}
}
+70
View File
@@ -0,0 +1,70 @@
{
"meta": {
"title": "Zabezpečenie Proxmox — Fail2Ban a audit zabezpečenia Lynis | ProxMenux",
"description": "Dva bezpečnostné nástroje pre Proxmox VE: Fail2Ban (prevencia prienikov cez SSH, webové rozhranie Proxmox a ProxMenux Monitor) a Lynis (audit bezpečnosti a posilnenia zabezpečenia, inštalovaný z pôvodného repozitára GitHub).",
"ogTitle": "Zabezpečenie Proxmox — Fail2Ban a audit zabezpečenia Lynis",
"ogDescription": "Fail2Ban a Lynis pre Proxmox VE: prevencia prienikov a audit zabezpečenia, inštalované a spravované cez ProxMenux.",
"twitterTitle": "Zabezpečenie Proxmox | ProxMenux",
"twitterDescription": "Fail2Ban a Lynis pre Proxmox VE: prevencia prienikov a audit zabezpečenia."
},
"header": {
"title": "Zabezpečenie",
"description": "Dva doplnkové nástroje pre Proxmox VE: aktívna ochrana (Fail2Ban blokuje IP adresy útočiace na SSH alebo webové rozhrania) a lokálny audit (Lynis hľadá nedostatky zabezpečenia a udeľuje skóre 0–100). Každý má vlastné menu inštalácie a správy, ktoré pred každou akciou rozpozná existujúcu inštaláciu.",
"section": "Zabezpečenie"
},
"intro": {
"title": "Aktívna ochrana a lokálny audit",
"body": "Odpovedajú na rôzne otázky. <strong>Fail2Ban</strong> odpovedá na <em>„Útočí na nás niekto práve teraz?“</em> sledovaním protokolov overovania a blokovaním útočiacich IP adries. <strong>Lynis</strong> odpovedá na <em>„Ako dobre je tento hostiteľ zabezpečený?“</em> jednorazovým auditom a konkrétnymi odporúčaniami. Používajte oba: Lynis ukáže, čo zlepšiť, a Fail2Ban reaguje na prebiehajúce útoky."
},
"opening": {
"heading": "Otvorenie menu",
"body": "V hlavnom menu ProxMenux vyberte <strong>Zabezpečenie</strong>. Zobrazí sa toto:",
"imageAlt": "Bezpečnostné menu s možnosťami Fail2Ban a Lynis"
},
"pick": {
"heading": "Vyberte si nástroj",
"body": "Tieto dva nástroje sú nezávislé: nainštalujte jeden, oba alebo žiadny. Každá karta nižšie odkazuje na podrobný opis nástroja."
},
"cards": {
"fail2ban": {
"title": "Fail2Ban",
"body": "Aktívna prevencia prienikov. Sleduje protokoly overovania SSH a webových rozhraní a po opakovaných zlyhaniach blokuje IP adresy.",
"bullets": [
"Tri jails: SSH, Proxmox UI (8006), ProxMenux Monitor (8008)",
"Opravuje predvolené nastavenia Proxmox journald, ktoré blokujú protokoly overenia",
"Automaticky rozpozná nftables / iptables",
"Posilnenie SSH: MaxAuthTries=3 (odporúčanie Lynis)"
]
},
"lynis": {
"title": "Lynis",
"body": "Lokálny bezpečnostný audítor. Preskúma hostiteľa a zobrazí skóre zabezpečenia a konkrétne odporúčania na nápravu.",
"bullets": [
"Inštalované z pôvodného repozitára CISOfy na GitHube (najnovšia verzia)",
"Skóre zabezpečenia 0–100 a zoznam upozornení a návrhov",
"Audit a aktualizácia priamo v menu",
"Navrhnuté iba na čítanie: nikdy nemení systém"
]
}
},
"workflowTip": {
"title": "Pracovný tok, ktorý využíva oboje",
"body": "Najprv spustite audit Lynis, aby ste poznali počiatočné skóre a hlavné odporúčania. Použite vybrané opravy. Potom nainštalujte Fail2Ban: automaticky zavedie ochranu SSH pred hrubou silou a upraví <code>MaxAuthTries</code> v <code>sshd_config</code> podľa kontroly SSH-7408. Opätovným auditom Lynis overte zlepšenie."
},
"fail2banSection": {
"heading": "Fail2Ban",
"body": "ProxMenux inštaluje Fail2Ban s konfiguráciou pre Proxmox. Okrem štandardného SSH jailu chráni webové rozhranie Proxmox a ProxMenux Monitor. Obchádza dva špecifické problémy: predvolené nastavenie journald zahadzujúce udalosti overovania a problém backendu systemd, ktorý bráni spoľahlivému čítaniu niektorých zdrojov systémového denníka. Podrobná stránka vysvetľuje inštaláciu, tri jaily, opravu journald, posilnenie SSH a riešenie problémov.",
"optionTitle": "Fail2Ban — inštalácia a správa",
"optionDescription": "Tri predkonfigurované jaily (agresívny režim sshd, rozhranie Proxmox na 8006, ProxMenux Monitor na 8008 a reverzný proxy), detekcia nftables/iptables, oprava journald a posilnenie SSH pomocou MaxAuthTries."
},
"lynisSection": {
"heading": "Lynis",
"body": "ProxMenux klonuje Lynis z <code>github.com/CISOfy/lynis</code> do <code>/opt/lynis</code> a sprístupní ho ako <code>/usr/local/bin/lynis</code>. Balík Debian zámerne nepoužíva, pretože za pôvodným projektom zaostáva o viacero hlavných verzií. Podrobná stránka opisuje inštaláciu, audit, aktualizáciu, odinštalovanie, čítanie správy a riešenie zistení.",
"optionTitle": "Lynis — inštalácia, audit a správa",
"optionDescription": "Nainštaluje najnovší Lynis z oficiálneho repozitára CISOfy na GitHube (namiesto staršieho balíka Debian), vykonáva audity systému so skóre zabezpečenia a aktualizuje cez git pull."
},
"componentStatus": {
"heading": "Stav komponentu",
"body": "Obaja inštalátori registrujú svoj stav v <code>/usr/local/share/proxmenux/components_status.json</code> v kategórii <code>security</code>. ProxMenux používa tento súbor na rozhodnutie, či zobraziť inštaláciu alebo menu správy pri následných spusteniach, a rovnaké dáta napája palubnú dosku v ProxMenux Monitor keď je prítomný."
}
}
+170
View File
@@ -0,0 +1,170 @@
{
"meta": {
"title": "Lynis | Dokumentácia ProxMenux",
"description": "Nainštalujte najnovší Lynis z oficiálneho repozitára CISOfy na GitHube, vykonajte audit so skóre zabezpečenia 0–100 a aktualizujte cez git pull. Audítor iba na čítanie: nemení systém.",
"ogTitle": "Lynis | Dokumentácia ProxMenux",
"ogDescription": "Nainštalujte a spustite bezpečnostný audítor Lynis na Proxmox VE. Inštalácia z pôvodného repozitára GitHub, audit a aktualizácia."
},
"header": {
"title": "Lynis",
"description": "Klonuje najnovší Lynis z oficiálneho repozitára CISOfy na GitHube, sprístupní ho ako /usr/local/bin/lynis a v menu ponúka audit, aktualizáciu, preinštalovanie a odinštalovanie. Audítor iba číta a vytvára správy bez zmeny systému.",
"section": "Zabezpečenie"
},
"intro": {
"title": "Čo to robí?",
"body": "Nainštaluje Lynis, bezpečnostný audítor s otvoreným zdrojovým kódom od CISOfy, z jeho repozitára GitHub do <code>/opt/lynis</code> a vytvorí spúšťací skript <code>/usr/local/bin/lynis</code>, aby bol dostupný cez <code>PATH</code>. Ak rozpozná existujúcu inštaláciu, zobrazí menu auditu, aktualizácie, preinštalovania alebo odstránenia."
},
"manageMenu": {
"heading": "Menu správy (po inštalácii)",
"intro": "Keď je Lynis nainštalovaný, každé následné vyvolanie otvorí menu správy namiesto opätovného spustenia inštalátora. Odtiaľ spustíte audit, aktualizáciu prostredníctvom git pull, preinštalovať alebo odinštalovať:",
"imageAlt": "Lynis management menu s auditom, aktualizácia, preinštalovať a odstrániť možnosti"
},
"whyUpstream": {
"heading": "Prečo pôvodný repozitár GitHub namiesto apt",
"intro": "Debian poskytuje Lynis cez apt, ale balík zvyčajne zaostáva o viacero hlavných verzií. Nové kontroly, opravy nových vektorov útoku a vylepšené odporúčania prichádzajú najprv na GitHub. Lynis je samostatný shellový skript bez kompilácie a inštalačných závislostí okrem <code>git</code>; klonovanie repozitára je preto metóda odporúčaná CISOfy.",
"headerSource": "Zdroj",
"headerPath": "Install path",
"headerUpdate": "Spôsob aktualizácie",
"headerFresh": "Aktuálnosť verzie",
"rows": [
{
"sourceRich": "<strong>ProxMenux (tento skript)</strong>",
"path": "/opt/lynis/",
"update": "git pull (v menu)",
"fresh": "Najnovšia verzia pôvodného projektu"
},
{
"sourceRich": "<strong>Debian apt</strong>",
"path": "/usr/bin/lynis",
"update": "apt upgrade",
"fresh": "Často mesiace / roky pozadu"
}
]
},
"install": {
"heading": "Ako funguje inštalácia",
"node1Label": "github.com/CISOfy/lynis",
"node1Detail": "git clone\n(najprv nainštaluje git, ak chýba)",
"node2Label": "/opt/lynis/",
"node2Detail": "celý repozitár\nvrátane skriptu ./lynis",
"node3Label": "/usr/local/bin/lynis",
"node3Detail": "obal:\ncd /opt/lynis && ./lynis $@",
"outro": "Balíčk je povinný – Lynis trvá na tom, aby bol spustený z vlastného adresára, pretože načítava relatívne cesty pre zásuvné moduly a údaje profilu. Obal tento detail skrýva, takže <code>lynis audit system</code> jednoducho funguje odkiaľkoľvek."
},
"detection": {
"heading": "Zisťovacie cesty",
"intro": "Pred zobrazením menu skript kontroluje tri miesta, aby rozhodol, či je Lynis už prítomný:",
"items": [
"<code>/usr/local/bin/lynis</code> Wrapper nainštalovaný ProxMenux",
"<code>/opt/lynis/lynis</code> — priama cesta, ak bol spúšťací skript odstránený",
"<code>/usr/bin/lynis</code> — verzia nainštalovaná cez apt, ak ju používateľ nainštaloval týmto spôsobom"
],
"outro": "Ak sa nájde niektorá z ciest, otvorí sa menu správy. Skript <strong>neodinštaluje</strong> Lynis nainštalovaný cez apt; odstráni iba vlastnú inštaláciu v <code>/opt/lynis</code> a jej spúšťací skript."
},
"audit": {
"heading": "Spustiť audit",
"intro": "V menu správy vyberte <strong>Spustiť bezpečnostný audit teraz</strong>. Zodpovedá to spusteniu:",
"code": "lynis audit system --no-colors",
"outro": "Audit trvá od 30 sekúnd do niekoľkých minút podľa veľkosti hostiteľa. Výstup ide priamo do terminálu bez animácie čakania. Lynis člení kontroly podľa kategórií a každý test označí ako <ok>[ OK ]</ok>, <warn>[ WARNING ]</warn> alebo <sugg>[ SUGGESTION ]</sugg>. Záverečné zhrnutie ukazuje hlavné údaje:",
"summary": "================================================================================\n\n Lynis security scan details:\n\n Hardening index : 76 [############ ]\n Tests performed : 247\n Plugins enabled : 0\n\n Components:\n - Firewall [V]\n - Malware scanner [X]\n\n Lynis modules:\n - Compliance status [?]\n - Security audit [V]\n - Vulnerability scan [V]\n\n================================================================================"
},
"report": {
"heading": "Čítanie správy",
"intro": "Dve dôležité časti sú <strong>Upozornenia</strong> (veci, ktoré by ste mali čoskoro opraviť) a <strong>Návrhy</strong> (odporúčania na zlepšenie vytvrdzovania). Každá položka nesie kontrolné ID ako <code>SSH-7408</code> – užitočné pri hľadaní zdôvodnenia a opravy v dokumentoch Lynis.",
"headerMarker": "Značka",
"headerMeaning": "Význam",
"headerAction": "Akcia",
"rows": [
{
"markerRich": "<strong>OK</strong>",
"meaning": "Skúška prešla",
"action": "Nič."
},
{
"markerRich": "<strong>WARNING</strong>",
"meaning": "Skutočný problém; odporúčaná oprava",
"action": "Prečítajte si kontrolný popis, naplánujte opravu"
},
{
"markerRich": "<strong>SUGGESTION</strong>",
"meaning": "Možné zlepšenie zabezpečenia",
"action": "Aplikujte, ak vyhovuje vášmu modelu hrozby"
}
],
"outro": "Kompletná správa a strojovo čitateľné údaje sú napísané <code>/var/log/lynis.log</code> a <code>/var/log/lynis-report.dat</code> samotným Lynisom."
},
"pairFail2ban": {
"title": "Používajte spolu s Fail2Ban",
"body": "SSH-7408 (MaxAuthTries) je jedným z najčastejších varovaní. Inštalácia <link>Fail2Ban</link> od ProxMenux automaticky ho vymaže, pretože inštalátor nastaví <code>MaxAuthTries=3</code> ako súčasť SSH tvrdnúci krok. Spustite znova Lynis potom potvrdiť, že varovanie je preč."
},
"update": {
"heading": "Aktualizácia Lynis",
"body": "V menu možnosť <strong>Aktualizovať Lynis na najnovšiu verziu</strong> spustí <code>git pull --quiet</code> v <code>/opt/lynis</code>. Ak adresár existuje, ale nie je pracovnou kópiou Git, napríklad po ručnom kopírovaní súborov, skript vykoná úplnú preinštaláciu."
},
"reinstall": {
"heading": "Preinštalovať/odinštalovať",
"headerAction": "Akcia",
"headerWhat": "Čo to robí?",
"rows": [
{
"actionRich": "<strong>Preinštalovať</strong>",
"whatRich": "Odstráni <code>/opt/lynis</code>, znova klonuje z GitHubu a vytvorí spúšťací skript. Použite pri poškodenej miestnej pracovnej kópii."
},
{
"actionRich": "<strong>Odstrániť</strong>",
"whatRich": "Odstráni <code>/opt/lynis</code> a <code>/usr/local/bin/lynis</code>. Záznamy na <code>/var/log/lynis*</code> sú vedené (sú audit histórie). Apt-inštalovaný Lynis na <code>/usr/bin/lynis</code> zostáva nedotknutý."
}
]
},
"cli": {
"heading": "Užitočné možnosti CLI",
"intro": "Po nainštalovaní sa Lynis môže použiť priamo z shellu s extra možnosťami, ktoré nie sú vystavené menu:",
"code": "lynis show version # version + build date\nlynis show commands # list every available command\nlynis show details TEST-ID # explain a specific control\nlynis audit system --quick # skip slow tests (e.g. malware scan)\nlynis audit system --pentest # treat host as untrusted (more aggressive)\nlynis update info # check if a newer Lynis is available\n\n# Filter the report log for just the warnings\ngrep \"Warning\" /var/log/lynis.log\n\n# Same, for suggestions only\ngrep \"Suggestion\" /var/log/lynis.log"
},
"troubleshoot": {
"heading": "Riešenie problémov",
"cloneTitle": "git clone počas inštalácie zlyhá",
"cloneBody": "Hostiteľ potrebuje prístup k sieti a DNS dosiahnuť <code>github.com</code>. Z konzoly: <code>curl -sI https://github.com</code> a <code>git ls-remote https://github.com/CISOfy/lynis.git</code> odhalí skutočnú chybu (DNS, TLS, proxy, repo URL). Ak sa vyžaduje proxy, nastavte <code>https_proxy</code> v prostredí pred opätovným spustením menu.",
"notFoundTitle": "lynis: príkaz nenájdený po inštalácii",
"notFoundIntro": "Obal na <code>/usr/local/bin/lynis</code> buď nebol vytvorený, alebo bol odstránený. Najrýchlejšia oprava: preinštalovať z menu. Ručné nastavenie:",
"notFoundCode": "cat > /usr/local/bin/lynis <<'EOF'\n#!/bin/bash\ncd /opt/lynis && ./lynis \"$@\"\nEOF\nchmod +x /usr/local/bin/lynis",
"sshTitle": "Audit zobrazuje \"Warning: Test SSH-7408 — MaxAuthTries set incorrectly\"",
"sshIntro": "Démon SSH umožňuje príliš veľa auth pokusov na pripojenie. Buď nainštalujte <link>Fail2Ban</link> z ProxMenux (ktorý nastaví <code>MaxAuthTries=3</code>), alebo editujte <code>/etc/ssh/sshd_config</code> ručne:",
"sshCode": "sed -i 's/^#?MaxAuthTries.*/MaxAuthTries 3/' /etc/ssh/sshd_config\nsystemctl reload sshd",
"scoreTitle": "Skóre klesol po upgrade Proxmox",
"scoreBody": "Najprv spustite <code>lynis update info</code>; aktualizácia Lynis mohla pridať kontroly, ktoré upozorňujú na existujúcu konfiguráciu. Aktualizujte Lynis z menu, zopakujte audit a riešte nové zistenia."
},
"files": {
"heading": "Súbory napísané",
"code": "/opt/lynis/ # full Lynis git checkout\n/usr/local/bin/lynis # wrapper script (cd + exec)\n/var/log/lynis.log # human-readable audit log (Lynis itself)\n/var/log/lynis-report.dat # machine-readable report (Lynis itself)"
},
"sample": {
"heading": "Ukážková správa",
"intro": "ProxMenux Monitor vytvorí pre každé spustenie Lynis viacstranové PDF dostupné na <link>karte Zabezpečenie</link>. Prvá strana obsahuje skóre zabezpečenia, údaje o systéme a prehľad bezpečnostného stavu. Ďalšie strany vysvetľujú každé upozornenie, zoradia návrhy podľa vplyvu a uvedú inventár balíkov použitý pri audite.",
"imageAlt": "Prvá strana PDF bezpečnostného auditu Lynis: zhrnutie so skóre zabezpečenia 71/100, systémovými informáciami a prehľadom firewallu, skenera škodlivého softvéru a počtu nainštalovaných balíkov",
"captionPrefix": "Prvá strana ukážkovej správy. Úplné PDF (",
"captionLink": "vzorka",
"captionSuffix": ") pokračuje podrobnými upozorneniami, návrhmi a zoznamom nainštalovaných balíkov.",
"cli": "Rovnaké údaje sú v CLI v súbore <code>/var/log/lynis-report.dat</code> (strojovo čitateľný textový súbor) a <code>/var/log/lynis.log</code> (čitateľný denník spustenia). PDF vytvára na požiadanie ProxMenux Monitor; spustenie <code>lynis</code> z príkazového riadka PDF nevytvorí."
},
"related": {
"heading": "Súvisiace",
"items": [
{
"href": "/docs/monitor/dashboard/security",
"label": "ProxMenux Monitor → Bezpečnostná karta",
"tail": "— spustite audit, prezerajte historické správy a stiahnite si PDF priamo z hlavného panela."
},
{
"href": "/docs/security/fail2ban",
"label": "Fail2Ban",
"tailRich": " — zavádza ochranu SSH pred hrubou silou, ktorú odporúča Lynis."
},
{
"href": "/docs/security",
"label": "Prehľad bezpečnosti",
"tail": " — Späť na prehľad sekcie."
}
]
}
}
@@ -0,0 +1,169 @@
{
"meta": {
"title": "HTTPS pre ProxMenux Monitor — certifikát hostiteľa Proxmox alebo vlastné cesty | ProxMenux",
"description": "Sprístupnite ProxMenux Monitor cez HTTPS s automaticky rozpoznaným certifikátom hostiteľa Proxmox vrátane Let’s Encrypt nainštalovaného cez ACME Proxmox, alebo s vlastným certifikátom na ľubovoľnej ceste na disku.",
"ogTitle": "HTTPS pre ProxMenux Monitor — certifikát hostiteľa Proxmox alebo vlastný certifikát",
"ogDescription": "Povoľte HTTPS na porte 8008 s certifikátom hostiteľa Proxmox alebo vlastnou dvojicou .pem / .key."
},
"header": {
"title": "HTTPS pre ProxMenux Monitor",
"description": "Zapnite HTTPS pre Monitor na porte 8008 s automaticky rozpoznaným certifikátom hostiteľa Proxmox alebo vlastným certifikátom na disku. Možnosť Proxmox uprednostní certifikát ACME, ak existuje, a znovu použije Let’s Encrypt spravovaný Proxmoxom bez ďalšej úlohy obnovy.",
"section": "Zabezpečenie"
},
"intro": {
"title": "Čo táto stránka obsahuje",
"body": "Ako prepnúť Monitor z HTTP na HTTPS v paneli Nastavenia → Zabezpečenie, na aké súbory ukazujú zdroje certifikátov, ako sa správa možnosť Proxmox s certifikátom Let’s Encrypt a ako nastaviť vlastné cesty pri správe certifikátov mimo Proxmox."
},
"wheresetting": {
"heading": "Kde nájdete nastavenie",
"body": "Otvorte Monitor a prejdite na <strong>Nastavenia → Zabezpečenie → HTTPS / SSL</strong>. Panel zobrazuje HTTP alebo HTTPS a pri vypnutom HTTPS rozpoznané zdroje certifikátov.",
"imageAlt": "Nastavenia → Zabezpečenie → HTTPS / panel SSL na monitore zobrazujúci vypnutý stav HTTPS, automaticky zistený certifikát Proxmox (predmet, vydavateľ, expirácia) a možnosť Použiť vlastný certifikát",
"caption": "Panel Nastavenia → Zabezpečenie → HTTPS / SSL pred aktiváciou. Monitor zobrazí certifikát používaný Proxmoxom a umožní ho vybrať jedným kliknutím."
},
"twoways": {
"heading": "Dva spôsoby, ako umožniť HTTPS",
"proxmox": {
"title": "Použiť Proxmox certifikát",
"summary": "Jedno kliknutie: Monitor použije certifikát, ktorý Proxmox VE poskytuje na porte 8006.",
"items": [
"Automaticky rozpoznané, bez zadávania ciest",
"Uprednostní certifikát ACME, ak existuje; inak použije predvolený certifikát s vlastným podpisom",
"Proxmox spravuje obnovu; Monitor overí a načíta certifikát pri nasledujúcom novom spojení TLS"
]
},
"custom": {
"title": "Použiť vlastný certifikát",
"summaryRich": "Nastavte Monitor tak, aby používal dvojicu <code>.pem</code> / <code>.key</code> uloženú kdekoľvek na disku.",
"items": [
"Iba absolútne cesty (proces monitora musí byť schopný čítať oboje)",
"Užitočné pre certifikáty z <code>certbot</code>, <code>acme.sh</code> alebo wildcard certifikáty",
"Obnovu spravujete vy: po zmene súborov reštartujte Monitor"
]
}
},
"proxmoxCert": {
"heading": "Certifikát Proxmox — na čo skutočne ukazuje",
"intro": "Proxmox VE uchováva dva páry certifikátov v <code>/etc/pve/local/</code>:",
"table": {
"headers": {
"file": "Súbor",
"origin": "Pôvod",
"when": "Keď ho Monitor používa"
},
"rows": [
{
"fileRich": "<code>pveproxy-ssl.pem</code><br /><code>pveproxy-ssl.key</code>",
"originRich": "Vlastný certifikát nahraný cez rozhranie Proxmox vrátane certifikátu Let’s Encrypt vydaného cez <em>Datacenter → Node → Certificates → ACME</em>.",
"when": "Uprednostní sa, ak existujú oba súbory; Monitor použije certifikát poskytovaný Proxmoxom."
},
{
"fileRich": "<code>pve-ssl.pem</code><br /><code>pve-ssl.key</code>",
"originRich": "Samopodpísaný certifikát vytvorený v čase inštalácie spoločnosťou Proxmox PKI.",
"whenRich": "Náhradný certifikát, ak <code>pveproxy-ssl.pem</code> neexistuje."
}
]
},
"callout": {
"title": "Rovnaká priorita ako samotný Proxmox",
"bodyRich": "<code>pveproxy</code> používa rovnaké pravidlo výberu. Pri možnosti Proxmox Monitor použije certifikát webového rozhrania Proxmox na porte 8006 bez kopírovania a samostatného procesu obnovy."
}
},
"letsencrypt": {
"heading": "Získanie certifikátu Let's Encrypt cez Proxmox ACME",
"intro": "Proxmox VE obsahuje vlastného klienta ACME. <em>„Order Certificate Now“</em> uloží výsledok do <code>/etc/pve/local/pveproxy-ssl.pem</code>, ktorý Monitor číta. Nasledujúcich päť krokov zhŕňa <extlink1>oficiálnu príručku Proxmox</extlink1> do potrebných príkazov.",
"prereqs": {
"title": "Predpoklady",
"items": [
"Uzol má skutočný názov DNS (nielen IP) ukazuje na to.",
"<strong>Buď</strong> port 80 dostupný z internetu (overenie HTTP-01, najjednoduchšie), <strong>alebo</strong> poskytovateľ DNS s prihlasovacími údajmi API (DNS-01, funguje za NAT a podporuje wildcard certifikáty).",
"E-mailová adresa pre účet ACME."
]
},
"step1": {
"heading": "Krok 1 — Zaregistrujte účet ACME",
"introRich": "Nahraďte e-mail vlastnou adresou. Názov účtu <code>default</code> je iba označenie; môžete použiť ľubovoľný reťazec.",
"code": "pvenode acme account register default you@example.com",
"afterRich": "Proxmox vyžiada súhlas s podmienkami služby Let’s Encrypt. Potom uloží účet do <code>/etc/pve/priv/acme/</code> a zobrazí ho na karte ACME v grafickom rozhraní."
},
"step2": {
"heading": "Krok 2 — Vyberte typ overenia",
"http01Rich": "<strong>HTTP-01</strong> je najjednoduchší: je zabudovaný, bez ďalšieho pluginu. Let's Encrypt sa pripája k <code>http://&lt;your-host&gt;/.well-known/acme-challenge/...</code> na porte 80, takže port 80 musí byť otvorený z verejného internetu do vášho uzla – zvyčajne port forward na vašom smerovači.",
"dns01Rich": "<strong>DNS-01</strong> funguje bez sprístupnenia portu 80, takže je vhodné pre domáce laby za CG-NAT, a je jedinou možnosťou pre wildcard certifikáty. Jednorazovo pridajte DNS doplnok s tokenom API poskytovateľa. Príklad pre Cloudflare:",
"code": "pvenode acme plugin add dns cf \\\n --api cloudflare \\\n --data CF_Token=YOUR_CLOUDFLARE_API_TOKEN",
"outroRich": "Pre iných poskytovateľov (Gandi, OVH, AWS Route 53 atď.) použite <code>pvenode acme plugin add dns --help</code>. Proxmox obsahuje <extlink2>všetky DNS doplnky acme.sh</extlink2>."
},
"step3": {
"heading": "Krok 3 — Priraďte doménu k uzlu",
"http01Rich": "Pre HTTP-01 (používa vstavaný <code>standalone</code> modul):",
"code1": "pvenode config set --acme domains=host.example.com,account=default",
"dns01": "Pre DNS-01 s plugin Cloudflare zo Step 2:",
"code2": "pvenode config set --acmedomain0 domain=host.example.com,plugin=cf\npvenode config set --acme account=default",
"wildcardRich": "Wildcard? Pridať <code>domain=*.example.com</code> na samostatnú položku <code>--acmedomainN</code>. Wildcards vyžadujú DNS-01."
},
"step4": {
"heading": "Krok 4 — Vyžiadajte certifikát",
"code": "pvenode acme cert order",
"afterRich": "Prvý beh zvyčajne trvá 30–60 sekundy, kým sa výzva šíri. O úspechu Proxmox píše <code>/etc/pve/local/pveproxy-ssl.pem</code> + <code>.key</code>, reštartuje <code>pveproxy</code>, a obnovenie cron je naplánované automaticky (Let's Encrypt Certs sú platné 90 dní; Proxmox obnovuje pri 60)."
},
"step5": {
"heading": "Krok 5 — Overte vydavateľa",
"code": "openssl x509 -in /etc/pve/local/pveproxy-ssl.pem -noout -issuer",
"afterRich": "Výstup má obsahovať vydavateľa začínajúceho <code>O = Let's Encrypt</code>. Ak uvádza <code>CN = Proxmox Virtual Environment</code>, požiadavka zlyhala a súbor je stále certifikát PVE s vlastným podpisom. Príčinu zistíte opätovným spustením <code>pvenode acme cert order --debug 1</code>."
},
"gui": {
"title": "Preferujete GUI? Rovnakých päť krokov",
"bodyRich": "<em>Datacenter → ACME</em> zaregistruje účet; <em>Datacenter → ACME → Plugins</em> pridá DNS doplnok; <em>Node → Certificates → ACME</em> priradí doménu; <em>Order Certificates Now</em> vykoná krok 4. Uvedené príkazy CLI sú vhodné na skriptovanie a systémy bez grafického rozhrania."
}
},
"switchToHttps": {
"heading": "Prepnúť monitor na HTTPS",
"bodyRich": "Keď je <code>/etc/pve/local/pveproxy-ssl.pem</code> podpísaný Let's Encrypt, otvorte <strong>Nastavenia → Zabezpečenie → HTTPS / SSL</strong>, overte vydavateľa <em>Let's Encrypt</em> namiesto miestnej CA Proxmox a kliknite na <strong>Použiť certifikát Proxmox</strong>. Monitor sa reštartuje a ďalšie načítanie použije HTTPS na 8008 s verejne dôveryhodným reťazcom. Ďalšie obnovy ACME sa overia a vyberú pri nasledujúcom novom spojení TLS bez pravidelného dopytovania alebo reštartu služby pri obnove. <strong>Aktualizovať certifikát</strong> zostáva v Zabezpečení dostupné na diagnostiku a obnovu."
},
"custom": {
"heading": "Vlastný certifikát — kedy ho použiť",
"intro": "Kliknite na <strong>Použiť vlastný certifikát</strong> a zadajte dve absolútne cesty:",
"items": [
"<strong>Osvedčenie</strong> Celý reťazec v PEM (<code>.pem</code> alebo <code>.crt</code>).",
"<strong>Súkromný kľúč</strong>: zodpovedajúci kľúč vo formáte PEM (<code>.key</code>)."
],
"outro": "Oba súbory načíta proces Monitora pri štarte. Musia zostať čitateľné pre používateľa, pod ktorým beží jednotka systemd (predvolene root). Bežné umiestnenia pri správe ACME mimo Proxmox:",
"code": "# certbot\n/etc/letsencrypt/live/<your-host>/fullchain.pem\n/etc/letsencrypt/live/<your-host>/privkey.pem\n\n# acme.sh\n~/.acme.sh/<your-host>_ecc/fullchain.cer\n~/.acme.sh/<your-host>_ecc/<your-host>.key",
"symlinkCallout": {
"title": "Symlink ciele vs. súbory",
"bodyRich": "<code>certbot</code> ukladá skutočné súbory do <code>/etc/letsencrypt/archive/</code> a cesta <code>live/</code> je symbolický odkaz. Nasmerujte monitor na symbolický odkaz <code>live/</code>, nie na súbor <code>archive/</code> – takto každý cyklus obnovy jednoducho prepíše cieľ symbolického odkazu a monitor si pri ďalšom spustení služby vyberie nový certifikát."
}
},
"afterHttps": {
"heading": "Po umožnení HTTPS",
"bodyRich": "Uloženie zmeny zapíše <code>/etc/proxmenux/ssl_config.json</code> a reštartuje jednotku systemd <code>proxmenux-monitor</code>. Karta prehliadača stratí spojenie; načítajte ju znova na <code>https://&lt;host&gt;:8008/</code>. Certifikát Let’s Encrypt by nemal vyvolať upozornenie; pri certifikáte Proxmox s vlastným podpisom bude prehliadač vyžadovať výnimku, rovnako ako na porte 8006.",
"reverse": {
"heading": "Reverzné proxy a webhooky",
"bodyRich": "Pri prepnutí Monitora na HTTPS sa adresy webhookov Proxmox VE pre oznámenia automaticky zmenia z <code>http://</code> na <code>https://</code>. Existujúce záznamy sa prepíšu pri ďalšom uložení alebo opätovnom rozpoznaní pravidla oznámení; ručná úprava konfigurácie oznámení Proxmox nie je potrebná."
}
},
"trustCa": {
"heading": "Dôverujte samopodpísanej CA spoločnosti Proxmox",
"intro1Rich": "Ak chcete zachovať predvolený certifikát Proxmox bez ACME, importujte koreňovú CA klastra do úložiska dôveryhodných certifikátov systému alebo prehliadača. Monitor rozpozná <code>/etc/pve/local/pve-ssl.pem</code> ako náhradný certifikát. Klient tak dôveruje vydavateľovi; URL musí stále zodpovedať názvu v certifikáte.",
"intro2Rich": "CA súbor žije v <code>/etc/pve/pve-root-ca.pem</code> na každom uzle. V klastri cesta je na zdieľanom <code>pmxcfs</code> súborovom systéme, takže všetky uzly zdieľajú rovnaký koreň a jeden import pokrýva celý dátový stred. Skopírujte ho do svojho stroja:",
"code": "scp root@<your-host>:/etc/pve/pve-root-ca.pem ./pve-root-ca.pem",
"thenImport": "Potom ho importovať na strane klienta:",
"items": [
"<strong>Linux (celý systém):</strong> spustite <code>sudo cp pve-root-ca.pem /usr/local/share/ca-certificates/pve-root-ca.crt</code> a potom <code>sudo update-ca-certificates</code>. Prehliadače používajúce systémové úložisko certifikátov (Chromium, Edge) rozpoznajú CA po reštarte; Firefox má vlastné úložisko a potrebuje ručný import uvedený nižšie.",
"<strong>macOS:</strong> dvojklikom otvorte súbor <code>.pem</code> v Keychain Access, pridajte ho do kľúčenky <em>System</em> a nastavte <em>Trust → Always Trust</em>.",
"<strong>Windows:</strong> kliknite pravým tlačidlom na súbor → <em>Inštalovať certifikát</em> → uložte ho do <em>Dôveryhodné koreňové certifikačné autority</em>.",
"<strong>Firefox (ľubovoľný OS):</strong> <em>Nastavenia → Súkromie a bezpečnosť → Certifikáty → Zobraziť certifikáty → Autority → Importovať</em>; vyberte <em>Dôverovať tejto CA pri identifikácii webových stránok</em>."
],
"standalone": {
"title": "Samostatné uzly mimo klastra",
"bodyRich": "Každý non-clustered Proxmox hostiteľ má svoje vlastné <code>pve-root-ca.pem</code>. Ak spravujete niekoľko samostatných hostiteľov, opakujte kópiu/dovoz pre každého, alebo sa pripojte k klastru, takže zdieľajú jeden koreň."
}
},
"disable": {
"heading": "Zastavenie HTTPS",
"bodyRich": "Kliknite na <strong>Vypnúť HTTPS</strong> v rovnakom paneli. Monitor sa reštartuje s nešifrovaným HTTP, čo pomôže pri nečitateľnom vlastnom certifikáte brániacom štartu služby. Samostatné odinštalovanie nie je potrebné a súbory certifikátov sa nemenia.",
"stateCallout": {
"title": "Kde sa ukladá stav",
"bodyRich": "<code>/etc/proxmenux/ssl_config.json</code> ukladá aktívne cesty k certifikátom a zdroj (<code>none</code>, <code>proxmox</code>, <code>custom</code>). Odstránenie súboru zodpovedá vypnutiu HTTPS; pri ďalšom štarte Monitor použije HTTP."
}
}
}