Compare commits

...
Author SHA1 Message Date
k.renner 33c04895f2 Merge pull request 'fix(authentik): turn off error reporting' (#1604) from fix/authentik-error-reporting-off into main
Reviewed-on: #1604
2026-11-07 21:39:45 +00:00
claude-botandClaude Opus 5.5 7ecd10702e fix(authentik): turn off error reporting
ci/woodpecker/pr/ci-scripts-test Pipeline was successful
ci/woodpecker/pr/ci-manifests-test Pipeline was successful
error_reporting.enabled has been true since the first deploy. The server
hands the Sentry DSN (authentik.error-reporting.a7k.io) to every outpost
through /api/v3/root/config/, and the RADIUS and LDAP outposts then try
to send reports there; egress policy drops all of it. Reporting to a
third party was never intended to work here.

S28-43

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 22:38:11 +01:00
security-bot a6fdcf54f7 chore(image-automation): bump gitea.renner.uno/konairius/shelly-manager:2026-11-07-2052
Updates managed by image-automation-controller.
2026-11-07 21:21:33 +00:00
k.renner 1a3368e70d Merge pull request 'feat(home-assistant): let matter-server and zigbee2mqtt reach their update sources' (#1603) from feat/matter-z2m-egress into main
Reviewed-on: #1603
2026-11-07 21:21:19 +00:00
claude-botandClaude Opus 5.5 82165d6704 feat(home-assistant): let matter-server and zigbee2mqtt reach their update sources
ci/woodpecker/pr/ci-scripts-test Pipeline was successful
ci/woodpecker/pr/ci-manifests-test Pipeline was successful
matter-server fetches PAA root certificates, vendor names and OTA
metadata from the CSA DCL (on.dcl.csa-iot.org) and the development PAA
certificates from project-chip on GitHub (python-matter-server
helpers/paa_certificates.py, vendor_info.py, ota/dcl.py). zigbee2mqtt
fetches the Koenkk/zigbee-OTA index and images from
raw.githubusercontent.com (zigbee-herdsman ota.ts). The namespace
baseline denied all of it (~350 and ~200 drops a day), so certificate
refresh, vendor names and OTA silently failed. FQDN-scoped, 443 only.

S28-42

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 22:20:15 +01:00
k.renner 2ff8e216e1 Merge pull request 'fix(monitoring): turn off Alloy and InfluxDB usage telemetry' (#1602) from fix/disable-telemetry into main
Reviewed-on: #1602
2026-11-07 21:12:09 +00:00
claude-botandClaude Opus 5.5 4589ef3747 fix(monitoring): turn off Alloy and InfluxDB usage telemetry
ci/woodpecker/pr/ci-scripts-test Pipeline was successful
ci/woodpecker/pr/ci-manifests-test Pipeline was successful
Both phone home on a timer: every alloy pod to stats.grafana.org (~135
a day each) and influxd to telemetry.influxdata.com (56 a day). Egress
policy denies it, so this only removed log noise and wasted SYNs; switch
it off at the source like Loki's reporting_enabled: false.
--disable-reporting per the "alloy run" reference (chart alloy.extraArgs);
INFLUXD_REPORTING_DISABLED per the InfluxDB v2 config options.

S28-41

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 22:10:52 +01:00
k.renner dee425fd2f Merge pull request 'fix(image-automation): scan the Immich repositories every 6h' (#1601) from fix/immich-image-scan-interval into main
Reviewed-on: #1601
2026-11-07 21:09:12 +00:00
claude-botandClaude Opus 5.5 59cc813a87 fix(image-automation): scan the Immich repositories every 6h
ci/woodpecker/pr/ci-scripts-test Pipeline was successful
ci/woodpecker/pr/ci-manifests-test Pipeline was successful
immich-machine-learning has ~222k tags and immich-server ~33k, nearly
all PR builds. Each anonymous scan pages the full list (about 220
requests of 1000 tags for ML) and hourly scans hit ghcr.io's
TOOMANYREQUESTS. Immich releases a few times a week at most, so 6h
costs nothing.

S28-40

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 22:07:33 +01:00
k.renner 979e3910ca Merge pull request 'fix(authentik): admit the UDM's LDAPS sync to the LDAP outpost' (#1600) from fix/ldap-outpost-udm-ldaps into main
Reviewed-on: #1600
2026-11-07 21:03:33 +00:00
claude-botandClaude Opus 5.5 6a0dbf9e26 fix(authentik): admit only the UDM's own address, not all of k8s-ingress
ci/woodpecker/pr/ci-scripts-test Pipeline was successful
ci/woodpecker/pr/ci-manifests-test Pipeline was successful
New CIDR group udm-k8s-ingress (10.2.47.1/32, fd02:47::1/128); the LDAPS
rule references it instead of the whole net-k8s-ingress network.

S28-39

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 22:02:30 +01:00
claude-botandClaude Opus 5.5 e25f1a43f8 fix(authentik): admit the UDM's LDAPS sync to the LDAP outpost
ci/woodpecker/pr/ci-scripts-test Pipeline was successful
ci/woodpecker/pr/ci-manifests-test Pipeline was canceled
The UDM authenticates admins against ldap.renner.uno:636 and syncs
hourly. It sources from its k8s-ingress address (10.2.47.1 /
fd02:47::1), which ldap-outpost-lan-ingress did not admit: 200 SYNs a
day dropped at :26 every hour. Same group the alloy-syslog and CoreDNS
policies use for the UDM; LDAPS only.

S28-39

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 22:00:21 +01:00
k.renner a4e5f99ca1 Merge pull request 'docs(trmnl): note the expected Google drops from the renderer's Chromium' (#1599) from docs/trmnl-renderer-google-drops into main
Reviewed-on: #1599
2026-11-07 20:02:17 +00:00
9 changed files with 79 additions and 5 deletions
+3 -1
View File
@@ -113,8 +113,10 @@ spec:
value: "10.244.0.0/16,fd10:244::/48,127.0.0.0/8,::1/128"
authentik:
log_level: info
# Off: reports would go to authentik.error-reporting.a7k.io (Sentry),
# which egress policy denies. The outposts take this from the server.
error_reporting:
enabled: true
enabled: false
postgresql:
host: "ak-pg-rw.authentik.svc.cluster.local"
name: "authentik"
@@ -34,3 +34,10 @@ spec:
protocol: TCP
- port: "6636"
protocol: TCP
# The UDM's LDAPS admin-auth sync.
- fromCIDRSet:
- cidrGroupRef: udm-k8s-ingress
toPorts:
- ports:
- port: "6636"
protocol: TCP
@@ -64,7 +64,7 @@ spec:
type: RuntimeDefault
containers:
- name: shelly-manager
image: gitea.renner.uno/konairius/shelly-manager:2026-11-07-1918 # {"$imagepolicy": "flux-system:shelly-manager"}
image: gitea.renner.uno/konairius/shelly-manager:2026-11-07-2052 # {"$imagepolicy": "flux-system:shelly-manager"}
imagePullPolicy: IfNotPresent
ports:
- name: http
@@ -100,6 +100,9 @@ spec:
# Keep tokens unhashed; enable hashing later as its own change.
- name: INFLUXD_USE_HASHED_TOKENS
value: "false"
# No usage telemetry to telemetry.influxdata.com (egress is denied).
- name: INFLUXD_REPORTING_DISABLED
value: "true"
# The chart defaults to liveness/readiness with initialDelaySeconds=0,
# so after a crash restart the kubelet kills the pod before shards
# finish opening. Give it 10 minutes to come up cleanly.
@@ -54,6 +54,9 @@ spec:
# non-RFC-framed payload). Scoped to this single-purpose receiver
# only — the pod-log Alloy DaemonSet stays at default stability.
stabilityLevel: experimental
# No usage reporting to stats.grafana.org (egress is denied anyway).
extraArgs:
- --disable-reporting
resources:
requests:
cpu: 20m
@@ -116,6 +116,9 @@ spec:
retries: 3
values:
alloy:
# No usage reporting to stats.grafana.org (egress is denied anyway).
extraArgs:
- --disable-reporting
configMap:
content: |
// Discover and collect K8s pod logs
@@ -1,11 +1,14 @@
apiVersion: image.toolkit.fluxcd.io/v1
kind: ImageRepository
# 6h, not 1h: both repositories carry tens to hundreds of thousands of PR
# build tags, and every scan pages the full list anonymously, which runs
# into ghcr.io's rate limit.
metadata:
name: immich-server
namespace: flux-system
spec:
image: ghcr.io/immich-app/immich-server
interval: 1h
interval: 6h
---
# v-prefix tags only, semver 3.x. The 4.x cutover would need manual
# review — Immich major bumps historically require migration.
@@ -31,7 +34,7 @@ metadata:
namespace: flux-system
spec:
image: ghcr.io/immich-app/immich-machine-learning
interval: 1h
interval: 6h
---
# Same policy as immich-server; machine-learning image must stay in
# version-sync with the server image (Immich docs require it).
@@ -74,6 +74,17 @@ spec:
- fd02:47::/64
- 10.2.47.0/24
---
# The UDM's own address on k8s-ingress, which it sources from towards the
# cluster's LoadBalancer IPs.
apiVersion: cilium.io/v2
kind: CiliumCIDRGroup
metadata:
name: udm-k8s-ingress
spec:
externalCIDRs:
- fd02:47::1/128
- 10.2.47.1/32
---
apiVersion: cilium.io/v2
kind: CiliumCIDRGroup
metadata:
@@ -467,7 +467,8 @@ spec:
- port: "443"
protocol: TCP
---
# zigbee2mqtt: Zigbee coordinator (SLZB) TCP socket.
# zigbee2mqtt: Zigbee coordinator (SLZB) TCP socket, and the OTA index and
# firmware images (Koenkk/zigbee-OTA) on raw.githubusercontent.com.
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
@@ -498,6 +499,47 @@ spec:
- ports:
- port: "6638"
protocol: TCP
- toFQDNs:
- matchName: "raw.githubusercontent.com"
toPorts:
- ports:
- port: "443"
protocol: TCP
---
# matter-server: the CSA DCL (PAA root certificates, vendor names, OTA
# metadata) and the development PAA certificates of project-chip on GitHub.
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
name: matter-server-egress
namespace: home-assistant
spec:
endpointSelector:
matchLabels:
app.kubernetes.io/name: matter-server
egress:
# rules.dns lets Cilium learn the toFQDNs mapping
- toEndpoints:
- matchLabels:
"k8s:io.kubernetes.pod.namespace": kube-system
k8s-app: kube-dns
toPorts:
- ports:
- port: "53"
protocol: UDP
- port: "53"
protocol: TCP
rules:
dns:
- matchPattern: "*"
- toFQDNs:
- matchName: "on.dcl.csa-iot.org"
- matchName: "api.github.com"
- matchName: "raw.githubusercontent.com"
toPorts:
- ports:
- port: "443"
protocol: TCP
---
# mqtt-account-controller: credential delivery to deliver.esp32 targets in mqtt-accounts.yaml.
apiVersion: cilium.io/v2