Initial Frigate NVR deployment
All checks were successful
Build and Deploy Frigate / build-push-deploy (push) Successful in 8m19s
All checks were successful
Build and Deploy Frigate / build-push-deploy (push) Successful in 8m19s
- Dockerfile: wrapper FROM ghcr.io/blakeblackshear/frigate:stable - frigate.nomad: Nomad job, constrained to int node, dynamic port->5000, host volumes - config/config.yml: cam_167 + cam_168 RTSP, motion detection, 7-day recording - .gitea/workflows/deploy.yml: build -> push registry.i80.dk -> nomad deploy
This commit is contained in:
34
.gitea/workflows/deploy.yml
Normal file
34
.gitea/workflows/deploy.yml
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
name: Build and Deploy Frigate
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-push-deploy:
|
||||||
|
runs-on: debian-host
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Login to Harbor
|
||||||
|
run: echo "${{ secrets.HARBOR_ROBOT_TOKEN }}" | docker login registry.i80.dk -u 'robot$gitserver' --password-stdin
|
||||||
|
|
||||||
|
- name: Build and push image
|
||||||
|
run: |
|
||||||
|
docker build \
|
||||||
|
-t registry.i80.dk/gitea/frigate:latest \
|
||||||
|
-t registry.i80.dk/gitea/frigate:${{ github.sha }} \
|
||||||
|
.
|
||||||
|
docker push registry.i80.dk/gitea/frigate:latest
|
||||||
|
docker push registry.i80.dk/gitea/frigate:${{ github.sha }}
|
||||||
|
|
||||||
|
- name: Validate Nomad job
|
||||||
|
run: nomad job validate frigate.nomad
|
||||||
|
env:
|
||||||
|
NOMAD_ADDR: https://nomad.i80.dk:4646
|
||||||
|
|
||||||
|
- name: Deploy to Nomad
|
||||||
|
run: nomad job run frigate.nomad
|
||||||
|
env:
|
||||||
|
NOMAD_ADDR: https://nomad.i80.dk:4646
|
||||||
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
.env
|
||||||
|
*.log
|
||||||
1
Dockerfile
Normal file
1
Dockerfile
Normal file
@@ -0,0 +1 @@
|
|||||||
|
FROM ghcr.io/blakeblackshear/frigate:stable
|
||||||
45
config/config.yml
Normal file
45
config/config.yml
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
mqtt:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
cameras:
|
||||||
|
cam_167:
|
||||||
|
ffmpeg:
|
||||||
|
inputs:
|
||||||
|
- path: rtsp://192.168.15.167:554/s0
|
||||||
|
roles:
|
||||||
|
- detect
|
||||||
|
- record
|
||||||
|
motion:
|
||||||
|
threshold: 41
|
||||||
|
contour_area: 30
|
||||||
|
improve_contrast: true
|
||||||
|
cam_168:
|
||||||
|
ffmpeg:
|
||||||
|
inputs:
|
||||||
|
- path: rtsp://192.168.15.168:554/s0
|
||||||
|
roles:
|
||||||
|
- detect
|
||||||
|
- record
|
||||||
|
|
||||||
|
record:
|
||||||
|
enabled: true
|
||||||
|
continuous:
|
||||||
|
days: 7
|
||||||
|
motion:
|
||||||
|
days: 7
|
||||||
|
|
||||||
|
detect:
|
||||||
|
enabled: true
|
||||||
|
width: 1280
|
||||||
|
height: 720
|
||||||
|
fps: 5
|
||||||
|
|
||||||
|
objects:
|
||||||
|
track:
|
||||||
|
- person
|
||||||
|
- car
|
||||||
|
|
||||||
|
ui:
|
||||||
|
timezone: Europe/Copenhagen
|
||||||
|
|
||||||
|
version: 0.17-0
|
||||||
85
frigate.nomad
Normal file
85
frigate.nomad
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
job "frigate" {
|
||||||
|
datacenters = ["dc1"]
|
||||||
|
type = "service"
|
||||||
|
|
||||||
|
constraint {
|
||||||
|
attribute = "${attr.unique.hostname}"
|
||||||
|
value = "int"
|
||||||
|
}
|
||||||
|
|
||||||
|
group "frigate" {
|
||||||
|
count = 1
|
||||||
|
|
||||||
|
update {
|
||||||
|
canary = 1
|
||||||
|
auto_promote = true
|
||||||
|
auto_revert = true
|
||||||
|
}
|
||||||
|
|
||||||
|
network {
|
||||||
|
port "http" { to = 5000 }
|
||||||
|
}
|
||||||
|
|
||||||
|
volume "frigate-config" {
|
||||||
|
type = "host"
|
||||||
|
source = "frigate-config"
|
||||||
|
read_only = false
|
||||||
|
}
|
||||||
|
|
||||||
|
volume "frigate-media" {
|
||||||
|
type = "host"
|
||||||
|
source = "frigate-media"
|
||||||
|
read_only = false
|
||||||
|
}
|
||||||
|
|
||||||
|
task "frigate" {
|
||||||
|
driver = "docker"
|
||||||
|
|
||||||
|
config {
|
||||||
|
image = "registry.i80.dk/gitea/frigate:latest"
|
||||||
|
force_pull = true
|
||||||
|
privileged = true
|
||||||
|
shm_size = 268435456
|
||||||
|
volumes = ["/etc/localtime:/etc/localtime:ro"]
|
||||||
|
ports = ["http"]
|
||||||
|
}
|
||||||
|
|
||||||
|
volume_mount {
|
||||||
|
volume = "frigate-config"
|
||||||
|
destination = "/config"
|
||||||
|
read_only = false
|
||||||
|
}
|
||||||
|
|
||||||
|
volume_mount {
|
||||||
|
volume = "frigate-media"
|
||||||
|
destination = "/media/frigate"
|
||||||
|
read_only = false
|
||||||
|
}
|
||||||
|
|
||||||
|
env {
|
||||||
|
FRIGATE_RTSP_PASSWORD = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
service {
|
||||||
|
name = "frigate"
|
||||||
|
port = "http"
|
||||||
|
tags = [
|
||||||
|
"traefik.enable=true",
|
||||||
|
"traefik.http.routers.frigate.rule=Host(`cams.i80.dk`)",
|
||||||
|
"traefik.http.routers.frigate.tls=true",
|
||||||
|
]
|
||||||
|
check {
|
||||||
|
type = "http"
|
||||||
|
path = "/api/version"
|
||||||
|
interval = "10s"
|
||||||
|
timeout = "5s"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resources {
|
||||||
|
cpu = 2000
|
||||||
|
memory = 4096
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user