Bouw snel een on-device NVR-project gebaseerd op RK3576 / Docker / RKNN / Frigate.

Frigate is een open-source NVR gericht op lokale, realtime AI-objectdetectie. Alle inferentie draait op je eigen hardware — camerastreams worden nooit naar een cloudserver geüpload — wat zowel de privacy beschermt als de dure maandelijkse cloud-AI-abonnementskosten vermijdt. Frigate ondersteunt aangepaste detectiezones en maskerzones, en integreert naadloos met Home Assistant om NVR-feeds in smart-home-automatiseringen op te nemen.
Deze handleiding laat zien hoe je Frigate op de reComputer RK3576 implementeert met Docker Compose en gebruikmaakt van de in de RK3576 ingebouwde stack van Rockchip MPP (hardwaredecodering) + RGA (2D-versnelling) + RKNN (NPU-inferentie) voor realtime videoanalyse met lage CPU-belasting.
Eerste stappen
In deze handleiding volgen we de officiële implementatiewerkwijze en laten we zien hoe je een Frigate Docker-omgeving configureert die lokale AI-detectie uitvoert op RTSP-camerastreams op de reComputer RK3576.
Vereisten volgens de officiële documentatie
Frigate beveelt officieel aan:
- Een Debian-gebaseerd besturingssysteem als de beste host;
- Virtuele machines worden niet aanbevolen (Proxmox, ESXi, Virtualbox) — sommige Proxmox-configuraties kunnen werken, maar voegen complexiteit toe aan Coral/GPU-passthrough;
- Windows wordt niet officieel ondersteund (WSL/Virtualbox kunnen werken, maar GPU/Coral-passthrough is lastig).
Voor Rockchip-platforms controleer je de versie van je systeemimage:
$ uname -r
5.10.xxx-rockchip
$ ls /dev/dri
by-path card0 card1 renderD128 renderD129
$ sudo cat /sys/kernel/debug/rknpu/version
RKNPU driver: v0.9.2Berekening van het benodigde gedeelde geheugen
Frigate gebruikt gedeeld geheugen om videoframes te verwerken. De standaard shm-size van Docker is 64 MB. Voor een detectiescenario met twee 720p-camera's is de standaard 128 MB aan gedeeld geheugen voldoende. Kies de toewijzing van het gedeelde geheugen op basis van je daadwerkelijke situatie om de middelen optimaal te benutten.
We raden aan de officiële online calculator te gebruiken: https://docs.frigate.video/frigate/installation#calculating-required-shm-size
Downloadlink ophalen
Bezoek de officiële site https://docs.frigate.video/frigate/installation#docker en selecteer de volgende opties om de installatie-instructies te verkrijgen.

Vul het gedeelte Storage Paths in volgens je werkelijke behoeften (je kunt sommige leeg laten indien niet van toepassing). Onder Other Options vul je de hierboven berekende geheugengrootte in; je kunt ook handmatig een wachtwoord instellen (optioneel).
Kopieer vervolgens de installatie-instructies:
services:
frigate:
container_name: frigate
privileged: true # This may not be necessary for all setups
restart: unless-stopped
stop_grace_period: 30s # Allow enough time to shut down the various services
image: ghcr.io/blakeblackshear/frigate:stable-rk
shm_size: "512mb" # Update for your cameras based on SHM calculation
security_opt:
- apparmor=unconfined
- systempaths=unconfined
devices:
- /dev/dma_heap # Rockchip DMA heap
- /dev/rga # Rockchip RGA
- /dev/mpp_service # Rockchip MPP service
- /dev/dri # Intel/AMD GPU hardware acceleration
volumes:
- /etc/localtime:/etc/localtime:ro # Sync host time
- /path/to/your/config:/config # Config file directory
- /path/to/your/storage:/media/frigate # Recording storage directory
- type: tmpfs # 1GB in-memory filesystem for recording segment storage
target: /tmp/cache
tmpfs:
size: 1000000000
- /sys/:/sys/:ro # Rockchip system info
ports:
- "8554:8554" # Access RTSP feeds from go2rtc
- "8971:8971" # Authenticated UI and API access (default HTTPS)
- "8555:8555" # WebRTC over TCP
- "8555:8555/udp" # WebRTC over UDP
environment:
TZ: "Asia/Shanghai" # TimezoneOf je kunt de geteste en geverifieerde configuratie direct van GitHub halen: https://github.com/doublelf/RK_friigate_dockeryml
services:
frigate:
container_name: frigate
privileged: true # Geprivilegieerde modus gebruiken
restart: unless-stopped
stop_grace_period: 30s # Geef de services voldoende tijd om af te sluiten
image: docker.cnb.cool/frigate-cn/frigate:stable-rk # Dit is het adres van de binnenlandse mirror; het oorspronkelijke adres is ghcr.io/blakeblackshear/frigate:stable-rk
shm_size: "512mb" # Werk deze waarde bij voor je camera's op basis van de bovenstaande berekening
devices:
- /dev/dri:/dev/dri # Voor GPU-hardwareversnelling
- /dev/dma_heap # RockChip DMA heap
- /dev/rga # RockChip RGA
- /dev/mpp_service # RockChip MPP-service
security_opt:
- apparmor=unconfined
- systempaths=unconfined
volumes:
- /etc/localtime:/etc/localtime:ro # Hosttijd synchroniseren
- /home/seeed/frigate/config:/config # "/home/seeed/frigate/config" is het pad op je host waar je configuratiebestanden wilt opslaan
- /home/seeed/frigate/video:/media/frigate # "/home/seeed/frigate/video" is het pad op je host waar je bewakingsbeelden wilt opslaan
- type: tmpfs # Gebruik 1 GB RAM als tijdelijke opslag voor opnamesegmenten
target: /tmp/cache
tmpfs:
size: 1000000000
- /sys/:/sys/:ro # RockChip-systeeminformatie
ports:
- "8971:8971" # Standaardpoort van de Frigate-service, standaard HTTPS
- "8554:8554" # RTSP-videostream
- "8555:8555/tcp" # WebRTC over TCP
- "8555:8555/udp" # WebRTC over UDP
environment:
FRIGATE_RTSP_PASSWORD: "password" # RTSP-wachtwoord; wijzig dit in het gewenste wachtwoord
TZ: "Asia/Shanghai" # Instellen op tijdzone China +8
HF_ENDPOINT: "https://huggingface.mirror.frigate-cn.video" # Binnenlandse Huggingface-mirror die wij aanbieden, voor versnelde downloads van enkele modellen die Frigate nodig heeft
GITHUB_ENDPOINT: "https://github.mirror.frigate-cn.video" # Binnenlandse GitHub-mirror die wij aanbieden, voor versnelde downloads van enkele modellen die Frigate nodig heeft
TF_KERAS_MOBILENET_V2_WEIGHTS_URL: https://cnb.cool/frigate-cn/mirrors/storage.googleapis/-/git/raw/main/tensorflow/keras-applications/mobilenet_v2/mobilenet_v2_weights_tf_dim_ordering_tf_kernels_0.35_224_no_top.h5 # Gewichtenbestand dat het classificatiemodel nodig heeftMaak het bestand docker-compose.yml aan met de bovenstaande inhoud en voer het uit in de terminal:
docker compose up -dWanneer de build is voltooid, is Frigate lokaal opgebouwd. Vervolgens kun je het configuratiebestand aanpassen en na het starten de werking in de backend controleren.
Officiële minimale config.yml
De volgende config.yml is een minimale werkende configuratie: 1 RTSP-camera + MQTT uitgeschakeld + standaard detector (CPU), die standaard wordt geleverd na de installatie van Frigate. Als je dit bestand niet hebt, moet je het handmatig aanmaken.
mkdir -p ~/frigate/config
tee ~/frigate/config/config.yml > /dev/null << 'EOF'
mqtt:
enabled: False
cameras:
my_cam:
ffmpeg:
inputs:
- path: rtsp://viewer:{FRIGATE_RTSP_PASSWORD}@<camera-ip>:554/stream
roles:
- detect
detect:
width: 1280
height: 720
detect:
fps: 5
EOFVervang <camera-ip> door het werkelijke IP van je camera. Sla dit bestand op in /path/to/your/config/config.yml (d.w.z. het in docker-compose gemapte /config).
Deze configuratie kan zo worden aangepast dat meerdere camera's tegelijk draaien. Je hoeft alleen maar meer structuren onder de bovenstaande configuratie toe te voegen. De volgende configuratie laat het starten van twee camera's met verschillende detailconfiguraties zien:
mqtt:
enabled: false
face_recognition:
enabled: true
go2rtc:
streams:
usb_camera:
- ffmpeg:device?video=0&video_size=640x480#video=h264
cameras:
usb_camera:
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/usb_camera
input_args: preset-rtsp-restream
roles:
- detect
- record
detect:
width: 640
height: 480
enabled: false # Detectie aanvankelijk uitschakelen om eerst de videostream te testen
record:
enabled: true
continuous:
days: 0 # Bij 0 worden standaard geen bewakingsvideo's zonder opgegeven type opgenomen
alerts: # Hier wordt aangegeven dat alleen alarmvideo's worden opgenomen; de bovenstaande instelling wordt genegeerd
retain:
days: 30
mode: motion
zones:
zone_b32f13ac:
coordinates: 0.867,0.093,0.417,0.115,0.437,0.859,0.974,0.85
loitering_time: 0
friendly_name: Zone 1
video_test: # Geef deze testcamera een naam
ffmpeg:
inputs:
- path: /home/seeed/frigate/test.mp4 # Pad naar je videobestand
input_args: -re -stream_loop -1 -fflags +genpts
roles:
- detect
- record
detect:
enabled: true
record:
enabled: false # Het wordt aanbevolen om opnemen uit te schakelen tijdens het testen
snapshots:
enabled: false # Het wordt aanbevolen om snapshots uit te schakelen tijdens het testen
version: 0.17-0Start cameras, video_test ingesprongen; elk vertegenwoordigt de configuratie van één camera. ffmpeg geeft de algehele configuratie van de camera op, inclusief videobestandspad en toepassingsrollen; detect staat voor de objectdetectiefunctie, record voor de opnamefunctie en snapshots voor de snapshot-functie.
Opstarten en verifiëren
Volg de stappen:
cd /path/to/your/frigate
sudo docker compose up -d
# Startlogboeken bekijken
sudo docker compose logs -f frigateAls de logboeken INFO : Frigate started successfully. bevatten of de web-UI op 0.0.0.0:8971 luistert, is de start geslaagd.
Zoek in de logboeken op trefwoorden om de account en het wachtwoord op te halen:
docker logs frigate 2>&1 | grep -Ei 'rtsp://|rtsps://|password|passwd|user|username|@'Mogelijk zie je iets als rtsp://admin:password@192.168.1.100:554/stream.
# Containerstatus verifiëren
sudo docker compose ps
# Verwacht wordt dat de Frigate-service de status running / healthy heeft# Browsertoegang
https://<your-host-ip>:8971Log in met de account en het wachtwoord.

Na een geslaagde login zie je het volledige beeld en de in het eerdere config-bestand geconfigureerde cameragegevens:

Kies er één en klik om binnen te gaan. Klik vervolgens rechtsboven op de debug-interface om alle functies in het beeld te zien. Rechtsboven vind je de functies die in het config-bestand kunnen worden ingesteld om te bepalen of ze zijn inbegrepen en of ze vooraf worden gestart; links vind je de ingebouwde functies waarmee later onder andere grenzen kunnen worden ontworpen:
