{ "meta": { "title": "Oznámenia Proxmox — Telegram, Discord, e-mail, Gotify, Pushover, Apprise | ProxMenux Monitor", "description": "Posielajte oznámenia Proxmox VE do Telegram, Discord, e-mailu, Gotify, Pushover a približne 80 služieb cez Apprise. Udalosti z monitora zdravia, denníkov a webhooku PVE spracuje deduplikácia, interval opakovania, zoskupovanie, voliteľná AI a história.", "ogTitle": "Oznámenia Proxmox — Telegram, Discord, e-mail, Gotify, Pushover, Apprise", "ogDescription": "Upozornenia Proxmox do Telegram, Discord, e-mailu, Gotify, Pushover a približne 80 služieb cez Apprise, s deduplikáciou, intervalmi opakovania, zoskupovaním a voliteľnou AI.", "twitterTitle": "Oznámenia Proxmox | ProxMenux Monitor", "twitterDescription": "Upozornenia Proxmox VE do Telegram, Discord, e-mailu, Gotify, Pushover a približne 80 služieb cez Apprise." }, "header": { "title": "Oznámenia", "description": "Rozosiela udalosti zdrojov Monitora do Telegram, Discord, e-mailu, Gotify, Pushover a približne 80 služieb cez Apprise. Obsahuje deduplikáciu, intervaly opakovania, zoskupovanie, filtre udalostí a kanálov, voliteľnú AI a prehľadnú históriu.", "section": "ProxMenux Monitor" }, "intro": { "title": "Odkiaľ pochádzajú správy", "body": "Oznámenia spracúvajú výstup existujúcich zdrojov: Monitor zdravia, sledovanie denníka a úloh Proxmox, webhook PVE, pravidelné zisťovanie a priame udalosti skriptov. Každá udalosť prechádza rovnakým odosielacím postupom." }, "howItWorks": { "heading": "Ako to funguje", "intro": "Zdroje vytvárajú štruktúrované udalosti. Spracovanie rozhodne o odoslaní a formáte, voliteľná AI upraví text a výsledok sa doručí nastaveným kanálom.", "arrowLabel": "udalosť", "caption": "Prehľad postupu. Každý skutočný úspešný, zoskupený či neúspešný pokus o odoslanie sa zaznamená v SQLite. Udalosti potlačené intervalom opakovania sa nezapisujú.", "nodes": { "sourcesLabel": "Zdroje", "sourcesDetail": "Monitor zdravia\nSledovanie denníka\nSledovanie úloh\nWebhook PVE\nPravidelné zisťovanie\nInterné zdroje", "dispatchLabel": "Postup odosielania", "dispatchDetail": "Zoskupovanie nárazových udalostí\nKontrola odtlačku / intervalu\nLimity skupín\nOvládanie jednotlivých kanálov", "aiLabel": "Prepis pomocou AI (voliteľné)", "aiDetail": "OpenAI / Anthropic\nGemini / Groq\nOpenRouter / Ollama\n(predvolene vypnuté)", "channelsLabel": "Kanály", "channelsDetail": "Telegram\nDiscord\nE-mail (SMTP)\nGotify\nPushover\nApprise (približne 80 služieb)" } }, "enabling": { "heading": "Zapnutie oznámení", "intro": "Po novej inštalácii karta Oznámenia zobrazuje Vypnuté a tlačidlo Zapnúť oznámenia. Pred kliknutím sa nič neodosiela ani nemení konfigurácia PVE.", "disabledAlt": "Úvodná karta oznámení so stavom Vypnuté a tlačidlom Zapnúť oznámenia", "disabledCaption": "Úvodný stav — zapnutie jedným kliknutím.", "stepsIntro": "Stlačením tlačidla urobíte tri veci v poradí:", "steps": [ "Prepne stav na Aktívne a zobrazí formulár kanálov.", "Zaregistruje webhook v /etc/pve/notifications.cfg. Bez HTTPS používa POST http://127.0.0.1:8008/api/notifications/webhook; s HTTPS lokálny HTTP prijímač na porte 8009. Oznámenia PVE vstúpia do spracovania Monitora. Pozrite Integrácia webhooku PVE.", "Spustí odosielacie vlákno na pozadí, ktoré číta front udalostí a spracúva každú udalosť." ], "activeAlt": "Aktívna karta oznámení s kanálmi, zobrazovaným názvom a rozbaľovacími nastaveniami AI", "activeCaption": "Aktívny stav: kanály Telegram / Gotify / Discord / e-mail / Pushover / Apprise, zobrazovaný názov, kategórie kanála a časť Pokročilé: Vylepšenie pomocou AI." }, "sources": { "heading": "Zdroje udalostí", "intro": "Šesť typov zdrojov zahŕňa zberače na pozadí, webhookový prijímač a interné zdroje. Vytvárajú štruktúrované objekty NotificationEvent.", "headerCollector": "Zberač údajov", "headerWatches": "Čo sleduje", "headerEvents": "Typické udalosti", "rows": [ { "collector": "Monitor zdravia", "watches": "Desať kategórií, približne každých 5 minút", "events": "new_error, error_resolved, error_escalated, health_degraded, health_persistent." }, { "collector": "Sledovanie systémového denníka", "watches": "journalctl --follow s rozpoznávaním zlyhaní SSH/webu, blokovaní Fail2Ban pri nainštalovanom jaili, chýb I/O jadra, OOM a udalostí smartd.", "events": "auth_fail, ip_block, oom_kill, disk_io_error, service_fail." }, { "collector": "Sledovanie úloh", "watches": "Sleduje /var/log/pve/tasks/index pre nové UPID úloh a ich jednotlivé denníky.", "events": "backup_start, backup_complete, backup_warning, backup_fail, migration_*, snapshot_complete." }, { "collector": "Prijímač webhooku Proxmox", "watches": "Prijíma POST /api/notifications/webhook. Verzie PVE s podporou cieľov webhook môžu po nastavení posielať oznámenia sem; pozrite nižšie.", "events": "Oznámenia PVE vrátane HA, replikácie a vzdump z rozhrania, ktoré by Monitor inak nemusel zachytiť." }, { "collector": "Pravidelné zisťovanie", "watches": "Pravidelne porovnáva dostupnosť uzlov klastra, platnosť certifikátov, GPU passthrough a dostupné aktualizácie PVE/ProxMenux.", "events": "node_disconnect, node_reconnect, pve_update, proxmenux_update, gpu_mode_switch, pci_passthrough_conflict." }, { "collector": "Interné zdroje udalostí", "watches": "Priame volania skriptov ProxMenux a samotného Monitora (notification_manager.emit_event(...)).", "events": "system_startup, system_shutdown, system_reboot, ai_model_migrated, vlastné testovacie udalosti." } ], "after1": "Udalosť nesie event_type, závažnosť severity (INFO, WARNING, CRITICAL), kategóriu category pre ikony a filtre a údaje data pre šablónu (vmid, device, source_ip, reason…).", "after2": "Pre každý event_type vytvorí šablóna v notification_templates.py text správy. Ten prechádza odosielaním a voliteľnou úpravou AI. Súvislosti vysvetľuje stránka Asistent AI." }, "channels": { "heading": "Nastavenie kanálov", "intro": "Podporovaných je šesť kanálov: Telegram, Discord, Gotify, e-mail SMTP, Pushover a Apprise. Prvých päť má vlastné polia. Apprise pridáva približne 80 služieb cez URL, napríklad ntfy, Matrix, Slack, Teams, Pushbullet, AWS SNS a Mattermost. Postupy sú nižšie.", "credsTitle": "Uloženie prihlasovacích údajov", "credsBody": "Tokeny, kľúče, URL webhookov a heslá SMTP sú v miestnej databáze SQLite pod /usr/local/share/proxmenux/. Citlivé hodnoty sú chránené a v rozhraní maskované; odosielajú sa len príslušným službám. Záloha celého adresára umožní obnoviť kanály." }, "telegram": { "heading": "Telegram", "intro": "Potrebujete token robota, použiteľný vo viacerých chatoch, a ID chatu pre súkromný chat, skupinu alebo tému superskupiny. Integrovaný návod opisuje nastavenie; tu sú aj oba formáty ID.", "guideAlt": "Návod Telegram so štyrmi časťami: BotFather, token, ID chatu a skupiny alebo kanály", "guideCaption": "Odkaz + návod na nastavenie otvorí štyri kroky na vytvorenie robota a nastavenie kanála približne za dve minúty.", "step1Title": "1 · Vytvorte robota cez BotFather", "step1Items": [ "Otvorte Telegram a začnite četovať s @BotFather (s modrým overovacím začiarknutím – kópie sú bežné).", "Pošlite /newbot.", "Vyberte zobrazovaný názov (napr. ProxMenux Lab). Môže sa zmeniť neskôr.", "Vyberte jedinečné meno na Telegrame končiace na bot, napríklad proxmenux_lab_bot.", "BotFather vráti token v tvare 123456789:ABCdef…. Je to token robota; chráňte ho ako heslo." ], "step2Title": "2 · Získajte ID rozhovoru", "step2Intro": "ID chatu identifikuje kde robot prispieva. V závislosti od cieľa má jeden z dvoch tvarov.", "privateLabel": "Súkromný chat (prijímate upozornenia na svoj vlastný účet):", "privateItems": [ "Začnite chatovať so svojím novým robotom a pošlite akúkoľvek správu (napr. /start).", "Otvorte chat s @userinfobot alebo @myidbot a pošlite /start. Kladné číselné ID používateľa v odpovedi je vaše ID súkromného chatu." ], "privateAlt": "Formulár Telegram s maskovaným tokenom, kladným ID súkromného chatu a prázdnym voliteľným ID témy", "privateCaption": "Súkromný chat s robotom — ID chatu je vaše kladné používateľské ID.", "groupLabel": "Skupina alebo superskupina s témami:", "groupItems": [ "Pridajte robota do skupiny; ak to vyžadujú oprávnenia, nastavte ho ako správcu.", "Pošlite správu do skupiny.", "Otvorte https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates. V odpovedi JSON nájdite chat.id: skupiny majú záporné ID, superskupiny začínajú na -100.", "Pri superskupine so zapnutými Témami zadajte požadovaný message_thread_id do voliteľného poľa ID témy." ], "groupAlt": "Formulár Telegram s maskovaným tokenom, záporným ID superskupiny začínajúcim na -100 a ID témy 3", "groupCaption": "Superskupina — ID začína na -100… a voliteľné ID témy vyberá konkrétne vlákno.", "step3Title": "3 · Uložte a otestujte", "step3Body": "Vložte token a ID chatu, uložte a vyberte Odoslať test. Správa má prísť do sekundy. Pri chybe História uvedie dôvod, napríklad neplatný token, chýbajúce členstvo v skupine alebo blokovanie používateľom." }, "discord": { "heading": "Discord", "intro": "Discord prijíma správy cez URL webhooku priradenú ku kanálu. Monitor potrebuje túto URL.", "items": [ "V Discord otvorte Nastavenia servera → Integrácie → Webhooks.", "Kliknite na Nový Webhook. Pomenujte ho (napr. ProxMenux) a vyberte kanál, na ktorom má uverejňovať. Avatar je voliteľný.", "Vyberte Kopírovať URL webhooku. Formát: https://discord.com/api/webhooks/<id>/<token>.", "Vložte ju do poľa Webhook URL karty Discord v paneli upozornení a uložte." ], "imageAlt": "Formulár kanála Discord s Webhook URL poľom začínajúcim s https://discord.com/api/webhooks/", "imageCaption": "Discord — vložte URL z Nastavenia servera → Integrácie → Webhooks." }, "gotify": { "heading": "Gotify", "intro": "Gotify je push server na vlastnom hostiteľovi. Potrebujete jeho základnú URL a token aplikácie z administrácie.", "items": [ "Ak Gotify ešte nemáte, použite oficiálny inštalačný návod.", "Ako správca otvorte Aplikácie → Vytvoriť aplikáciu, zadajte názov ako ProxMenux a skopírujte token.", "V Gotify nastavte URL servera, napríklad https://gotify.example.com, a vložte token aplikácie.", "Uložte a stlačte Odoslať test." ], "imageAlt": "Formulár Gotify s URL https://gotify.example.com a vzorovou hodnotou tokenu A_valid_gotify_token", "imageCaption": "Gotify — URL vlastnej inštancie a token aplikácie z administrácie." }, "email": { "heading": "E-mail (SMTP)", "intro": "E-mail je najflexibilnejší kanál a ten s najviac polí. Potrebujete SMTP server, port, režim TLS, prípadne užívateľské meno a heslo, adresu odosielateľa a aspoň jedného príjemcu.", "imageAlt": "Formulár SMTP: server, port, režim TLS, meno, heslo, odosielateľ, príjemcovia oddelení čiarkami a predpona predmetu", "imageCaption": "E-mail: SMTP host / port / TLS režim, voliteľné užívateľské meno + heslo, adresa odosielateľa, čiarkovo oddeľovaní príjemcovia a predpona predmetu, aby sa upozornenia dali ľahko filtrovať do schránky.", "appNote": "Monitor používa SMTP s heslom. Gmail môže vyžadovať heslo aplikácie. Pri Microsofte záleží na službe a pravidlách organizácie; heslo aplikácie neobíde zákaz základného overenia. Najprv overte podporu služby.", "gmailTitle": "Heslo aplikácie Gmail", "gmailIntro": "Heslá aplikácií Gmail vyžadujú zapnuté dvojstupňové overenie (2-Step Verification) v účte Google. Bez neho stránka Heslá aplikácií nebude dostupná.", "gmailItems": [ "Otvorte myaccount.google.com/security a zapnite 2-Step Verification ak ešte nie je zapnutý.", "Otvorte myaccount.google.com/apppasswords.", "Zadajte názov ako ProxMenux a vyberte Vytvoriť. Skopírujte 16-znakové heslo.", "Nastavte Server smtp.gmail.com, Port 587, Režim TLS STARTTLS, Meno vašu adresu Gmail a Heslo 16-znakové heslo aplikácie." ], "outlookTitle": "Microsoft / Outlook heslo aplikácie", "outlookIntro": "Heslá aplikácií Microsoft vyžadujú dvojstupňové overenie, ale nezaručujú kompatibilitu SMTP. Pri požiadavke OAuth2 sa klient Monitora s heslom neprihlási. Použite SMTP relay podporujúci požadované overenie poskytovateľa.", "outlookItems": [ "Otvorte account.microsoft.com/security a povoľte dvojstupňové overovanie.", "Ak účet ponúka Rozšírené možnosti zabezpečenia → Heslá aplikácií, vyberte Vytvoriť heslo aplikácie. Samotná voľba nezaručuje podporu SMTP s heslom.", "Ak Microsoft vytvorí heslo, skopírujte ho a overte jeho prijatie službou SMTP.", "Len ak poskytovateľ dovoľuje SMTP s heslom, vyplňte jeho schválené hodnoty: Server smtp.office365.com pre Exchange Online, Port 587, Režim TLS STARTTLS, Používateľské meno adresu vašej schránky a Heslo povolený prihlasovací údaj SMTP. Osobné Outlook.com má iné nastavenia a požiadavky na overenie; nepredpokladajte, že tieto údaje budú fungovať." ], "relayTitle": "SMTP relay na vlastnom serveri", "relayBody": "Nasmerujte Monitor na vlastný SMTP relay, napríklad Postfix. Ten rieši overenie voči poskytovateľovi. Overenie a TLS Monitora nastavte podľa relaya; miestny relay automaticky nevypína šifrovanie." }, "pushover": { "heading": "Pushover", "intro": "Pushover poskytuje push oznámenia pre iOS, Android aj počítačové prehliadače. Kanál ProxMenux používa priamo API Pushover, bez URL Apprise.", "stepsTitle": "Nastavenie", "steps": [ "Vytvorte účet Pushover, nainštalujte aplikáciu do prijímajúcich zariadení a prihláste sa.", "Skopírujte kľúč používateľa z Pushover. Pre viac príjemcov môžete použiť kľúč skupiny.", "Otvorte Vytvoriť aplikáciu/token API, vytvorte ProxMenux a skopírujte 30-znakový token API.", "V Nastavenia → Oznámenia → Pushover vložte kľúč a token API. Zariadenie a zvuk sú voliteľné.", "Uložte nastavenia a stlačte Odoslať test. Aplikácia Pushover by mala správu dostať okamžite." ], "priorityTitle": "Prioritné mapovanie", "priorityBody": "Bežné správy majú prioritu 0. So zapnutou Vysokou prioritou kritických upozornení používa CRITICAL prioritu 1 a obíde tiché hodiny Pushover. Núdzová priorita 2 s opakovaním a potvrdením sa nepoužíva.", "secretTitle": "Chrániť obe hodnoty", "secretBody": "Kľúč používateľa/skupiny aj token API povoľujú doručenie. Monitor ich chráni a maskuje; nezverejňujte ani jeden na snímkach či v protokoloch podpory." }, "apprise": { "heading": "Apprise (generický uzol pre služby ~80)", "intro": "Apprise podporuje približne 80 služieb cez URL: ntfy, Matrix, Slack, Microsoft Teams, Mattermost, Pushbullet, AWS SNS, Pushsafer, Rocket.Chat, Signal API a ďalšie. Monitor nemusí každú integrovať samostatne. Pushover možno tiež použiť cez Apprise, ale vlastná karta je jednoduchšia pre jeden cieľ.", "listIntro": "Úplný zoznam podporovaných služieb a presný formát URL pre každú z nich je k dispozícii v oficiálnej dokumentácii Apprise:", "listItems": [ "Dokumentácia služieb Apprise — úplný zoznam.", "Základy URL — štruktúra URL Apprise." ], "stepsTitle": "Kroky", "steps": [ "Vyberte cieľovú službu na Apprise wiki a skopírujte pre ňu šablónu URL. Každá stránka služby zobrazuje presnú schému, ktorá sa má použiť (ntfy://, matrix://, pover://, slack://…) plus všetky požadované tokeny, kanály alebo názvy hostiteľov.", "Nahraďte zástupné hodnoty prihlasovacími údajmi. Príklady: ntfy.sh ntfy://ntfy.sh/my-topic, Pushover pover://user@token, Matrix matrix://user:pass@host:port/#room.", "Prilepte cieľovú webovú adresu do poľa Apprise URL na karte Apprise na paneli Upozornenia a uložte.", "Vyberte Odoslať test na overenie dostupnosti a prihlasovacích údajov." ], "deliveredTitle": "Čo dostane doručené", "deliveredBody": "Apprise dostane názov, text a závažnosť prispôsobenú možnostiam služby, ako ikona, priorita či farba. Formátovanie a AI sa vykonajú pred odoslaním, rovnako ako pri Telegrame či e-maile.", "fanoutTitle": "Jedno URL na kanál Apprise", "fanoutBody": "Jeden kanál Apprise má jednu URL. Pre viac služieb, napríklad ntfy.sh a Matrix, použite server Apprise API s označenou konfiguráciou. Rozosiela volanie Monitora na všetky URL danej značky." }, "rich": { "heading": "Rozšírené správy, kategórie a filtre kanálov", "intro": "Každý kanál má Rozšírené správy, jedenásť rozbaľovacích Kategórií oznámení s prepínačmi udalostí a tlačidlo Odoslať test.", "imageAlt": "Panel kategórií s rozšírenými správami, skupinami VM/CT, záloh, zdrojov, úložiska, siete, bezpečnosti, klastra, služieb, zdravia a aktualizácií, počtami a tlačidlom testu", "imageCaption": "Šípka označuje Rozšírené správy. Pod nimi je jedenásť kategórií s udalosťami; Odoslať test je dole.", "richTitle": "Rozšírené správy", "richIntro": "So zapnutými Rozšírenými správami sa pridá ikona kategórie a formát kanála, napríklad HTML Telegram alebo farebné karty Discord. Pri vypnutí príde rovnaký obsah ako obyčajný text:", "plainHeader": "Obyčajný text — rozšírené správy vypnuté", "richHeader": "Formátovaný text — rozšírené správy zapnuté", "richOutro": "Každý kanál má vlastnú voľbu. E-mail môže zostať obyčajný, Telegram a Discord formátované. Kanály bez príslušného formátu, ako textový e-mail či Gotify, dostanú text.", "togglesTitle": "Kategórie udalostí", "togglesIntro": "Každý kanál nezávisle ovláda kategórie a udalosti. Vypnutá kategória potlačí svoje udalosti v danom kanáli. Jednotlivé prepínače platia v zapnutých kategóriách; globálny hlavný filter udalostí v odosielači nie je.", "togglesItems": [ "Kategória podľa kanála. Vypnutie VM/CT potlačí vm_start a podobné udalosti. Ukladá sa ako <channel>.events.<group>.", "Udalosť podľa kanála. V zapnutej kategórii možno posielať backup_complete do Discord, nie do Telegram. Ukladá sa ako <channel>.event.<event_type>." ], "togglesOutro": "Kategória ukazuje počet zapnutých / všetkých udalostí a prepínač celej skupiny, napríklad záloh info či aktualizácií, bez rozbalenia." }, "quiet": { "heading": "Tiché hodiny", "intro": "Počas tichých hodín kanála prejdú iba udalosti CRITICAL. INFO, WARNING a akcie sa uložia na disk a po skončení prídu v súhrne.", "imageAlt": "Nastavenia kanála: tiché hodiny 22:00–07:00 s náhľadom zmeny a denný súhrn o 09:00 s poznámkou, že tento súhrn nezdrží CRITICAL ani WARNING", "imageCaption": "Dve nezávislé nastavenia kanála: tiché hodiny hore a denný súhrn pod nimi.", "purposeTitle": "Načo to je?", "purposeItems": [ "Nezobudiť ma o 03:00 kvôli upozorneniu na aktualizáciu. Zálohy, aktualizácie aplikácií, optimalizácie po inštalácii a ďalšie udalosti na úrovni INFO prestanú v noci pingovať váš telefón.", "Kritické udalosti stále prídu. Tiché hodiny obídu iba udalosti CRITICAL. Samotný názov nestačí: sledovanie denníka vydáva blokovania Fail2Ban aj vypnutie/reštart hostiteľa ako INFO, takže sa môžu zadržať.", "Odložené správy sa zachovajú. Čakajú v SQLite až do konca intervalu." ], "howTitle": "Ako to funguje", "howItems": [ "Voľba podľa kanála. Telegram môže mlčať od 22:00 do 07:00, zatiaľ čo e-mail dostáva všetko nepretržite.", "Začiatok a koniec v miestnom čase: začiatok sa započítava, koniec nie. Interval môže prejsť cez polnoc, napríklad 22:00–07:00.", "Živý náhľad. Pod poľami je aktuálny stav intervalu a čas ďalšej zmeny.", "Počas intervalu: CRITICAL sa odosiela normálne. INFO a WARNING čakajú v tabuľke SQLite quiet_pending.", "Po skončení: príde chronologický súhrn s riadkom pre každú udalosť. Vyrovnávacia pamäť sa vyprázdni až po potvrdení doručenia, aby odolala dočasným výpadkom Telegram či SMTP.", "Prežije reštart. Údaje zostanú na disku. Nasledujúci cyklus rozpozná čakajúce riadky a podľa potreby odošle obnovovací súhrn." ], "criticalTitle": "Čo je CRITICAL", "criticalBody": "Závažnosť určuje zdroj pri vytvorení udalosti. Disk, vypnutie či bezpečnosť automaticky neznamenajú CRITICAL. Sledovanie denníka vydáva ip_block, system_shutdown a system_reboot ako INFO. Katalóg udalostí uvádza typy; skutočnú závažnosť overte v zdroji a prijatej udalosti." }, "digest": { "heading": "Denný súhrn informačných udalostí", "intro1": "Denný súhrn je voliteľný. Vhodné INFO, napríklad dostupné aktualizácie, združuje o 09:00 alebo v zvolenom čase. Výsledky záloh a replikácie či priame akcie sú vyňaté. Tiché hodiny naopak zadržia nekritické správy počas intervalu.", "intro2": "Voľba je pod tichými hodinami na rovnakej karte; pozrite Tiché hodiny. Zapínajú sa samostatne.", "purposeTitle": "Načo to je?", "purposeItems": [ "Ranný prehľad. Súhrn o 09:00 nahradí napríklad 20 jednotlivých správ z predošlého dňa bez čítania 20 bublín Telegramu.", "Rozlíšenie aktivity a naliehavosti. INFO opisuje dianie; CRITICAL a WARNING signalizujú potrebu zásahu. Vhodné INFO sa zoskupia, ostatné si zachovajú priame doručovanie." ], "howTitle": "Ako to funguje", "howItems": [ "Zapnutie pre každý kanál. Predvolene vypnuté. Zapnite iba tam, kde chcete súhrn; ostatné kanály nechajte priame.", "Čas doručenia v miestnom čase, predvolene 09:00. Odosielač ho spustí približne do 60 s od danej minúty.", "Obsah súhrnu: vhodné všeobecné udalosti so závažnosťou INFO. Napríklad dostupná aktualizácia aplikácie, dostupná aktualizácia Tailscale, dostupná aktualizácia optimalizácie ProxMenux a čakajúce bezpečnostné aktualizácie APT. Výsledky záloh a ďalšie vyňaté udalosti akcií zostanú priame.", "Čo sa nikdy neodkladá:", "Trvalé uloženie. Udalosti čakajú v tabuľke SQLite digest_pending do nastaveného času a prežijú reštart.", "Bez udalostí nie je súhrn. Ak nečakajú INFO, prázdna správa sa neposiela." ], "neverDelayedSub": [ "Udalosti CRITICAL prechádzajú bez zdržania denným súhrnom.", "Udalosti WARNING prechádzajú bez zdržania denným súhrnom.", "Akcie a zlyhania VM/CT, začiatok a výsledky záloh, výsledky replikácie a vypnutie/reštart hostiteľa obídu denný súhrn aj pri INFO. Tiché hodiny môžu nekritické udalosti stále zdržať." ], "comboTitle": "Kombinovanie tichých hodín a denného súhrnu", "comboBody": "Kanál môže mať obe voľby: ticho 22:00–07:00 a súhrn o 09:00. Nekritické udalosti intervalu prídu o 07:00; vhodné INFO mimo intervalu idú do denného súhrnu. CRITICAL obíde oboje; WARNING obíde denný súhrn, nie tiché hodiny. Vyberte čas ticha, súhrn v pevnom čase alebo oboje." }, "displayName": { "heading": "Zobrazovaný názov", "intro": "Každé oznámenie nesie Zobrazovaný názov — označenie, ktoré identifikuje, ktorý hostiteľ vytvoril výstrahu. Je to hodnota, ktorú vidíte v spodnej časti vyššie uvedeného príkladu multimediálnych správ (🏠 home-lab) a vo vnútri predpony predmetu e-mailu.", "imageAlt": "Pole zobrazovaného názvu s príkladom amd; prázdne pole použije systémový názov hostiteľa", "imageCaption": "Pole Zobrazovaný názov – nechajte prázdne, ak chcete použiť názov hostiteľa systému, alebo ho prepíšte čímkoľvek, čo chcete.", "outro": "Prázdne pole používa názov systému. Vlastný názov pomáha pri viacerých hostiteľoch v rovnakom chate či schránke: home-lab a office-pve sa čítajú ľahšie než pve01.lan či pmx-prod-01." }, "dispatch": { "heading": "Postup odosielania", "intro": "Tabuľka opisuje tri súvisiace mechanizmy. Skutočné poradie je zoskupovanie, rezervácia doručenia a interval opakovania, limity skupín, vytvorenie textu a riadenie kanálov:", "headerStage": "Štádium", "headerWhat": "Čo to robí?", "headerTunable": "Nastaviteľné?", "rows": [ { "stage": "Deduplikácia podľa odtlačku", "what": "Pre udalosť sa vypočíta odtlačok (event_type + key fields from data). Rovnaké odtlačky v krátkom intervale sa považujú za duplikáty.", "tunable": "Nie — interná logika odosielača." }, { "stage": "Interval opakovania", "what": "Po úspešnom odoslaní sa opakované odtlačky potlačia; stav je v notification_last_sent. Základ pre CRITICAL, WARNING, INFO, resources a updates je 86400 s. Výnimky: 5 s pre akcie VM/CT a vypnutie/reštart, 10 s pre výsledky záloh/replikácie, 1800–3600 s pre viaceré zdravotné stavy. Výslovné nastavenia udalosti/skupiny majú prednosť.", "tunable": "Len cez API nastavení — kľúč cooldown.<event_type> alebo cooldown.<group> prepíše predvolené hodnoty; v rozhraní na to nie je žiadny ovládací prvok." }, { "stage": "Zoskupovanie nárazových udalostí", "what": "Viac rovnakých udalostí v krátkom čase, napríklad útok na SSH, vytvorí správu burst_* s počtom a ukážkou.", "tunable": "Nie — okno a prah sú pevné pre každý typ udalosti." } ], "calloutTitle": "Odosielanie vo vlákne na pozadí", "calloutBody": "Slučka odoslania beží vo vlastnom vlákne. Požiadavka HTTP, ktorá vysiela udalosť, sa vráti hneď, ako je udalosť zaradená do frontu – nečaká na Telegram, SMTP alebo webhook RTT. Každý výsledok odoslania sa zaznamená do tabuľky histórie na spätnú kontrolu." }, "aiRewrite": { "heading": "Nepovinné prepísanie AI", "body1": "Vhodné udalosti môže prepísať LLM. backup_complete a backup_fail sa neprepisujú. AI je predvolene vypnutá a beží v odosielacom vlákne. Pri chybe alebo časovom limite sa použije pôvodný text.", "body2": "Podporuje OpenAI, Anthropic, Google Gemini, Groq, OpenRouter a miestne Ollama. Pre kanál: podrobnosť (brief, standard, detailed), jazyk, režim pokynov (default alebo custom) a vlastné pokyny. Návod a príklady sú v Asistent AI.", "privacyTitle": "Poznámka o ochrane osobných údajov", "privacyBody": "Požiadavka AI môže obsahovať názov, závažnosť, text, systémové/vlastné pokyny a kontext s názvami hostiteľov, IP, používateľmi, chybami a denníkmi. Posiela sa zvolenému serveru. Ollama zostáva miestne len s miestnym serverom aj modelom; vzdialený server alebo cloudový model odosiela údaje mimo hostiteľa. Ak musia zostať v sieti, vypnite AI alebo použite riadený miestny server a model." }, "pveWebhook": { "heading": "Integrácia PVE webhook", "intro1": "Proxmox používa ciele oznámení sendmail, Gotify, SMTP a pri podporovaných verziách webhook. Monitor zaregistruje cieľ webhook. Oznámenia HA, replikácie a záloh z rozhrania potom vstupujú do rovnakého spracovania.", "intro2": "Cieľ nájdete v Datacenter → Oznámenia → Ciele oznámení.", "imageAlt": "Dialóg webhooku Proxmox s cieľom proxmenux-webhook, POST na http://127.0.0.1:8008/api/notifications/webhook a JSON šablónou s funkciami escape pre title, message, severity, timestamp a poľami json", "imageCaption": "Webhook z pohľadu PVE; rozhranie snímky je v španielčine. Rovnaké polia platia v každom jazyku.", "registeredIntro": "Čo sa zaregistruje:", "registeredItems": [ "Metóda a URL. POST http://127.0.0.1:8008/api/notifications/webhook bez HTTPS Monitora; s HTTPS samostatný miestny HTTP port 8009. Obe zostávajú na hostiteľovi.", "Šablóna správy. JSON s funkciami Handlebars PVE, uložený v konfigurácii ako base64. Po dekódovaní:", "Pravidlo priradenia. Blok matcher: proxmenux-matcher s mode all posiela všetky oznámenia PVE do cieľa.", "Súkromná konfigurácia. Nastavenie zapíše zodpovedajúci blok webhook: proxmenux-webhook do /etc/pve/priv/notifications.cfg s položkou secret s názvom X-Webhook-Secret, zakódovanou v base64. Verejný blok cieľa obsahuje iba šablónu tela, metódu a URL. Súkromný blok nie je prázdny zástupný záznam." ], "securityTitle": "Ako je prijímač zabezpečený", "securityIntro": "Prijímač webhook na POST /api/notifications/webhook používa rôzne bezpečnostné vrstvy v závislosti od toho, odkiaľ pochádza žiadosť:", "securityItems": [ "Miestne zdroje (127.0.0.1 / ::1). Platí limit požiadaviek, no preskočia sa vzdialené kontroly tajomstva, času a opakovania. Aj adresy miestnych rozhraní hostiteľa sú miestne. Automatický cieľ PVE používa loopback.", "Vzdialené volania. Okrem limitu sa overí tajomstvo v X-Webhook-Secret, čas v X-ProxMenux-Timestamp alebo JSON, opakovanie a voliteľný zoznam IP. Tajomstvo je v SQLite aj ako kópia base64 v /etc/pve/priv/notifications.cfg, aby PVE odoslal hlavičku." ], "practiceTitle": "V praxi", "practiceBody": "PVE používa http://127.0.0.1:8008 bez HTTPS, inak HTTP 8009. Vzdialené integrácie na https://<monitor-host>:<port>/api/notifications/webhook musia poslať X-Webhook-Secret, aktuálny čas a splniť kontroly opakovania a IP. Tajomstvo samo nestačí.", "actionsIntro": "Monitor riadi tento cieľ prostredníctvom troch akcií na karte Nastavenie:", "actionsItems": [ "Nastaviť pri zapnutí vytvorí položku v /etc/pve/notifications.cfg. Zapisujú sa iba zmeny; tri najnovšie zálohy sú v /usr/local/share/proxmenux/backups/pve-notifications/. Bez pripojeného /etc/pve sa nezapisuje; čaká sa na návrat pve-cluster.", "Vyčistiť odstráni položku a ponechá predchádzajúcu zálohu.", "Čítať konfiguráciu zobrazí ciele a pravidlá, aby ste overili viac oznamovacích trás PVE." ], "clusterTitle": "Uzly klastra", "clusterBody": "/etc/pve/ vrátane URL a tajomstva je zdieľaný v klastri. Každý uzol volá svoj vlastný prijímač: 127.0.0.1:8008 bez HTTPS, inak HTTP 8009. Spustite Monitor na každom potrebnom uzle a zlaďte spoločný cieľ so všetkými prijímačmi." }, "catalogue": { "heading": "Katalóg udalostí", "intro": "Približne sedemdesiat typov je v jedenástich kategóriách. Každá rozbaľovacia skupina ponúka prepínače udalostí. Predvolene sú zapnuté, pokiaľ nie je uvedené inak.", "headerGroup": "Skupina", "headerEvents": "Udalosti", "rows": [ { "group": "VM / CT", "events": "vm_start, vm_start_warning, vm_stop, vm_shutdown, vm_fail, vm_restart, plus ekvivalenty ct_*, migration_start, migration_complete, migration_warning, migration_fail, replication_complete, replication_fail." }, { "group": "Zálohy", "events": "backup_start, backup_complete, backup_warning, backup_fail, snapshot_complete, snapshot_fail." }, { "group": "Zdroje", "events": "cpu_high, ram_high, temp_high, load_high." }, { "group": "Úložisko", "events": "disk_space_low, disk_io_error, storage_unavailable, smart_test_complete, smart_test_failed." }, { "group": "Sieť", "events": "network_down, network_latency." }, { "group": "Zabezpečenie", "events": "auth_fail, ip_block, firewall_issue, user_permission_change." }, { "group": "Klaster", "events": "split_brain, node_disconnect, node_reconnect." }, { "group": "Služby", "events": "system_startup, system_shutdown, system_reboot, system_problem, service_fail, oom_kill, system_mail." }, { "group": "Monitor zdravia", "events": "new_error, error_resolved, error_escalated, health_degraded, health_persistent, health_issue_new, health_issue_resolved." }, { "group": "Aktualizácie", "events": "update_summary, update_available, pve_update, update_complete, proxmenux_update." }, { "group": "Hardvér / GPU", "events": "gpu_mode_switch, gpu_passthrough_blocked, pci_passthrough_conflict, ai_model_migrated." } ], "burstNote": "Typy burst_* (burst_auth_fail, burst_ip_block, burst_disk_io, atď.) nahrádzajú nárazové udalosti súhrnom. Nemajú vlastné prepínače v rozhraní a dedia stav zdrojovej udalosti.", "backupResults": { "heading": "Výsledky zálohy", "intro": "Oznámenie o úlohe zálohovania Proxmox uvádza, ako sa úloha skončila. Výsledok sa prečíta zo správy, ktorú Proxmox odošle, a nastaví názov, ikonu zobrazenú so zapnutými Rozšírenými správami a stavový riadok e-mailu.", "headerIcon": "Icon", "headerResult": "Výsledok", "headerWhen": "Kedy", "rows": [ { "icon": "💾✅", "result": "Záloha bola dokončená", "when": "Zálohovanie všetkých hostí v úlohe sa dokončilo a hlásenie neobsahuje upozornenia." }, { "icon": "💾⚠️", "result": "Záloha skončila s upozorneniami", "when": "Zálohovanie všetkých hostí sa dokončilo a hlásenie obsahuje aspoň jeden riadok s upozornením." }, { "icon": "💾❌", "result": "Hlásená chyba zálohy", "when": "Hosť zlyhal alebo úloha skončila chybou." }, { "icon": "💾❔", "result": "Výsledok zálohy nepotvrdený", "when": "Správa je neúplná alebo neuvádza výsledok pre každého hosťa." } ], "items": [ "Názov identifikuje úlohu. Uvádza úložisko a pri jednom hosťovi aj jeho typ, meno a ID. Pri zlyhaní pomenuje dotknutého hosťa.", "Text uvádza každého hosťa s výsledkom, veľkosťou, trvaním a archívom, potom súčty úlohy.", "Varovania a chyby sa neopakujú. Duplicitné riadky sú uvedené raz, hlavná príčina prvá. Zobrazí sa najviac osem; ostatné sú spočítané na konci a zostanú v denníku úlohy Proxmox.", "Úloha zlyhaná pred prvým hosťom uvedie príčinu od Proxmoxu, napríklad neexistujúce úložisko.", "Súhrny zachovajú výsledok. Záloha v súhrne tichých hodín si ponechá ikonu výsledku. Výsledky záloh obchádzajú denný súhrn." ] } }, "history": { "heading": "História", "body1": "Každý skutočný pokus o odoslanie je v notification_history: čas sent_at, kanál, typ, závažnosť, názov, text, success a pri chybe error_message. Zoskupenia majú typ burst_*. Udalosti potlačené intervalom sa nezapisujú.", "body2": "Nastavenia → Oznámenia obsahuje predvolene zatvorenú Históriu oznámení s poslednými 20 položkami: výsledok, kanál, dátum, chyba a stav denného súhrnu. Stránka neponúka vymazanie; Audit & Report číta rovnaké údaje doručenia.", "body3": "Rovnaké údaje sú vystavené na GET /api/notifications/history s voliteľnými parametrami dotazu limit, offset, severity a channel, a môžu byť vymazané DELETE /api/notifications/history." }, "api": { "heading": "Koncové body API", "headerEndpoint": "Koncový bod", "headerMethod": "Metóda", "headerUse": "Použitie", "rows": [ { "endpoint": "/api/notifications/settings", "method": "GET / POST", "use": "Číta alebo zapisuje nastavenia kanálov, udalostí, AI a zobrazovaného názvu." }, { "endpoint": "/api/notifications/test", "method": "POST", "use": "Pošlite oznámenie o teste na jeden kanál: '{'\"channel\":\"telegram\"'}'." }, { "endpoint": "/api/notifications/test-ai", "method": "POST", "use": "Vytvorí a prepíše ukážkovú udalosť bez odoslania." }, { "endpoint": "/api/notifications/provider-models", "method": "POST", "use": "Zoznam dostupných modelov pre vybraného poskytovateľa AI." }, { "endpoint": "/api/notifications/send", "method": "POST", "use": "Vytvorí udalosť z externej integrácie." }, { "endpoint": "/api/notifications/history", "method": "GET / DELETE", "use": "Číta filtrovanú históriu alebo ju vymaže." }, { "endpoint": "/api/notifications/webhook", "method": "POST", "use": "Prijíma oznámenia Proxmox. Miestne zdroje preskočia vzdialené overenie, nie limit. Vzdialené požiadavky sa overia cez X-Webhook-Secret, čas v X-ProxMenux-Timestamp alebo JSON, kontrolu opakovania a nastavený zoznam IP." }, { "endpoint": "/api/notifications/proxmox/setup-webhook", "method": "POST", "use": "Zaregistrujte monitor ako cieľ v /etc/pve/notifications.cfg." }, { "endpoint": "/api/notifications/proxmox/cleanup-webhook", "method": "POST", "use": "Odstráni cieľ Monitora z nastavení oznámení PVE." }, { "endpoint": "/api/notifications/proxmox/read-cfg", "method": "GET", "use": "Zobrazí aktuálnu konfiguráciu oznámení PVE." } ] }, "whereNext": { "heading": "Kam ďalej", "items": [ { "label": "AI asistent", "href": "/docs/monitor/ai-assistant", "tail": " — poskytovatelia, modely, režimy pokynov, jazyky a podrobnosti podľa kanála." }, { "label": "Monitor zdravia", "href": "/docs/monitor/health-monitor", "tail": " — hlavný samostatný zdroj udalostí s vlastnými intervalmi potlačenia kategórií." }, { "label": "Architektúra", "href": "/docs/monitor/architecture", "tailRich": " — miesto tabuliek SQLite notification_last_sent, notification_history a odosielacieho vlákna v procese Monitora." }, { "label": "Prístup a overenie", "href": "/docs/monitor/access-auth", "tailRich": " — vydávanie tokenov API pre skripty volajúce /api/notifications/send." }, { "label": "Dashboard → Systémové denníky", "href": "/docs/monitor/dashboard/system-logs", "tail": " — živý pohľad na systémový denník, ktorý používa jeho sledovanie." } ] } }