## Summary - Enable NVIDIA container toolkit on ringtail NixOS and configure k3s containerd with nvidia runtime - Add NVIDIA device plugin ArgoCD app (RuntimeClass + DaemonSet) to expose `nvidia.com/gpu` resources - Re-target Frigate from indri minikube (arm64, ZMQ detector) to ringtail k3s (x86_64, TensorRT/ONNX) - Switch Frigate image to `-tensorrt` variant with GPU resource limits and increased shared memory ## Manual Prerequisites 1. **NFS access**: Verify ringtail can mount `sifaka:/volume1/frigate` ```fish ssh ringtail 'sudo mount -t nfs sifaka:/volume1/frigate /mnt/storage1 && ls /mnt/storage1 && sudo umount /mnt/storage1' ``` 2. **YOLO model**: Verify `/volume1/frigate/models/yolov9m.onnx` exists on sifaka ## Deployment Steps 1. Provision ringtail: `mise run provision-ringtail` 2. Sync ArgoCD apps: `argocd app sync apps --prune` 3. Deploy NVIDIA device plugin: `argocd app sync nvidia-device-plugin` 4. Verify GPU: `kubectl --context=k3s-ringtail get nodes -o json | jq '.items[].status.capacity'` 5. Deploy Frigate: `argocd app sync frigate` ## Verification - [ ] `nvidia.com/gpu: 1` visible in node capacity - [ ] Frigate pod running with GPU allocated - [ ] Frigate UI loads at `https://nvr.ops.eblu.me` - [ ] Detector shows ONNX/TensorRT on System page - [ ] Camera feed with bounding boxes in live view - [ ] TensorRT engine build completes (watch logs on first start) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Reviewed-on: https://forge.ops.eblu.me/eblume/blumeops/pulls/217
87 lines
2.3 KiB
YAML
87 lines
2.3 KiB
YAML
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: frigate-config
|
|
namespace: frigate
|
|
data:
|
|
config.yml: |
|
|
mqtt:
|
|
host: mosquitto.mqtt.svc.cluster.local
|
|
port: 1883
|
|
|
|
go2rtc:
|
|
streams:
|
|
# GableCam IP is reserved in UX7 DHCP config
|
|
gablecam:
|
|
- "rtsp://{FRIGATE_CAMERA_USER}:{FRIGATE_CAMERA_PASSWORD}@192.168.1.159:554/h264Preview_01_main"
|
|
gablecam_sub:
|
|
- "rtsp://{FRIGATE_CAMERA_USER}:{FRIGATE_CAMERA_PASSWORD}@192.168.1.159:554/h264Preview_01_sub"
|
|
|
|
cameras:
|
|
gablecam:
|
|
enabled: true
|
|
ffmpeg:
|
|
inputs:
|
|
- path: rtsp://127.0.0.1:8554/gablecam
|
|
input_args: preset-rtsp-restream
|
|
roles: [record]
|
|
- path: rtsp://127.0.0.1:8554/gablecam_sub
|
|
input_args: preset-rtsp-restream
|
|
roles: [detect]
|
|
detect:
|
|
enabled: true
|
|
stationary:
|
|
max_frames:
|
|
default: 1500
|
|
motion:
|
|
mask:
|
|
- 0.401,0.026,0.4,0.078,0.587,0.072,0.585,0.02
|
|
- 0.881,0.422,0.789,0.245,0.595,0.054,0.531,0,0.634,0,0.824,0.192,0.892,0.307
|
|
zones:
|
|
driveway_entrance:
|
|
coordinates: 0.85,0.366,0.735,0.344,0.681,0.2,0.795,0.255
|
|
objects: [car, dog, person]
|
|
driveway:
|
|
coordinates: 0.767,0.25,0.58,0.2,0.218,0.25,0.128,0.296,0.003,0.565,0.001,0.992,0.826,0.992,0.897,0.665,0.869,0.608,0.788,0.354
|
|
review:
|
|
alerts:
|
|
labels: [person, car]
|
|
required_zones:
|
|
- driveway_entrance
|
|
detections:
|
|
required_zones:
|
|
- driveway
|
|
- driveway_entrance
|
|
objects:
|
|
track: [person, car, dog, cat, bird]
|
|
|
|
detectors:
|
|
onnx:
|
|
type: onnx
|
|
|
|
model:
|
|
model_type: yolonas
|
|
width: 320
|
|
height: 320
|
|
input_tensor: nchw
|
|
input_dtype: int
|
|
path: /media/frigate/models/yolo_nas_s.onnx
|
|
labelmap_path: /labelmap/coco-80.txt
|
|
|
|
record:
|
|
enabled: true
|
|
continuous:
|
|
days: 3
|
|
alerts:
|
|
retain:
|
|
days: 30
|
|
mode: active_objects
|
|
detections:
|
|
retain:
|
|
days: 14
|
|
mode: motion
|
|
|
|
snapshots:
|
|
enabled: true
|
|
retain:
|
|
default: 14
|