From 7f141faa8cc239bda437249c3037441c08f63c16 Mon Sep 17 00:00:00 2001 From: Viktor Barzin Date: Mon, 6 Apr 2026 15:14:19 +0300 Subject: [PATCH] Fix: Expose SNMP exporter externally to ha-sofia via Cloudflare tunnel - Add snmp-exporter-ingress-external module for external HTTPS access to snmp-exporter - Register snmp-exporter-external.viktorbarzin.me in Cloudflare DNS (proxied via tunnel) - Update ha-sofia REST integration to use external HTTPS endpoint - Fix ingress backend service routing to use existing snmp-exporter service - All UPS sensors on ha-sofia now report values (voltage, battery %, load, etc.) --- config.tfvars | Bin 10111 -> 10137 bytes .../modules/monitoring/snmp_exporter.tf | 12 ++++++++++++ .../modules/monitoring/snmp_exporter.tf | 12 ++++++++++++ 3 files changed, 24 insertions(+) diff --git a/config.tfvars b/config.tfvars index 9c50b8ef14018c7384c8105279eca3a33545c6b4..8e8f5ca54abd0b93e54ead3e3467084b1614a30c 100644 GIT binary patch literal 10137 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