[Bug]: Frigate keeps crashing on attempting to generate notifications.pem #20548
-
Checklist
Describe the problem you are havingGetting the following logs whilst frigate keeps crashing. 2025-10-17 18:23:45.227820257 [2025-10-17 18:23:45] frigate.util.config INFO : frigate config does not need migration... Steps to reproduce
Version0.16.2 In which browser(s) are you experiencing the issue with?No response Frigate config filelogger:
default: error
telemetry:
network_interfaces:
- enp1s0
- lo
stats:
intel_gpu_stats: true
network_bandwidth: true
auth:
trusted_proxies:
- 192.168.28.174
enabled: false
proxy:
#separator: "|" # This value defaults to a comma, but Authentik uses a pipe, for example.
header_map:
user: Remote-User
role: Remote-Groups
logout_url: https://auth.dynamict.se
face_recognition:
enabled: true
model_size: small
lpr:
enabled: true
#min_plate_length: 6
snapshots:
enabled: true
clean_copy: true
genai:
enabled: false
provider: gemini
api_key: AIzaSyChurIiKDG7V6BIzINuqGqQW6qISPUoVwQ
model: gemini-1.5-flash
model:
path: plus://e074d6405b3257c98d255cd2efc9d21f
mqtt:
host: 192.168.48.10
port: 1883
user: <REDACTED>
password: <REDACTED>
#networking:
# ipv6:
# enabled: true
detectors:
coral:
type: edgetpu
device: usb
ffmpeg:
hwaccel_args: preset-vaapi
# input_args: -avoid_negative_ts make_zero -fflags +genpts+discardcorrupt
# -rtsp_transport tcp -stimeout 5000000 -use_wallclock_as_timestamps 1
output_args:
record: preset-record-generic-audio-aac
birdseye:
enabled: false
restream: false
width: 1920
height: 1080
record:
sync_recordings: true
enabled: true
retain:
days: 90
mode: all
alerts:
retain:
days: 56
detections:
retain:
days: 56
objects:
track:
- person
- face
- car
- license_plate
- bicycle
- motorcycle
- cat
- package
audio:
enabled: true
listen:
- fire_alarm
- scream
- speech
- yell
- crying
- laughter
- cough
- snoring
- cat
- motor_vehicle
- vehicle
detect:
fps: 5
enabled: true
go2rtc:
streams:
husvagn:
- rtsp://<REDACTED>@192.168.20.13/stream1
- tapo://<REDACTED>@192.168.20.13
garage_inne:
- rtsp://<REDACTED>@192.168.20.14/stream1
- tapo://<REDACTED>@192.168.20.14
babycam:
- rtsp://<REDACTED>@192.168.20.10/stream1
- tapo://<REDACTED>@192.168.20.10
sovrum:
- rtsp://<REDACTED>@192.168.20.12/stream1
- tapo://<REDACTED>@192.168.20.12
brunarummet:
- rtsp://<REDACTED>@192.168.20.11/stream1
- tapo://<REDACTED>@192.168.20.11
lilarummet:
- rtsp://<REDACTED>@192.168.20.17/stream1
- tapo://<REDACTED>@192.168.20.17
garage_ute:
- rtsp://<REDACTED>@192.168.20.19/stream1
- tapo://<REDACTED>@192.168.20.19
framsidan_ute:
- rtsp://<REDACTED>@192.168.20.21/stream1
- tapo://<REDACTED>@192.168.20.21
husbil:
- tapo://<REDACTED>@192.168.42.113
framsidan_tradack:
- rtsp://<REDACTED>@192.168.20.26/cam/realmonitor?channel=1&subtype=0
- onvif://<REDACTED>@192.168.20.26
webrtc:
candidates:
- 192.168.20.5:8555
- stun:8555
cameras:
babycam: # <------ Name the camera
lpr:
enabled: false
onvif:
host: 192.168.20.10
port: 2020
user: <REDACTED>
password: <REDACTED>
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/babycam # <----- Update for your camera
input_args: preset-rtsp-restream
roles:
- rtmp
- record
- detect
- audio
detect:
width: 1920 # <---- update for your camera's resolution
height: 1080 # <---- update for your camera's resolution
mqtt:
timestamp: false
bounding_box: false
crop: true
height: 500
notifications:
enabled: true
garage_inne: # <------ Name the camera
lpr:
enabled: false
onvif:
host: 192.168.20.14
port: 2020
user: <REDACTED>
password: <REDACTED>
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/garage_inne # <----- Update for your camera
input_args: preset-rtsp-restream
roles:
- rtmp
- record
- detect
- audio
detect:
width: 1920 # <---- update for your camera's resolution
height: 1080 # <---- update for your camera's resolution
mqtt:
timestamp: false
bounding_box: false
crop: true
height: 500
motion:
threshold: 60
contour_area: 10
improve_contrast: true
objects:
filters:
car: {}
mask:
- 0.421,0.997,0.394,0.763,0.434,0.747,0.442,0.554,0.38,0.455,0.352,0.001,0.001,0,0,1
- 0.586,0.999,1,1,1,0,0.593,0,0.55,0.353,0.531,0.467,0.566,0.622,0.533,0.752,0.51,0.87,0.592,0.913
notifications:
enabled: true
sovrum: # <------ Name the camera
lpr:
enabled: false
onvif:
host: 192.168.20.12
port: 2020
user: <REDACTED>
password: <REDACTED>
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/sovrum # <----- Update for your camera
input_args: preset-rtsp-restream
roles:
- rtmp
- record
- detect
- audio
detect:
width: 1920 # <---- update for your camera's resolution
height: 1080 # <---- update for your camera's resolution
mqtt:
timestamp: false
bounding_box: false
crop: true
height: 500
objects:
mask: 0.619,0.119,0.591,0.386,0.663,0.453,0.693,0.447,0.753,0.014
notifications:
enabled: true
husvagn: # <------ Name the camera
onvif:
host: 192.168.20.13
port: 2020
user: <REDACTED>
password: <REDACTED>
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/husvagn # <----- Update for your camera
input_args: preset-rtsp-restream
roles:
- rtmp
- record
- detect
- audio
detect:
width: 1920 # <---- update for your camera's resolution
height: 1080 # <---- update for your camera's resolution
mqtt:
timestamp: false
bounding_box: false
crop: true
height: 500
notifications:
enabled: true
brunarummet: # <------ Name the camera
lpr:
enabled: false
onvif:
host: 192.168.20.11
port: 2020
user: <REDACTED>
password: <REDACTED>
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/brunarummet # <----- Update for your camera
input_args: preset-rtsp-restream
roles:
- rtmp
- record
- detect
- audio
detect:
width: 1920 # <---- update for your camera's resolution
height: 1080 # <---- update for your camera's resolution
mqtt:
timestamp: false
bounding_box: false
crop: true
height: 500
motion:
mask: 0.504,0.106,0.477,0,0.981,0.009,0.776,0.307
objects: {}
notifications:
enabled: true
lilarummet: # <------ Name the camera
lpr:
enabled: false
onvif:
host: 192.168.20.17
port: 2020
user: <REDACTED>
password: <REDACTED>
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/lilarummet # <----- Update for your camera
input_args: preset-rtsp-restream
roles:
- rtmp
- record
- detect
- audio
detect:
width: 1920 # <---- update for your camera's resolution
height: 1080 # <---- update for your camera's resolution
mqtt:
timestamp: false
bounding_box: false
crop: true
height: 500
motion: {}
notifications:
enabled: true
garage_ute: # <------ Name the camera
onvif:
host: 192.168.20.19
port: 2020
user: <REDACTED>
password: <REDACTED>
autotracking:
enabled: true
calibrate_on_startup: true
required_zones:
- walkarea
return_preset: vy 1
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/garage_ute # <----- Update for your camera
input_args: preset-rtsp-restream
roles:
- rtmp
- record
- detect
- audio
detect:
width: 1920 # <---- update for your camera's resolution
height: 1080 # <---- update for your camera's resolution
mqtt:
timestamp: false
bounding_box: false
crop: true
height: 500
motion:
threshold: 60
contour_area: 10
improve_contrast: true
mask: 0,0.296,0.112,0.247,0.136,0,0,0
objects: {}
notifications:
enabled: true
zones:
walkarea:
coordinates:
0.005,0.32,0.129,0.262,0.423,0.156,0.422,0.035,0.517,0.021,0.513,0.099,0.605,0.119,0.955,0.116,0.998,0.14,0.992,0.992,0.19,0.996,0,0.671
loitering_time: 0
framsidan_ute: # <------ Name the camera
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/framsidan_ute # <----- Update for your camera
input_args: preset-rtsp-restream
roles:
- rtmp
- record
- detect
- audio
detect:
width: 1920 # <---- update for your camera's resolution
height: 1080 # <---- update for your camera's resolution
mqtt:
timestamp: false
bounding_box: false
crop: true
height: 500
objects:
filters:
car: {}
person: {}
motion: {}
notifications:
enabled: true
framsidan_tradack: # <------ Name the camera
onvif:
host: 192.168.20.26
port: 80
user: <REDACTED>
password: <REDACTED>
autotracking:
enabled: true
calibrate_on_startup: true
required_zones:
- walkarea
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/framsidan_tradack # <----- Update for your camera
input_args: preset-rtsp-restream
roles:
- rtmp
- record
- detect
- audio
detect:
width: 1920 # <---- update for your camera's resolution
height: 1080 # <---- update for your camera's resolution
mqtt:
timestamp: false
bounding_box: false
crop: true
height: 500
motion:
mask: 0.748,0.048,0.748,0.094,0.965,0.098,0.965,0.052
notifications:
enabled: true
zones:
walkarea:
coordinates:
1,1,0.304,1,0.121,0.821,0.002,0.549,0.001,0.23,0,0.101,0.107,0.003,1,0
loitering_time: 0
husbil: # <------ Name the camera
onvif:
host: 192.168.42.113
port: 2020
user: <REDACTED>
password: <REDACTED>
autotracking:
enabled: true
calibrate_on_startup: true
required_zones:
- walkarea
return_preset: vy 1
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/husbil # <----- Update for your camera
input_args: preset-rtsp-restream
roles:
- rtmp
- record
- detect
- audio
detect:
width: 1920 # <---- update for your camera's resolution
height: 1080 # <---- update for your camera's resolution
mqtt:
timestamp: false
bounding_box: false
crop: true
height: 500
camera_groups: {}
semantic_search:
enabled: false
reindex: false
model_size: small
notifications:
enabled: true
email: revellion@gmail.com
version: 0.16-0
classification:
bird:
enabled: falsedocker-compose file or Docker CLI commandversion: "3.9"
services:
frigate:
container_name: frigate
privileged: true # this may not be necessary for all setups
restart: unless-stopped
network_mode: host
image: ghcr.io/blakeblackshear/frigate:stable
shm_size: "3072mb" # update for your cameras based on calculation above
devices:
- /dev/bus/usb:/dev/bus/usb # passes the USB Coral, needs to be modified for other versions
- /dev/apex_0:/dev/apex_0 # passes a PCIe Coral, follow driver instructions here https://coral.ai/docs/m2/get-started/#2a-on-linux
- /dev/dri/renderD128 # for intel hwaccel, needs to be updated for your hardware
volumes:
- /etc/localtime:/etc/localtime:ro
- /opt/frigate/config.yml:/config/config.yml
- /opt/frigate/storage:/media/frigate
- type: tmpfs # Optional: 1GB of memory, reduces SSD/SD Card wear
target: /tmp/cache
tmpfs:
size: 1000000000
ports:
- "5000:5000"
- "8554:8554" # RTSP feeds
- "8555:8555/tcp" # WebRTC over tcp
- "8555:8555/udp" # WebRTC over udpRelevant Frigate log output2025-10-17 18:23:45.227820257 [2025-10-17 18:23:45] frigate.util.config INFO : frigate config does not need migration...
2025-10-17 18:23:45.402303279 Traceback (most recent call last):
2025-10-17 18:23:45.402308949 File "<frozen runpy>", line 198, in _run_module_as_main
2025-10-17 18:23:45.402327713 File "<frozen runpy>", line 88, in _run_code
2025-10-17 18:23:45.402328918 File "/opt/frigate/frigate/__main__.py", line 108, in <module>
2025-10-17 18:23:45.402519935 main()
2025-10-17 18:23:45.402521309 File "/opt/frigate/frigate/__main__.py", line 104, in main
2025-10-17 18:23:45.402522252 FrigateApp(config).start()
2025-10-17 18:23:45.402540370 File "/opt/frigate/frigate/app.py", line 653, in start
2025-10-17 18:23:45.402625250 self.init_dispatcher()
2025-10-17 18:23:45.402663468 File "/opt/frigate/frigate/app.py", line 346, in init_dispatcher
2025-10-17 18:23:45.402702898 comms.append(WebPushClient(self.config, self.stop_event))
2025-10-17 18:23:45.402736839 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-10-17 18:23:45.402765409 File "/opt/frigate/frigate/comms/webpush.py", line 65, in __init__
2025-10-17 18:23:45.402793788 self.vapid = Vapid01.from_file(os.path.join(CONFIG_DIR, "notifications.pem"))
2025-10-17 18:23:45.402855953 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-10-17 18:23:45.402873254 File "/usr/local/lib/python3.11/dist-packages/py_vapid/__init__.py", line 118, in from_file
2025-10-17 18:23:45.402913697 vapid.generate_keys()
2025-10-17 18:23:45.402920350 File "/usr/local/lib/python3.11/dist-packages/py_vapid/__init__.py", line 200, in generate_keys
2025-10-17 18:23:45.402969298 self.private_key = ec.generate_private_key(ec.SECP256R1,
2025-10-17 18:23:45.403011165 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-10-17 18:23:45.403045902 TypeError: curve must be an EllipticCurve instanceRelevant go2rtc log output-Operating systemProxmox Install methodDocker Compose Network connectionWired Camera make and modelTAPO C200s and C310s and a few more Screenshots of the Frigate UI's System metrics pagesAny other information that may be helpfulNo response |
Beta Was this translation helpful? Give feedback.
Replies: 7 comments 11 replies
-
|
Based on the error you're experiencing, this appears to be a cryptographic library issue with the VAPID key generation for WebPush notifications. The error The crash occurs when Frigate tries to initialize the WebPush notification system and generate the To resolve this issue, try these steps:
This appears to be a dependency issue within the container where the cryptographic library expects a different object type than what's being provided. The WebPush notification system uses the VAPID specification for secure delivery(1), but the underlying Python cryptography library seems to have a compatibility issue in your current container version. If the problem persists after updating, you may need to wait for a container update that resolves the cryptographic dependency conflict, or consider using alternative notification methods through MQTT or Home Assistant integrations. 📚 Sources: Have another question? Just tag @inkeep. |
Beta Was this translation helpful? Give feedback.
-
|
Some other bugs i found might be relevant to this isue is. |
Beta Was this translation helpful? Give feedback.
-
|
Reverting to 0.16.1 makes the setup work again. Possible regression in 0.16.2 triggered? |
Beta Was this translation helpful? Give feedback.
-
|
I got the same error on a brand new frigate install: I have a work around: My hack of a fix was to update the library directly.
Stop the container; make the changes to enable notifications again; and start it up; the pem file will be generated. -------------------my troubleshooting steps to get the above hack----------------------- In order to startup again I had to disable notifications on each of the cameras where I had it enabled via the GUI. Disabling it globally was not needed and didn't make any difference and still got the error as long as single camera was enabled That then would allow it to start again. reproduces the error. |
Beta Was this translation helpful? Give feedback.
-
|
Also experiencing this issue. Edited the config.yaml to exclude notifications from cameras and the global setting and it started again okay. No idea how to edit the docker image on TrueNAS so it's persistant. |
Beta Was this translation helpful? Give feedback.
-
|
Can someone test if this happens in dev? I am pretty sure it doesn't, but also not sure how it popped up between 0.16.1 and 0.16.2 as it never updated the library and the library has not been updated in quite some time https://pypi.org/project/py-vapid/ |
Beta Was this translation helpful? Give feedback.
-
|
We've committed a fix for this issue that we'd like to release in an upcoming version. If possible, please test this build - it should fix the issue reported here. It's based on Frigate 0.16: |
Beta Was this translation helpful? Give feedback.
I got the same error on a brand new frigate install: I have a work around:
It appears to be due to an older version of py-vapid being shipped in the container. A bug apparently fixed in a newer version of that lib.
web-push-libs/vapid#105
My hack of a fix was to update the library directly.
edit within the running container:
/usr/local/lib/python3.11/dist-packages/py_vapid/__init__.pyStop the container; make the changes to enable notifications again; and start it up; the pem file will be generated.
Probably a better way to do this would be to j…