Remove unused Mosquitto MQTT broker from ringtail

Mosquitto has been dormant since frigate-notify switched from MQTT to
webapi polling (529ba10). Tear down live infra (ArgoCD app, namespace)
and remove all manifests, service-versions entry, services-check, and
doc references.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Erich Blume 2026-03-11 18:37:31 -07:00
commit 40f1568088
18 changed files with 13 additions and 120 deletions

View file

@ -74,7 +74,7 @@ encounter wiki-links (`[[like-this]]`) it is referring to docs/ cards.
### Kubernetes (ArgoCD) ### Kubernetes (ArgoCD)
Most services run in minikube on indri via ArgoCD (app-of-apps, manual sync). GPU workloads (Frigate, Mosquitto, ntfy) run on ringtail's k3s cluster, also managed by ArgoCD. Most services run in minikube on indri via ArgoCD (app-of-apps, manual sync). GPU workloads (Frigate, ntfy) run on ringtail's k3s cluster, also managed by ArgoCD.
**PR workflow:** **PR workflow:**
1. Create branch, modify `argocd/manifests/<service>/` 1. Create branch, modify `argocd/manifests/<service>/`

View file

@ -1,18 +0,0 @@
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: mqtt
namespace: argocd
spec:
project: default
source:
repoURL: ssh://forgejo@forge.ops.eblu.me:2222/eblume/blumeops.git
targetRevision: main
path: argocd/manifests/mosquitto
destination:
server: https://ringtail.tail8d86e.ts.net:6443
namespace: mqtt
syncPolicy:
syncOptions:
- CreateNamespace=true

View file

@ -1,10 +1,6 @@
database: database:
path: /db/frigate.db path: /db/frigate.db
mqtt:
host: mosquitto.mqtt.svc.cluster.local
port: 1883
go2rtc: go2rtc:
streams: streams:
# GableCam IP is reserved in UX7 DHCP config # GableCam IP is reserved in UX7 DHCP config

View file

@ -6,8 +6,6 @@ frigate:
enabled: true enabled: true
interval: 15 interval: 15
mqtt:
enabled: false
alerts: alerts:
general: general:

View file

@ -1,47 +0,0 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mosquitto
namespace: mqtt
spec:
replicas: 1
selector:
matchLabels:
app: mosquitto
template:
metadata:
labels:
app: mosquitto
spec:
containers:
- name: mosquitto
image: eclipse-mosquitto:kustomized
ports:
- containerPort: 1883
name: mqtt
volumeMounts:
- name: config
mountPath: /mosquitto/config/mosquitto.conf
subPath: mosquitto.conf
resources:
requests:
memory: "32Mi"
cpu: "50m"
limits:
memory: "128Mi"
cpu: "100m"
livenessProbe:
tcpSocket:
port: 1883
initialDelaySeconds: 5
periodSeconds: 30
readinessProbe:
tcpSocket:
port: 1883
initialDelaySeconds: 3
periodSeconds: 10
volumes:
- name: config
configMap:
name: mosquitto-config

View file

@ -1,14 +0,0 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: mqtt
resources:
- deployment.yaml
- service.yaml
images:
- name: eclipse-mosquitto
newTag: "2.0.22"
configMapGenerator:
- name: mosquitto-config
files:
- mosquitto.conf

View file

@ -1,3 +0,0 @@
listener 1883
allow_anonymous true
persistence false

View file

@ -1,13 +0,0 @@
---
apiVersion: v1
kind: Service
metadata:
name: mosquitto
namespace: mqtt
spec:
selector:
app: mosquitto
ports:
- name: mqtt
port: 1883
targetPort: 1883

View file

@ -0,0 +1 @@
Remove Mosquitto (MQTT broker) — unused since frigate-notify switched to webapi polling. Deleted ArgoCD app, k8s manifests, namespace, and updated all docs.

View file

@ -39,7 +39,7 @@ Three always-on devices form the infrastructure backbone:
``` ```
- **[[indri]]** runs most services (native and containerized) - **[[indri]]** runs most services (native and containerized)
- **[[ringtail]]** runs GPU workloads (Frigate NVR) and related services (MQTT, ntfy) - **[[ringtail]]** runs GPU workloads (Frigate NVR) and related services (ntfy)
- **[[sifaka]]** provides bulk storage and backup targets - **[[sifaka]]** provides bulk storage and backup targets
- **[[gilbert]]** is the development workstation - **[[gilbert]]** is the development workstation
@ -73,7 +73,7 @@ Services run across three compute targets:
**Minikube on indri (ArgoCD)** — most services run in minikube, managed via ArgoCD from `argocd/manifests/`. See [[apps]] for the application registry. **Minikube on indri (ArgoCD)** — most services run in minikube, managed via ArgoCD from `argocd/manifests/`. See [[apps]] for the application registry.
**K3s on ringtail (ArgoCD)** — GPU workloads and related services run on [[ringtail]]'s single-node k3s cluster. Frigate NVR uses the RTX 4080 for object detection; Mosquitto and ntfy support its alerting pipeline. **K3s on ringtail (ArgoCD)** — GPU workloads and related services run on [[ringtail]]'s single-node k3s cluster. Frigate NVR uses the RTX 4080 for object detection; ntfy supports its alerting pipeline.
## Data Flow ## Data Flow

View file

@ -32,7 +32,7 @@ Primary BlumeOps server. Mac Mini M1 (2020).
- [[caddy]] - Reverse proxy for `*.ops.eblu.me` - [[caddy]] - Reverse proxy for `*.ops.eblu.me`
**Kubernetes (via minikube):** **Kubernetes (via minikube):**
- [[apps|Most k8s applications]] (Frigate, Mosquitto, ntfy migrated to [[ringtail]] k3s) - [[apps|Most k8s applications]] (Frigate, ntfy migrated to [[ringtail]] k3s)
**GUI Applications (manual start required):** **GUI Applications (manual start required):**
- Docker Desktop - Container runtime for minikube - Docker Desktop - Container runtime for minikube

View file

@ -66,8 +66,7 @@ Sync order: `1password-connect-ringtail` -> `external-secrets-crds-ringtail` ->
| Workload | Namespace | Notes | | Workload | Namespace | Notes |
|----------|-----------|-------| |----------|-----------|-------|
| [[frigate]] | `frigate` | NVR with GPU-accelerated detection (RTX 4080) | | [[frigate]] | `frigate` | NVR with GPU-accelerated detection (RTX 4080) |
| [[frigate]]-notify | `frigate` | MQTT-to-ntfy alert bridge | | [[frigate]]-notify | `frigate` | Webapi-to-ntfy alert bridge |
| Mosquitto | `mqtt` | MQTT broker for Frigate events |
| [[authentik]] | `authentik` | OIDC identity provider | | [[authentik]] | `authentik` | OIDC identity provider |
| [[ntfy]] | `ntfy` | Push notification server | | [[ntfy]] | `ntfy` | Push notification server |
| [[ollama]] | `ollama` | LLM inference with GPU (RTX 4080) | | [[ollama]] | `ollama` | LLM inference with GPU (RTX 4080) |

View file

@ -7,7 +7,7 @@ tags:
# Kubernetes Cluster # Kubernetes Cluster
BlumeOps runs two Kubernetes clusters: a Minikube cluster on [[indri]] (most services) and a k3s cluster on [[ringtail]] (GPU workloads, MQTT, notifications). Both are managed by [[argocd]] on indri. BlumeOps runs two Kubernetes clusters: a Minikube cluster on [[indri]] (most services) and a k3s cluster on [[ringtail]] (GPU workloads, notifications). Both are managed by [[argocd]] on indri.
## Cluster Specifications ## Cluster Specifications
@ -41,7 +41,7 @@ Single-node k3s cluster for workloads requiring amd64 or GPU access. See [[ringt
|----------|-------| |----------|-------|
| **Context** | `k3s-ringtail` | | **Context** | `k3s-ringtail` |
| **API Server** | `https://ringtail.tail8d86e.ts.net:6443` | | **API Server** | `https://ringtail.tail8d86e.ts.net:6443` |
| **Workloads** | Frigate (GPU), Mosquitto, ntfy, frigate-notify, nvidia-device-plugin | | **Workloads** | Frigate (GPU), ntfy, frigate-notify, nvidia-device-plugin |
## Related ## Related

View file

@ -34,7 +34,7 @@ Frigate pod (ringtail k3s)
├── /media/frigate — NFS recordings (sifaka) ├── /media/frigate — NFS recordings (sifaka)
└── /db — SQLite (local PVC) └── /db — SQLite (local PVC)
└──→ MQTT (Mosquitto) → frigate-notify → ntfy → mobile └──→ frigate-notify (webapi poll) → ntfy → mobile
``` ```
## Cameras ## Cameras
@ -70,7 +70,7 @@ Two zones are configured: `driveway_entrance` (triggers review alerts for person
## Alerting (frigate-notify) ## Alerting (frigate-notify)
A separate **frigate-notify** pod (`ghcr.io/0x2142/frigate-notify:v0.3.5`) subscribes to Frigate's MQTT events via Mosquitto and pushes alerts to [[ntfy]] on the `frigate-alerts` topic. Alert messages include action buttons linking back to the Frigate review UI. A separate **frigate-notify** pod polls Frigate's webapi every 15 seconds for detection events and pushes alerts to [[ntfy]] on the `frigate-alerts` topic. Alert messages include action buttons linking back to the Frigate review UI.
## Related ## Related

View file

@ -29,10 +29,10 @@ The upstream relay (`ntfy.sh`) is configured so mobile app clients can receive p
## Producers ## Producers
Currently the only producer is **frigate-notify**, which publishes camera detection alerts (person, vehicle, animal) from [[frigate|Frigate]] via MQTT to ntfy: Currently the only producer is **frigate-notify**, which polls Frigate's webapi for camera detection alerts (person, vehicle, animal) and forwards them to ntfy:
``` ```
Frigate → MQTT (Mosquitto) → frigate-notify → ntfy → mobile clients Frigate → frigate-notify (webapi polling) → ntfy → mobile clients
``` ```
The frigate-notify config points to ntfy's cluster-internal address: The frigate-notify config points to ntfy's cluster-internal address:

View file

@ -41,7 +41,7 @@ Distributed tracing backend for BlumeOps infrastructure. Receives traces via OTL
| [[ollama]] | HTTP REST | Same (model inference latency) | | [[ollama]] | HTTP REST | Same (model inference latency) |
| [[immich]] | HTTP REST | Same | | [[immich]] | HTTP REST | Same |
Beyla auto-instruments HTTP services via eBPF kernel hooks — no code changes needed. MQTT (Mosquitto) is not instrumented (no eBPF parser for MQTT). Beyla auto-instruments HTTP services via eBPF kernel hooks — no code changes needed.
**Future: SDK instrumentation** **Future: SDK instrumentation**
Services with OTel SDK support (e.g., Hermes) can send traces directly to the OTLP endpoint for deeper internal spans (DB queries, business logic) alongside eBPF envelope traces. Services with OTel SDK support (e.g., Hermes) can send traces directly to the OTLP endpoint for deeper internal spans (DB queries, business logic) alongside eBPF envelope traces.

View file

@ -95,7 +95,6 @@ check_service "forgejo-runner" "ssh ringtail 'systemctl is-active gitea-runner-n
echo "" echo ""
echo "Ringtail k3s pods:" echo "Ringtail k3s pods:"
check_service "mosquitto" "kubectl --context=k3s-ringtail -n mqtt get pods -l app=mosquitto -o jsonpath='{.items[0].status.phase}' | grep -q Running"
check_service "ntfy" "kubectl --context=k3s-ringtail -n ntfy get pods -l app=ntfy -o jsonpath='{.items[0].status.phase}' | grep -q Running" check_service "ntfy" "kubectl --context=k3s-ringtail -n ntfy get pods -l app=ntfy -o jsonpath='{.items[0].status.phase}' | grep -q Running"
check_service "authentik" "kubectl --context=k3s-ringtail -n authentik get pods -l component=server -o jsonpath='{.items[0].status.phase}' | grep -q Running" check_service "authentik" "kubectl --context=k3s-ringtail -n authentik get pods -l component=server -o jsonpath='{.items[0].status.phase}' | grep -q Running"
check_service "frigate" "kubectl --context=k3s-ringtail -n frigate get pods -l app=frigate -o jsonpath='{.items[0].status.phase}' | grep -q Running" check_service "frigate" "kubectl --context=k3s-ringtail -n frigate get pods -l app=frigate -o jsonpath='{.items[0].status.phase}' | grep -q Running"

View file

@ -30,11 +30,6 @@ services:
current-version: "v2.18.0" current-version: "v2.18.0"
upstream-source: https://github.com/kubernetes/kube-state-metrics/releases upstream-source: https://github.com/kubernetes/kube-state-metrics/releases
- name: mosquitto
type: argocd
last-reviewed: 2026-02-16
current-version: "2.0.22"
upstream-source: https://github.com/eclipse/mosquitto/releases
- name: ntfy - name: ntfy
type: argocd type: argocd