{
"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 Serversmtp.gmail.com, Port587, Režim TLSSTARTTLS, 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: Serversmtp.office365.com pre Exchange Online, Port587, Režim TLSSTARTTLS, 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."
}
]
}
}