CHAT_OUTPUT_BEGIN
COMMAND_ID=SUPPORT-260919-HOME-GRAM1-DISCOVERY-READONLY-567R1
STATUS=OK
RC=0
HOST=pve01
MODE=read-only
COMPONENT=home-gram1-discovery-readonly
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
COMMAND_SHA256=50e02bced33c549e5473026463c35e1de9e413b719a87fbbce99e44832b530ac
DUPLICATE_FAILED_COMMAND_BLOCKED=false
EXECUTION_STARTED=true
CHANGE_DECLARED=false
RESULT_CONTRACT_VALID=true
RESULT_CONTRACT_STATUS=NOT_APPLICABLE
RESULT_CONTRACT_ERROR=NONE
COMMAND_RC=0
CHANGES_MADE=false
ROLLBACK_STARTED=false
ROLLBACK_RESTORED=null
MUTATION_OUTCOME=NO_MUTATION
SANITIZED=yes
SECRETS_INCLUDED=no
PRIVATE_ADDRESSES_INCLUDED=no
RAW_EVIDENCE_SHA256=50f1d3e3dcea8e65319a11fe2d0fece11ac11c4b4d31c4f246f93494e14ef553
SANITIZED_OUTPUT_SHA256=a6dac104ea7d4cdbb25fcaf364a52d293dfded215899597298e94e11cbab79a8
OUTPUT_BEGIN
ERROR_REGISTER_CHECK=OK
REFERENCE_CHECK=OK
AUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED
REFERENCE_HOME_MATCH_COUNT=123
REFERENCE_HOME_MATCH=50:- Homepage/Prometheus retired references absent; Uptime Kuma orphan extra_hosts removed.
REFERENCE_HOME_MATCH=82:HEALTH_NOT_OK item=backup-restore-dashboard.txt line=STATUS=WARN TS=2026-06-29T18:10:09Z ITEMS=80 NOT_OK=13
REFERENCE_HOME_MATCH=89:HEALTH_NOT_OK item=homepage-service-catalog-slo.txt line=STATUS=WARN
REFERENCE_HOME_MATCH=153:- Проверить backup-restore-dashboard: STATUS=WARN, NOT_OK=13.
REFERENCE_HOME_MATCH=192:## FINAL_DASHBOARD_RUNTIME_OK_20260630
REFERENCE_HOME_MATCH=194:- Runtime dashboard: STATUS=OK, ITEMS=69, NOT_OK=0.
REFERENCE_HOME_MATCH=196:- SLO/coverage WARN files: moved out of runtime dashboard into slo-coverage-backlog-index.txt.
REFERENCE_HOME_MATCH=198:- Final proof: 103_FINAL_ALL_GREEN_DASHBOARD_PROOF.txt.
REFERENCE_HOME_MATCH=395:- edge-vm owns most application health, dashboard, ingress, backup, NetBox, NPMplus, certificate, Trivy and vulnerability jobs.
REFERENCE_HOME_MATCH=455:- edge-vm timers cover runtime dashboard, Paperless guard, external canary, health metrics, restore drill index, AdGuard rewrite sync, NPMplus cert expiry, NetBox backup/sync, retention, cluster daily status, vulnerability and Trivy scans, ingress hardening and NPMplus admin bind.
REFERENCE_HOME_MATCH=704:- home.gram1.ru -> http://127.0.0.1:3000, cert=27, ssl_forced=1, enabled=1.
REFERENCE_HOME_MATCH=715:- homepage.vpn.gram1.ru -> http://127.0.0.1:3000, cert=32.
REFERENCE_HOME_MATCH=753:- cert=27: home.gram1.ru, expires 2026-09-13 16:43:44.
REFERENCE_HOME_MATCH=799:- homepage.
REFERENCE_HOME_MATCH=831:- Admin/dashboard: homepage, dockge, netbox, dozzle, NPMplus VPN admin.
REFERENCE_HOME_MATCH=834:- Homepage: 127.0.0.1:3000.
REFERENCE_HOME_MATCH=885:- Backup health dashboard: STATUS=OK, ITEMS=69, NOT_OK=0 at 2026-06-30T10:10:06Z.
REFERENCE_HOME_MATCH=887:- SLO coverage is tracked separately from runtime dashboard. It had WARN backlog in backup-restore-coverage-slo with APP_TOTAL=43, GREEN=3, YELLOW=21, RED=19, MISSING_BACKUP_SIGNAL=31, MISSING_RESTORE_SIGNAL=28, MISSING_TIMER=31.
REFERENCE_HOME_MATCH=1107:### Runtime dashboard semantics
REFERENCE_HOME_MATCH=1108:- backup-restore-dashboard.txt is an authoritative runtime dashboard file.
REFERENCE_HOME_MATCH=1109:- Current observed runtime dashboard: STATUS=OK, ITEMS=69, NOT_OK=0.
REFERENCE_HOME_MATCH=1110:- backup-restore-dashboard.json confirmed not_ok=[].
REFERENCE_HOME_MATCH=1118:- Uptime Kuma local endpoint returns HTTP 302 to /dashboard, which is expected for UI auth/redirect.
REFERENCE_HOME_MATCH=1130:- Runtime dashboard OK does not mean SLO backlog is closed.
REFERENCE_HOME_MATCH=1133:- Other observed WARN backlog files include container-image-lifecycle-slo, cron-job-monitoring-slo, direct-heartbeat-pilot-readiness, healthchecks-heartbeat-coverage, healthchecks-job-coverage, healthchecks-job-monitoring-slo, homepage-service-catalog-slo, ingress-dns-route-slo, observability-health-surface-slo and security-vulnerability-slo.
REFERENCE_HOME_MATCH=1370:| home.gram1.ru | http://127.0.0.1:3000 | edge-vm / homepage | homepage container, dashboard route |
REFERENCE_HOME_MATCH=1377:| backup.gram1.ru | http://[PRIVATE_IP]:9101 | pve01 / homelab-health-http | backup dashboard and health proofs |
REFERENCE_HOME_MATCH=1383:| homepage.vpn.gram1.ru | http://127.0.0.1:3000 | homepage |
REFERENCE_HOME_MATCH=1517:### Backup dashboard / SLO interpretation
REFERENCE_HOME_MATCH=1518:- Runtime dashboard OK means current operational checks are green.
REFERENCE_HOME_MATCH=1571:- Monitoring, alerting, health dashboard and Prometheus correction.
REFERENCE_HOME_MATCH=1643:- Backup/cloud/restore improvement pass is closed with runtime dashboard STATUS=OK and NOT_OK=0.
REFERENCE_HOME_MATCH=1668:- Runtime backup dashboard remains STATUS=OK with NOT_OK=0.
REFERENCE_HOME_MATCH=1706:- edge-vm units checked: P2 small-stacks backup/restore, backup dashboard and restore drill index.
REFERENCE_HOME_MATCH=1736:- edge-vm services checked: P2 small-stacks backup/restore, backup dashboard and restore drill index.
REFERENCE_HOME_MATCH=1754:- edge-vm timers checked: P2 small-stacks backup/restore, backup dashboard and restore drill index.
REFERENCE_HOME_MATCH=1830:- edge-vm services checked: P2 small-stacks backup/restore, backup dashboard and restore drill index.
REFERENCE_HOME_MATCH=1900:- Also verify service results, health status/age, Mail-cloud directories, dashboard, restore index, Prometheus firing alerts and Alertmanager readiness.
REFERENCE_HOME_MATCH=1920:- Home portal discovery started for https://home.gram1.ru/.
REFERENCE_HOME_MATCH=1922:- Discovery proof records DNS, HTTPS/TLS headers, reverse-proxy candidates, compose files, domain references and homepage config candidates without printing secrets.
REFERENCE_HOME_MATCH=1926:- Home portal config and service inventory was collected for https://home.gram1.ru/.
REFERENCE_HOME_MATCH=1931:- Home portal gap analysis was collected for gethomepage/homepage behind npmplus.
REFERENCE_HOME_MATCH=1932:- Proof records Homepage config hashes, redacted current cards/bookmarks, current URLs, npmplus route lines, local web-port probes and known service container candidates.
REFERENCE_HOME_MATCH=1940:- Home portal card/API-error analysis was collected before editing Homepage.
REFERENCE_HOME_MATCH=1941:- Proof records current card URLs/titles, redacted widget config, redacted Homepage log errors, NPMPlus internal route files/routes and candidate public/VPN cards.
REFERENCE_HOME_MATCH=1950:- Homepage services.yaml was backed up, duplicate VPN cards were removed where a non-VPN card existed, and missing web cards for NetBird, Mail and Webmail were added without VPN suffix in the card names.
REFERENCE_HOME_MATCH=1952:- Homepage container was restarted and portal/card URLs were checked.
REFERENCE_HOME_MATCH=1961:- Corrected Homepage apply removed duplicate VPN cards where a non-VPN card existed and added NetBird, Mail and Webmail cards with non-VPN names.
REFERENCE_HOME_MATCH=1984:- Proof checks portal HTTP status, Homepage container state, required cards, duplicate VPN card pairs, current card URLs, redacted API-error logs and widget configuration.
REFERENCE_HOME_MATCH=1993:- Homepage API error root-cause analysis was collected after the UI showed API errors.
REFERENCE_HOME_MATCH=1994:- Current evidence points to the Open-Meteo/weather widget timing out from Homepage, separate from service cards.
REFERENCE_HOME_MATCH=1995:- HTTP 200 for the portal is not sufficient for UI closure when Homepage logs still contain API errors.
REFERENCE_HOME_MATCH=2004:- Open-Meteo/weather widget was disabled after root-cause analysis showed Homepage API errors from api.open-meteo.com timeouts.
REFERENCE_HOME_MATCH=2006:- Portal closure now requires current Homepage API-error logs to be zero after restart/reload.
REFERENCE_HOME_MATCH=2016:- Audit extracts current Homepage href URLs and checks whether each opens with an acceptable HTTP status.
REFERENCE_HOME_MATCH=2026:- Explicit VPN duplicate cards were removed from Homepage with a short transparent perl edit: Homepage VPN, Authentik VPN, Gitea VPN and Uptime Kuma VPN.
REFERENCE_HOME_MATCH=2031:- Remaining Homepage duplicate/VPN/router occurrences were inspected after corrected cleanup still reported REVIEW.
REFERENCE_HOME_MATCH=2036:- Homepage duplicate cleanup was rechecked against active config files only, excluding logs and backup files.
REFERENCE_HOME_MATCH=2041:- Active Homepage services/bookmarks files were cleaned from semantic VPN duplicate cards and old router URL references.
REFERENCE_HOME_MATCH=2042:- Removed targets: Homepage VPN, Authentik VPN, Gitea VPN and Uptime Kuma VPN, plus matching vpn.gram1.ru duplicate URLs.
REFERENCE_HOME_MATCH=2047:- Analysis checks URL body fingerprints, NPMPlus route config matches, service container candidates and Homepage card lines.
REFERENCE_HOME_MATCH=2051:- Active Homepage URL: https://home.gram1.ru.
REFERENCE_HOME_MATCH=2052:- Homepage container is running and portal HTTP check returned 200 after latest changes.
REFERENCE_HOME_MATCH=2057:- Homepage services.yaml was updated via YAML-aware edit for siteMonitor fields.
REFERENCE_HOME_MATCH=2059:- Latest validation before this reference update: YAML_ERRORS_LAST_5M=0, HOME_HTTP_CODE=200, HOMEPAGE_RUNNING=true.
REFERENCE_HOME_MATCH=2064:- Direct Homepage link correction requested by operator.
REFERENCE_HOME_MATCH=2073:- Excluded cards: Homepage, NPMplus, Router and Public Domain.
REFERENCE_HOME_MATCH=2075:- Homepage restarted successfully and reported YAML_ERRORS=0.
REFERENCE_HOME_MATCH=2080:- First next action: finish Homepage final validation.
REFERENCE_HOME_MATCH=2082:## HOMEPAGE_BACKUP_GAP_CLASSIFICATION_20260630
REFERENCE_HOME_MATCH=2083:- Homepage backup coverage gap classification file created at /etc/pve/HOMEPAGE_BACKUP_GAP_CLASSIFICATION.md.
REFERENCE_HOME_MATCH=2084:- It defines closure requirements for the 13 remaining Homepage backup coverage gap/special-review rows.
REFERENCE_HOME_MATCH=2087:## HOMEPAGE_EXISTING_BACKUP_EVIDENCE_CLOSURE_20260630
REFERENCE_HOME_MATCH=2088:- Homepage backup coverage matrix started closing existing-evidence rows.
REFERENCE_HOME_MATCH=2091:- Proof: 364_HOMEPAGE_EXISTING_BACKUP_EVIDENCE_CLOSURE_PROOF.txt.
REFERENCE_HOME_MATCH=2094:- Homepage External group includes Cloudflare card: https://dash.cloudflare.com.
REFERENCE_HOME_MATCH=2095:- Homepage External group includes AlexHost Billing card: https://bill.alexhost.com/.
REFERENCE_HOME_MATCH=2097:- YAML validation passed, Homepage returned HTTP 200, container running, and no Homepage YAML errors were seen after restart.
REFERENCE_HOME_MATCH=2101:- Homepage External card/link for relay.pvepro.ru was removed because relay.pvepro.ru had DNS but no reachable HTTP/HTTPS endpoint from edge-vm.
REFERENCE_HOME_MATCH=2106:- Homepage Moscow Router red-dot fix requires router ACL/Web UI/admin-level change, not routerbackup.
REFERENCE_HOME_MATCH=2114:- Homepage External NetBird and AlexHost Billing href/siteMonitor URLs normalized with trailing slash.
REFERENCE_HOME_MATCH=2115:- Homepage container node checks returned HTTP 200 for both URLs.
REFERENCE_HOME_MATCH=2120:- Remaining blocker for Homepage green dot is HTTP/HTTPS 403 from router web service to edge-vm/Bridge1, not network reachability.
REFERENCE_HOME_MATCH=2124:- Moscow Router Homepage card href: http://[PRIVATE_IP]:5080.
REFERENCE_HOME_MATCH=2125:- Moscow Router Homepage siteMonitor: http://[PRIVATE_IP]:18083/router-moscow.
REFERENCE_HOME_MATCH=2131:- Moscow Router Homepage card target after fixed apply: href http://[PRIVATE_IP]:5080, siteMonitor http://[PRIVATE_IP]:18083/router-moscow.
REFERENCE_HOME_MATCH=2132:- Fixed updater handles Homepage service-name-key YAML shape and property-style YAML shape.
REFERENCE_HOME_MATCH=2136:- Moscow Router Homepage card exact active YAML shape was service-key style.
REFERENCE_HOME_MATCH=2567:## HOMEPAGE_EXTERNAL_SMARTAPE_AND_SITES_OK_20260702
REFERENCE_HOME_MATCH=2568:- Homepage services.yaml repaired with YAML-aware edit after bad indentation issue.
REFERENCE_HOME_MATCH=2572:- Proof: /root/evidence/671_HOMEPAGE_EXTERNAL_SMARTAPE_AND_SITES_OK_20260702_PROOF.txt
REFERENCE_HOME_MATCH=2589:- Removed obsolete NPMplus route aliases without Homepage cards: auth.vpn.gram1.ru, gitea.vpn.gram1.ru, homepage.vpn.gram1.ru, kuma.vpn.gram1.ru.
REFERENCE_HOME_MATCH=2593:## HOMELAB_HOMEPAGE_AND_TAFTAUTO_FINAL_OK_20260702
REFERENCE_HOME_MATCH=2594:- Homepage final layout/category state confirmed: YAML validates, categories use row/columns layout, logs show no YAMLException.
REFERENCE_HOME_MATCH=2599:- Proof: /root/evidence/677_HOMELAB_HOMEPAGE_AND_TAFTAUTO_FINAL_OK_20260702_PROOF.txt
REFERENCE_HOME_MATCH=2614:- 677 is current final Homepage/TaftAuto authority; 678 is current Cloudflare token audit authority.
REFERENCE_HOME_MATCH=2617:## HOMEPAGE_LOCAL_HEALTH_MONITORS_OK_20260702
REFERENCE_HOME_MATCH=2618:- Local edge health endpoint is used for Homepage monitoring of Роутер Москва and NPMplus.
REFERENCE_HOME_MATCH=2621:- Homepage YAML validates and logs show no YAMLException.
REFERENCE_HOME_MATCH=2622:- Proof: /root/evidence/681_HOMEPAGE_LOCAL_HEALTH_MONITORS_OK_20260702_PROOF.txt
REFERENCE_HOME_MATCH=2624:## HOMEPAGE_SELF_CARD_REMOVED_FROM_CORE_20260702
REFERENCE_HOME_MATCH=2625:- Removed Homepage self-referential card from Core.
REFERENCE_HOME_MATCH=2626:- Homepage YAML validates and logs show no YAMLException.
REFERENCE_HOME_MATCH=2627:- Proof: /root/evidence/682_HOMEPAGE_SELF_CARD_REMOVED_FROM_CORE_20260702_PROOF.txt
REFERENCE_HOME_MATCH=2664:- TaftAuto, Homepage, Cloudflare tokens, evidence map, cert hooks, deploy guards, public HTTPS, route/cert mapping, and secret scan are documented.
REFERENCE_HOME_MATCH=2679:## HOMEPAGE_RU_LAYOUT_MONITORING_PROPOSALS_20260702
REFERENCE_HOME_MATCH=2680:- Homepage live config is on core-apps VM [PRIVATE_IP] under /opt/stacks/homepage/config.
REFERENCE_HOME_MATCH=2685:- Red badges after migration were primarily caused by Homepage container resolving *.vpn.gram1.ru to edge NetBird IP and timing out; fixed by mapping vpn hostnames to edge LAN [PRIVATE_IP] in Homepage compose extra_hosts.
REFERENCE_HOME_MATCH=2688:- Missing-card proposal report: /var/lib/homelab-health/homepage-missing-card-proposals-final.txt.
REFERENCE_HOME_MATCH=2697:- Recommended next monitors are P0 only after operator approval: Router Moscow Health, Backup/Restore Dashboard, Restore Drill Index, NetBird Peers, CrowdSec CAPI, Paperless Restore.
REFERENCE_HOME_MATCH=2707:- Approved Uptime Kuma monitor batch installed after Homepage/Kuma analysis.
REFERENCE_HOME_MATCH=2715:  - Backup Restore Dashboard -> http://[PRIVATE_IP]:9101/backup-restore-dashboard.txt
REFERENCE_HOME_MATCH=2725:  - backup-restore-dashboard.txt
REFERENCE_HOME_MATCH=2766:- Per-service done criteria: URL, TLS, admin, SSO decision, volumes, backup, restore test, Kuma, Homepage, docs.
REFERENCE_HOME_MATCH=2984:Homepage canonical=https://kingofwolk.ru/
REFERENCE_HOME_MATCH=2986:Legacy homepage forum links with index.php? absent.
REFERENCE_HOME_MATCH=2989:robots.txt intentionally absent; XenForo returns HTTP 404 and page indexing is not blocked. Homepage has no noindex meta/X-Robots-Tag.
REFERENCE_HOME_MATCH=3045:Style2 extra.less hides only the homepage forum_list H1 via body[data-template="forum_list"] .p-title-value { display:none; }.
REFERENCE_HOME_MATCH=3058:Header wordmark centered through style2 extra.less. Duplicate homepage H1 hidden only for body[data-template="forum_list"]; forum_view H1 remains visible.
REFERENCE_HOME_MATCH=3059:Public no-cookie homepage and forum HTTP 200 with style s=2; sitemap HTTP 200 with 11 loc entries; private 192.168.50.x leak absent.
REFERENCE_HOME_MATCH=3082:Public homepage HTTP 200 verifies both xenforo.info attribution and the KingOfWolk line, with KingOfWolk appearing after the localization entry.
REFERENCE_HOME_MATCH=3093:Public PNG returns HTTP 200 with image/png and exact expected SHA256. Public homepage remains HTTP 200 with no 192.168.50.x leak.
REFERENCE_HOME_MATCH=3168:## KINGOFWOLK_ADMIN_DASHBOARD_WARNINGS_CLEARED_20260903
ERRORREG_HOME_MATCH_COUNT=40
ERRORREG_HOME_MATCH=109:Команда 138 пересобрала dashboard, но диагностический Python-блок упал с NameError из-за кавычек.
ERRORREG_HOME_MATCH=110:Не использовать heredoc Python внутри вложенного ssh; для dashboard verification использовать cat/grep JSON или простые команды.
ERRORREG_HOME_MATCH=194:- Rule: home portal closure requires current Homepage API-error logs to be zero after restart/reload, not only HTTP 200.
ERRORREG_HOME_MATCH=195:- If Homepage UI shows API error or logs contain current httpProxy/API timeout errors, the portal is REVIEW until the widget/API cause is disabled or fixed.
ERRORREG_HOME_MATCH=204:- Rule: Homepage cleanup validation must check active config files only, not logs or backup files.
ERRORREG_HOME_MATCH=205:- Active files are services.yaml, bookmarks.yaml, widgets.yaml, settings.yaml and docker.yaml under /opt/stacks/homepage/config.
ERRORREG_HOME_MATCH=209:- Rule: Homepage link validation must not treat HTTP 200 as success if the body is the NPMPlus default “Congratulations” / host-not-set-up page.
ERRORREG_HOME_MATCH=214:- Context: attempted Netcraze router ACL apply through SSH stdin/multiline for Homepage Moscow Router monitor fix.
ERRORREG_HOME_MATCH=242:- Context: proof 400 tested Moscow router HTTPS monitor from Homepage container with custom Node lookup callback.
ERRORREG_HOME_MATCH=248:- Context: Moscow Router Homepage monitor after ACL fix.
ERRORREG_HOME_MATCH=251:- Impact: Homepage siteMonitor cannot be made green via direct router HTTP URL until router web service allows the Bridge1/Proxmox/protected segment or an explicit safe monitor endpoint is used.
ERRORREG_HOME_MATCH=262:- Context: Moscow Router Homepage siteMonitor attempt using http://[PRIVATE_IP]:5080.
ERRORREG_HOME_MATCH=263:- Evidence: proof 405 showed route to [PRIVATE_IP] via Docker bridge and Homepage container ECONNRESET.
ERRORREG_HOME_MATCH=264:- Impact: do not use [PRIVATE_IP] directly as Homepage siteMonitor from edge-vm.
ERRORREG_HOME_MATCH=265:- Mitigation: use dedicated edge-vm health endpoint that checks router TCP [PRIVATE_IP]:5080 and returns HTTP 200/503 for Homepage.
ERRORREG_HOME_MATCH=267:## HOMEPAGE_ROUTER_MOSCOW_YAML_TITLE_SHAPE_MISMATCH_20260701
ERRORREG_HOME_MATCH=268:- Context: applying Moscow Router Homepage siteMonitor health endpoint.
ERRORREG_HOME_MATCH=269:- Mistake: assistant apply script matched only property-style cards with `title`, but active Homepage YAML can use service-name-key style like `- Service Name:`.
ERRORREG_HOME_MATCH=273:## HOMEPAGE_ROUTER_MOSCOW_APPLY_SCRIPT_SYNTAX_ERROR_20260701
ERRORREG_HOME_MATCH=274:- Context: applying Moscow Router Homepage health endpoint.
ERRORREG_HOME_MATCH=276:- Evidence: proof 408 showed SyntaxError in /tmp/homepage-router-moscow-apply-fixed.py.
ERRORREG_HOME_MATCH=277:- Actual impact: YAML was not changed, so Homepage green dot could not appear.
ERRORREG_HOME_MATCH=624:## HOMEPAGE_SERVICES_YAML_BAD_INDENT_20260702
ERRORREG_HOME_MATCH=625:- Assistant inserted Homepage services.yaml entries with wrong indentation; YAMLException bad indentation at line 227.
ERRORREG_HOME_MATCH=628:## HOMEPAGE_SERVICES_YAML_BAD_INDENT_REPAIR_20260702
ERRORREG_HOME_MATCH=643:## HOMEPAGE_XENFORO_INFO_INLINE_PYTHON_SYNTAX_ERROR_20260702
ERRORREG_HOME_MATCH=644:- Assistant used invalid inline Python syntax with def after semicolon while adding XenForo.info to Homepage External.
ERRORREG_HOME_MATCH=647:## HOMEPAGE_USEFUL_ROUTER_NAME_MISMATCH_20260702
ERRORREG_HOME_MATCH=648:- Previous apply looked for Russian Router card name, but active Homepage Useful group contains Router and Public Domain.
ERRORREG_HOME_MATCH=651:## HOMEPAGE_USEFUL_ROUTER_CARD_NOT_FOUND_20260702
ERRORREG_HOME_MATCH=653:- Need verify active Homepage config path, docker mount, and any alternate services.yaml before next apply.
ERRORREG_HOME_MATCH=668:## LESSON_20260702_HOMEPAGE_MONITORS_REPAIR_NOT_DELETE
ERRORREG_HOME_MATCH=669:- Do not delete or disable Homepage siteMonitor fields to hide red badges.
ERRORREG_HOME_MATCH=671:- Do not touch Cloudflare Homepage card when operator says it is green and opens correctly.
ERRORREG_HOME_MATCH=672:- Before changing Homepage, identify the live config host; in this state live Homepage is on core-apps [PRIVATE_IP], not edge-vm.
ERRORREG_HOME_MATCH=2544:## KOW_ADMIN_DASHBOARD_WARNINGS_POST_FINAL_20260903
ERRORREG_HOME_MATCH=2546:Scope: KingOfWolk XenForo admin dashboard after technical-final checkpoint.
ERRORREG_HOME_MATCH=2547:Observed: admin dashboard reports potentially outdated templates and existing server error-log entries.
ERRORREG_HOME_MATCH=2575:## KOW_ADMIN_DASHBOARD_WARNINGS_POST_FINAL_20260903_CLOSURE
ERRORREG_HOME_MATCH=2577:Current xf_error_log is empty, so the server-error dashboard warning has no live entries.
DNS_GETENT_RC=0
DNS_GETENT_BEGIN
[PRIVATE_IP]   STREAM home.gram1.ru
[PRIVATE_IP]   DGRAM  
[PRIVATE_IP]   RAW    
DNS_GETENT_END
DNS_DIG_A_RC=0
DNS_DIG_A_BEGIN
[PRIVATE_IP]
DNS_DIG_A_END
DNS_DIG_CNAME_RC=0
HTTPS_HEADERS_RC=0
HTTPS_HEADERS_BEGIN
HTTP/2 200 
date: Fri, 18 Sep 2026 22:22:12 GMT
content-type: text/html; charset=utf-8
content-length: 70393
vary: Accept-Encoding
cache-control: s-maxage=31536000
etag: "6etjfbh43j1bgc"
vary: Accept-Encoding
origin-agent-cluster: ?1
x-dns-prefetch-control: off
x-content-type-options: nosniff
x-permitted-cross-domain-policies: none
referrer-policy: strict-origin-when-cross-origin
x-frame-options: SAMEORIGIN

HTTPS_HEADERS_END
HTTPS_STATUS_RC=0
HTTPS_STATUS_BEGIN
HTTP=200 IP=[PRIVATE_IP] TLS=20 REDIR=
HTTPS_STATUS_END
HTTPS_BODY_RC=0
HTTPS_BODY_SAMPLE_BEGIN
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" data-next-head=""/><title data-next-head="">Homelab</title><meta name="description" content="A highly customizable homepage (or startpage / application dashboard) with Docker and service API integrations." data-next-head=""/><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?v=4" data-next-head=""/><link rel="shortcut icon" href="/homepage.ico" data-next-head=""/><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png?v=4" data-next-head=""/><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png?v=4" data-next-head=""/><link rel="mask-icon" href="/safari-pinned-tab.svg?v=4" color="#1e9cd7" data-next-head=""/><meta name="msapplication-TileColor" content="#1e293b" data-next-head=""/><meta name="theme-color" content="#1e293b" data-next-head=""/><meta name="color-scheme" content="dark light" data-next-head=""/><meta name="mobile-web-app-capable" content="yes"/><link rel="manifest" href="/site.webmanifest?v=4" crossorigin="use-credentials"/><link rel="preload" href="/api/config/custom.css" as="style"/><link data-next-font="" rel="preconnect" href="/" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/e4faaa8089dcb222.css" as="style"/><link rel="stylesheet" href="/api/config/custom.css"/> <!-- --><link rel="stylesheet" href="/_next/static/css/e4faaa8089dcb222.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script defer="" src="/_next/static/chunks/1442.35f044d5ef517779.js"></script><script src="/_next/static/chunks/webpack-e2b640019ecb8b02.js" defer=""></script><script src="/_next/static/chunks/framework-822448c3a836f0f5.js" defer=""></script><script src="/_next/static/chunks/main-b5e936807838a5d0.js" defer=""></script><script src="/_next/static/chunks/pages/_app-24c2b3b505e9562c.js" defer=""></script><script src="/_next/static/chunks/d5a1cbc3-95845e5c5cc8b673.js" defer=""></script><script src="/_next/static/chunks/2945be7e-9327ce2403991fa0.js" defer=""></script><script src="/_next/static/chunks/2724c893-285efe8c5ac0788d.js" defer=""></script><script src="/_next/static/chunks/b5933508-4fe1e6c387f52be1.js" defer=""></script><script src="/_next/static/chunks/989af13b-ee76f12c33b662f0.js" defer=""></script><script src="/_next/static/chunks/3fcf0381-f70668124b7127a3.js" defer=""></script><script src="/_next/static/chunks/7405-84db82367d92a634.js" defer=""></script><script src="/_next/static/chunks/pages/index-a5941d91a7f6e37f.js" defer=""></script><script src="/_next/static/IkxHGQaChqSk-YL8dZrUE/_buildManifest.js" defer=""></script><script src="/_next/static/IkxHGQaChqSk-YL8dZrUE/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div id="page_wrapper" class="relative h-full"><div id="inner_wrapper" tabindex="-1" class="w-full h-full overflow-auto"><div class="container relative m-auto flex flex-col justify-start z-10 h-full min-h-screen"><div class="relative z-40 ease-in-out duration-300 transition-opacity hidden opacity-0" role="dialog" aria-modal="true"><div class="fixed inset-0 bg-gray-500 opacity-50"></div><div class="fixed inset-0 z-20 overflow-y-auto"><div class="flex min-h-full min-w-full items-start justify-center text-center"><dialog class="mt-[10%] mx-auto min-w-[90%] max-w-[90%] md:min-w-[40%] md:max-w-[40%] rounded-md p-0 block font-medium text-theme-700 dark:text-theme-200 dark:hover:text-theme-300 shadow-md shadow-theme-900/10 dark:shadow-theme-900/20 bg-theme-50 dark:bg-theme-800"><input placeholder="Search" class="rounded-md w-full p-4 m-0 border-0 border-b border-slate-700 focus:border-slate-700 focus:outline-0 focus:ring-0 text-sm md:text-xl text-theme-700 dark:text-theme-200 bg-theme-60 dark:bg-theme-800" type="text" autoCorrect="false" value=""/></dialog></div></div></div><div id="information-widgets" class="flex flex-row flex-wrap justify-between z-20 m-5 mb-0 sm:m-9 sm:mb-1 border-b-2 pb-4 border-theme-800 dark:border-theme-200/50"><div id="widgets-wrap" class="flex flex-row w-full flex-wrap justify-between gap-x-2"><div id="information-widgets-right" class="m-auto flex flex-wrap grow sm:basis-auto justify-between md:justify-end m-auto flex flex-wrap grow sm:basis-auto justify-between md:justify-end gap-x-2"><div class="flex flex-col justify-center information-widget-datetime widget-container"><div class="flex flex-row items-center grow justify-end"><span class="text-theme-800 dark:text-theme-200 tabular-nums text-xl"></span></div></div></div></div></div><div></div><div id="footer" class="flex flex-col mt-auto p-8 w-full"><div id="style" class="flex w-full justify-end"><div id="revalidate" class="rounded-full flex align-middle self-center mr-3"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" class="text-theme-800 dark:text-theme-200 w-6 h-6 cursor-pointer" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h24v24H0z"></path><path d="M17.65 6.35A7.958 7.958 0 0 0 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08A5.99 5.99 0 0 1 12 18c-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"></path></svg></div></div><div id="version" class="flex mt-4 w-full justify-end"></div></div></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"initialSettings":{"title":"Homelab","language":"ru","theme":"dark","color":"slate","headerStyle":"boxed","statusStyle":"dot","hideVersion":true,"useEqualHeights":true,"layout":{"Сайты":{"style":"row","columns":6},"Ядро":{"style":"row","columns":6},"Мониторинг":{"style":"row","columns":6},"Администрирование":{"style":"row","columns":6},"Приложения":{"style":"row","columns":6},"Файлы, медиа и синхронизация
HTTPS_BODY_SAMPLE_END
PVE_HOME_GREP_RC=0
PVE_HOME_GREP_BEGIN
/etc/pve/HOMEPAGE_BACKUP_COVERAGE_MATRIX.md.bak-corrected-20260630T185336Z:9:| Homepage | https://home.gram1.ru | 190 | 4 | 92 | EVIDENCE_FOUND_REVIEW |
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:444:## 47. homepage
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:447:STATUS=OK TS=2026-07-09T20:55:37Z TYPE=service-readiness-final BAD=0 SERVICE=homepage HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK URL=https://home.gram1.ru STATE=container:running/healthy,config:backed-by-dockge-stacks
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:451:- Public `https://home.gram1.ru/ = 200`.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:456:- `/var/lib/homelab-health/homepage-final-status.txt` OK.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:540:STATUS=OK TS=2026-07-09T20:58:13Z TYPE=external-homepage-link-classification BAD=0 TARGET=https://aleisaevn.netcraze.pro:5083/ HOST=aleisaevn.netcraze.pro PORT=5083 HOMEPAGE_LINK=YES NPMPLUS_ROUTE=absent LOCAL_SERVICE=absent BACKUP_SCOPE=not_applicable SERVICE_READINESS_SCOPE=external_link_not_homelab_managed PUBLIC_CODE=000 TCP_RC=124 NOTE=tracked_as_external_reference_not_counted_as_internal_service
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:738:homepage
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:4450:  - роль: live Homepage container `homepage`, большинство app services.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:4521:- Container: `homepage`.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:4523:  - `/opt/stacks/homepage/config/services.yaml`
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:4524:  - `/opt/stacks/homepage/config/settings.yaml`
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:4525:  - `/opt/stacks/homepage/config/bookmarks.yaml`
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:4527:  - `/opt/stacks/homepage/compose.yaml`
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:4576:- `home.gram1.ru`
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:4577:- `homepage.vpn.gram1.ru`
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:4661:- `/var/lib/homelab-health/backup-restore-dashboard.txt` -> `STATUS=OK`
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:5699:- Grafana для dashboards;
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:5963:5. backup dashboards.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:6524:  - `https://home.gram1.ru`
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:6526:  - `homepage`
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:6528:  - `/opt/stacks/homepage/config/services.yaml`
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:6529:  - `/opt/stacks/homepage/config/settings.yaml`
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:6530:  - `/opt/stacks/homepage/config/bookmarks.yaml`
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:6720:| External | Cloudflare | https://dash.cloudflare.com | external | Cloudflare dashboard |
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:6908:- line 1459: `### Backup dashboard / SLO interpretation`
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:6956:### edge/npmplus/homepage
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:6967:- line 1049: `### Runtime dashboard semantics`
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:6971:- line 1459: `### Backup dashboard / SLO interpretation`
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:7230:| 1049 | `### Runtime dashboard semantics` |
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:7278:| 1459 | `### Backup dashboard / SLO interpretation` |
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:7541:- `https://home.gram1.ru`
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:7542:- `https://home.gram1.ru/`
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:7595:- `/opt/stacks/homepage/config.`
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:7659:- `/tmp/homepage-router-moscow-apply-fixed.py.`
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:8030:HEALTH_NOT_OK item=backup-restore-dashboard.txt line=STATUS=WARN TS=2026-06-29T18:10:09Z ITEMS=80 NOT_OK=13
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:8037:HEALTH_NOT_OK item=homepage-service-catalog-slo.txt line=STATUS=WARN
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:8101:- Проверить backup-restore-dashboard: STATUS=WARN, NOT_OK=13.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:8142:- Runtime dashboard: STATUS=OK, ITEMS=69, NOT_OK=0.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:8144:- SLO/coverage WARN files: moved out of runtime dashboard into slo-coverage-backlog-index.txt.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:8343:- edge-vm owns most application health, dashboard, ingress, backup, NetBox, NPMplus, certificate, Trivy and vulnerability jobs.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:8403:- edge-vm timers cover runtime dashboard, Paperless guard, external canary, health metrics, restore drill index, AdGuard rewrite sync, NPMplus cert expiry, NetBox backup/sync, retention, cluster daily status, vulnerability and Trivy scans, ingress hardening and NPMplus admin bind.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:8652:- home.gram1.ru -> http://127.0.0.1:3000, cert=27, ssl_forced=1, enabled=1.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:8663:- homepage.vpn.gram1.ru -> http://127.0.0.1:3000, cert=32.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:8701:- cert=27: home.gram1.ru, expires 2026-09-13 16:43:44.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:8747:- homepage.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:8779:- Admin/dashboard: homepage, dockge, netbox, dozzle, NPMplus VPN admin.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:8833:- Backup health dashboard: STATUS=OK, ITEMS=69, NOT_OK=0 at 2026-06-30T10:10:06Z.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:8835:- SLO coverage is tracked separately from runtime dashboard. It had WARN backlog in backup-restore-coverage-slo with APP_TOTAL=43, GREEN=3, YELLOW=21, RED=19, MISSING_BACKUP_SIGNAL=31, MISSING_RESTORE_SIGNAL=28, MISSING_TIMER=31.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:9055:### Runtime dashboard semantics
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:9056:- backup-restore-dashboard.txt is an authoritative runtime dashboard file.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:9057:- Current observed runtime dashboard: STATUS=OK, ITEMS=69, NOT_OK=0.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:9058:- backup-restore-dashboard.json confirmed not_ok=[].
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:9066:- Uptime Kuma local endpoint returns HTTP 302 to /dashboard, which is expected for UI auth/redirect.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:9078:- Runtime dashboard OK does not mean SLO backlog is closed.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:9081:- Other observed WARN backlog files include container-image-lifecycle-slo, cron-job-monitoring-slo, direct-heartbeat-pilot-readiness, healthchecks-heartbeat-coverage, healthchecks-job-coverage, healthchecks-job-monitoring-slo, homepage-service-catalog-slo, ingress-dns-route-slo, observability-health-surface-slo and security-vulnerability-slo.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:9318:| home.gram1.ru | http://127.0.0.1:3000 | edge-vm / homepage | homepage container, dashboard route |
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:9325:| backup.gram1.ru | http://[PRIVATE_IP]:9101 | pve01 / homelab-health-http | backup dashboard and health proofs |
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:9331:| homepage.vpn.gram1.ru | http://127.0.0.1:3000 | homepage |
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:9465:### Backup dashboard / SLO interpretation
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:9466:- Runtime dashboard OK means current operational checks are green.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:9519:- Monitoring, alerting, health dashboard and Prometheus correction.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:9591:- Backup/cloud/restore improvement pass is closed with runtime dashboard STATUS=OK and NOT_OK=0.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:9616:- Runtime backup dashboard remains STATUS=OK with NOT_OK=0.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:9654:- edge-vm units checked: P2 small-stacks backup/restore, backup dashboard and restore drill index.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:9684:- edge-vm services checked: P2 small-stacks backup/restore, backup dashboard and restore drill index.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:9702:- edge-vm timers checked: P2 small-stacks backup/restore, backup dashboard and restore drill index.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:9778:- edge-vm services checked: P2 small-stacks backup/restore, backup dashboard and restore drill index.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:9848:- Also verify service results, health status/age, Mail-cloud directories, dashboard, restore index, Prometheus firing alerts and Alertmanager readiness.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:9868:- Home portal discovery started for https://home.gram1.ru/.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:9870:- Discovery proof records DNS, HTTPS/TLS headers, reverse-proxy candidates, compose files, domain references and homepage config candidates without printing secrets.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:9874:- Home portal config and service inventory was collected for https://home.gram1.ru/.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:9879:- Home portal gap analysis was collected for gethomepage/homepage behind npmplus.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:9999:- Active Homepage URL: https://home.gram1.ru.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:10527:Команда 138 пересобрала dashboard, но диагностический Python-блок упал с NameError из-за кавычек.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:10528:Не использовать heredoc Python внутри вложенного ssh; для dashboard verification использовать cat/grep JSON или простые команды.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:10623:- Active files are services.yaml, bookmarks.yaml, widgets.yaml, settings.yaml and docker.yaml under /opt/stacks/homepage/config.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:10694:- Evidence: proof 408 showed SyntaxError in /tmp/homepage-router-moscow-apply-fixed.py.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:10955:* pve03 cloud: edge-vm, ingress, NPMplus, monitoring, homepage, часть critical configs.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:11072:* сделать отдельный dashboard “Can I restore?”;
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:11075:Сейчас reference прямо говорит: runtime dashboard OK, но SLO backlog не закрыт, и в старой модели было `MISSING_EXTERNAL_VALIDATION=43`.  Вот это надо закрывать.
/etc/pve/HOMELAB_FULL_HANDOFF_HISTORICAL_2026-07-09.md:11121:7. Сделать dashboard “Backup/Restore SLO”, где нет `MISSING_*`.
/etc/pve/HOMEPAGE_BACKUP_COVERAGE_MATRIX.md:28:| Homepage | https://home.gram1.ru | 190 | 4 | 96 | EVIDENCE_FOUND_REVIEW |
/etc/pve/31_HOMELAB_REFERENCE.md:82:HEALTH_NOT_OK item=backup-restore-dashboard.txt line=STATUS=WARN TS=2026-06-29T18:10:09Z ITEMS=80 NOT_OK=13
/etc/pve/31_HOMELAB_REFERENCE.md:89:HEALTH_NOT_OK item=homepage-service-catalog-slo.txt line=STATUS=WARN
/etc/pve/31_HOMELAB_REFERENCE.md:153:- Проверить backup-restore-dashboard: STATUS=WARN, NOT_OK=13.
/etc/pve/31_HOMELAB_REFERENCE.md:194:- Runtime dashboard: STATUS=OK, ITEMS=69, NOT_OK=0.
/etc/pve/31_HOMELAB_REFERENCE.md:196:- SLO/coverage WARN files: moved out of runtime dashboard into slo-coverage-backlog-index.txt.
/etc/pve/31_HOMELAB_REFERENCE.md:395:- edge-vm owns most application health, dashboard, ingress, backup, NetBox, NPMplus, certificate, Trivy and vulnerability jobs.
/etc/pve/31_HOMELAB_REFERENCE.md:455:- edge-vm timers cover runtime dashboard, Paperless guard, external canary, health metrics, restore drill index, AdGuard rewrite sync, NPMplus cert expiry, NetBox backup/sync, retention, cluster daily status, vulnerability and Trivy scans, ingress hardening and NPMplus admin bind.
/etc/pve/31_HOMELAB_REFERENCE.md:704:- home.gram1.ru -> http://127.0.0.1:3000, cert=27, ssl_forced=1, enabled=1.
/etc/pve/31_HOMELAB_REFERENCE.md:715:- homepage.vpn.gram1.ru -> http://127.0.0.1:3000, cert=32.
/etc/pve/31_HOMELAB_REFERENCE.md:753:- cert=27: home.gram1.ru, expires 2026-09-13 16:43:44.
/etc/pve/31_HOMELAB_REFERENCE.md:799:- homepage.
/etc/pve/31_HOMELAB_REFERENCE.md:831:- Admin/dashboard: homepage, dockge, netbox, dozzle, NPMplus VPN admin.
/etc/pve/31_HOMELAB_REFERENCE.md:885:- Backup health dashboard: STATUS=OK, ITEMS=69, NOT_OK=0 at 2026-06-30T10:10:06Z.
/etc/pve/31_HOMELAB_REFERENCE.md:887:- SLO coverage is tracked separately from runtime dashboard. It had WARN backlog in backup-restore-coverage-slo with APP_TOTAL=43, GREEN=3, YELLOW=21, RED=19, MISSING_BACKUP_SIGNAL=31, MISSING_RESTORE_SIGNAL=28, MISSING_TIMER=31.
/etc/pve/31_HOMELAB_REFERENCE.md:1107:### Runtime dashboard semantics
/etc/pve/31_HOMELAB_REFERENCE.md:1108:- backup-restore-dashboard.txt is an authoritative runtime dashboard file.
/etc/pve/31_HOMELAB_REFERENCE.md:1109:- Current observed runtime dashboard: STATUS=OK, ITEMS=69, NOT_OK=0.
/etc/pve/31_HOMELAB_REFERENCE.md:1110:- backup-restore-dashboard.json confirmed not_ok=[].
/etc/pve/31_HOMELAB_REFERENCE.md:1118:- Uptime Kuma local endpoint returns HTTP 302 to /dashboard, which is expected for UI auth/redirect.
/etc/pve/31_HOMELAB_REFERENCE.md:1130:- Runtime dashboard OK does not mean SLO backlog is closed.
/etc/pve/31_HOMELAB_REFERENCE.md:1133:- Other observed WARN backlog files include container-image-lifecycle-slo, cron-job-monitoring-slo, direct-heartbeat-pilot-readiness, healthchecks-heartbeat-coverage, healthchecks-job-coverage, healthchecks-job-monitoring-slo, homepage-service-catalog-slo, ingress-dns-route-slo, observability-health-surface-slo and security-vulnerability-slo.
/etc/pve/31_HOMELAB_REFERENCE.md:1370:| home.gram1.ru | http://127.0.0.1:3000 | edge-vm / homepage | homepage container, dashboard route |
/etc/pve/31_HOMELAB_REFERENCE.md:1377:| backup.gram1.ru | http://[PRIVATE_IP]:9101 | pve01 / homelab-health-http | backup dashboard and health proofs |
/etc/pve/31_HOMELAB_REFERENCE.md:1383:| homepage.vpn.gram1.ru | http://127.0.0.1:3000 | homepage |
/etc/pve/31_HOMELAB_REFERENCE.md:1517:### Backup dashboard / SLO interpretation
/etc/pve/31_HOMELAB_REFERENCE.md:1518:- Runtime dashboard OK means current operational checks are green.
/etc/pve/31_HOMELAB_REFERENCE.md:1571:- Monitoring, alerting, health dashboard and Prometheus correction.
/etc/pve/31_HOMELAB_REFERENCE.md:1643:- Backup/cloud/restore improvement pass is closed with runtime dashboard STATUS=OK and NOT_OK=0.
/etc/pve/31_HOMELAB_REFERENCE.md:1668:- Runtime backup dashboard remains STATUS=OK with NOT_OK=0.
/etc/pve/31_HOMELAB_REFERENCE.md:1706:- edge-vm units checked: P2 small-stacks backup/restore, backup dashboard and restore drill index.
/etc/pve/31_HOMELAB_REFERENCE.md:1736:- edge-vm services checked: P2 small-stacks backup/restore, backup dashboard and restore drill index.
/etc/pve/31_HOMELAB_REFERENCE.md:1754:- edge-vm timers checked: P2 small-stacks backup/restore, backup dashboard and restore drill index.
/etc/pve/31_HOMELAB_REFERENCE.md:1830:- edge-vm services checked: P2 small-stacks backup/restore, backup dashboard and restore drill index.
/etc/pve/31_HOMELAB_REFERENCE.md:1900:- Also verify service resultPVE_HOME_GREP_END
PVE_GUEST_LIST_RC=0
PVE_GUEST_LIST_BEGIN
[{"cpu":0.000896789687129178,"disk":4071989248,"diskread":1173880832,"diskwrite":4806901760,"id":"lxc/110","maxcpu":1,"maxdisk":8350298112,"maxmem":536870912,"mem":99930112,"memhost":0,"name":"dns1","netin":924161380,"netout":393327082,"node":"pve01","status":"running","template":0,"type":"lxc","uptime":1846206,"vmid":110},{"cpu":0.000196843223038017,"disk":2606272512,"diskread":1099710464,"diskwrite":3420061696,"id":"lxc/111","maxcpu":1,"maxdisk":8350298112,"maxmem":536870912,"mem":96784384,"memhost":0,"name":"dns2","netin":784462582,"netout":195434817,"node":"pve02","status":"running","template":0,"type":"lxc","uptime":1846198,"vmid":111},{"cpu":9.96432985699087e-05,"disk":768323584,"diskread":882212864,"diskwrite":1488109568,"id":"lxc/112","maxcpu":1,"maxdisk":8350298112,"maxmem":536870912,"mem":52785152,"memhost":0,"name":"unbound1","netin":961057355,"netout":178056147,"node":"pve01","status":"running","template":0,"type":"lxc","uptime":1846209,"vmid":112},{"cpu":0,"disk":764411904,"diskread":972832768,"diskwrite":1366802432,"id":"lxc/113","maxcpu":1,"maxdisk":8350298112,"maxmem":536870912,"mem":45662208,"memhost":0,"name":"unbound2","netin":714075865,"netout":86870874,"node":"pve02","status":"running","template":0,"type":"lxc","uptime":1846201,"vmid":113},{"cpu":0.0283772478209682,"disk":0,"diskread":18795840098,"diskwrite":361808464384,"id":"qemu/130","maxcpu":4,"maxdisk":103079215104,"maxmem":12884901888,"mem":12105641984,"memhost":12982788096,"name":"edge-vm","netin":53879827627,"netout":38386685724,"node":"pve03","status":"running","template":0,"type":"qemu","uptime":1846072,"vmid":130},{"cpu":0.00320264754623039,"disk":0,"diskread":750180450,"diskwrite":16402183680,"id":"qemu/150","maxcpu":4,"maxdisk":68719476736,"maxmem":8589934592,"mem":1644724224,"memhost":2274430976,"name":"snikket","netin":1087219613,"netout":438924485,"node":"pve01","status":"running","template":0,"type":"qemu","uptime":1846197,"vmid":150},{"cpu":0.00615088885135206,"disk":0,"diskread":4134157410,"diskwrite":29773604864,"id":"qemu/160","maxcpu":4,"maxdisk":214748364800,"maxmem":8589934592,"mem":7706472448,"memhost":8283156480,"name":"forum-prod","netin":2321005198,"netout":8896203720,"node":"pve02","status":"running","template":0,"type":"qemu","uptime":1846196,"vmid":160},{"cpu":0.0418807756045512,"disk":0,"diskread":11373481570,"diskwrite":455660377600,"id":"qemu/170","maxcpu":4,"maxdisk":128849018880,"maxmem":10737418240,"mem":9968672768,"memhost":10931679232,"name":"core-apps","netin":9272380038,"netout":40801398247,"node":"pve01","status":"running","template":0,"type":"qemu","uptime":1846204,"vmid":170},{"cpu":0.0204476727951632,"disk":0,"diskread":1750438498,"diskwrite":154619225600,"id":"qemu/171","maxcpu":4,"maxdisk":128849018880,"maxmem":8589934592,"mem":4239286272,"memhost":4852531200,"name":"monitoring","netin":55145789438,"netout":4260231212,"node":"pve01","status":"running","template":0,"type":"qemu","uptime":1846201,"vmid":171},{"cpu":0.00197406941363257,"disk":0,"diskread":538767458,"diskwrite":4667667968,"id":"qemu/190","maxcpu":4,"maxdisk":85899345920,"maxmem":8589934592,"mem":1106169856,"memhost":1711665152,"name":"homelab-ops-worker","netin":959940773,"netout":112979833,"node":"pve03","status":"running","template":0,"type":"qemu","uptime":1846068,"vmid":190},{"cpu":0.00394172005689894,"disk":0,"diskread":727174754,"diskwrite":4728750080,"id":"qemu/210","maxcpu":2,"maxdisk":53687091200,"maxmem":4294967296,"mem":1475493888,"memhost":1797382144,"name":"newfi-prod","netin":411687825,"netout":186700048,"node":"pve01","status":"running","template":0,"type":"qemu","uptime":1034670,"vmid":210},{"cpu":0.00394813882726514,"disk":0,"diskread":370041442,"diskwrite":11131665920,"id":"qemu/211","maxcpu":2,"maxdisk":53687091200,"maxmem":4294967296,"mem":1937764352,"memhost":2393133056,"name":"newfi-staging","netin":495042241,"netout":43655373,"node":"pve03","status":"running","template":0,"type":"qemu","uptime":1230596,"vmid":211},{"cpu":0,"disk":0,"diskread":0,"diskwrite":0,"id":"qemu/9130","maxcpu":4,"maxdisk":103079215104,"maxmem":12884901888,"mem":0,"memhost":0,"name":"edge-cold-standby","netin":0,"netout":0,"node":"pve02","status":"stopped","template":0,"type":"qemu","uptime":0,"vmid":9130}]
PVE_GUEST_LIST_END
LOCAL_HOME_GREP_RC=0
LOCAL_HOME_GREP_BEGIN
/usr/local/sbin/homelab-backup-npmplus-kuma-configs:113:  [ "$HOMEPAGE_AUTH_CHECK" = "none" ] || fail "homepage_auth_bad"
/usr/local/sbin/homelab-check-private-vpn-hosts:7:homepage.vpn.gram1.ru
/usr/local/sbin/homelab-check-private-vpn-hosts.real-20260624T131702Z:40:check_host "homepage" "homepage.vpn.gram1.ru" "^200$"
/usr/local/sbin/homelab-check-private-vpn-hosts.real-20260624T131702Z:78:echo "$edge_out" | grep -q "17|\[\"homepage.vpn.gram1.ru\"\].*auth_request=none" || fail "homepage_auth_not_none"
/usr/local/sbin/homelab-check-private-vpn-hosts.real-20260624T131702Z:79:echo "$edge_out" | grep -q "CONF17_AUTH=.*auth_request off" || fail "homepage_conf_not_auth_off"
LOCAL_HOME_GREP_END
PITER_EDGE_HOME_RC=1
PITER_EDGE_HOME_ERR=sudo: interactive authentication is required 
HOME567R1_DECISION=DISCOVERY_COMPLETE
HOME567R1_NEXT_GATE=IDENTIFY_BACKEND_AND_CARD_SOURCE_THEN_MUTATE
HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-260919-HOME-GRAM1-DISCOVERY-READONLY-567R1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null}

OUTPUT_END
CHAT_OUTPUT_END
