Frigate setup

Frigate Kurulumu: Proxmox ve Docker

Bu yazımda, bir mini PC’ye kurduğum Proxmox sistemi üzerine Frigate kurulumunu anlatmak istiyorum. İnternette bu konuda birçok kaynak bulunsa da, çoğunun eski veya eksik olduğunu fark ettim ve kendi kurulumum sırasında birçok sorunla karşılaştım. Bu yazıyı hazırlamamın nedeni, bu bilgiyi paylaşmak ve gelecekte kendi ihtiyaçlarım için bir referans oluşturmaktır.

Hazırlıklar

Frigate nedir?

Frigate, gerçek zamanlı yapay zeka nesne algılama odaklı açık kaynaklı bir NVR’dir. Tüm işlemler, kendi donanımınızda yerel olarak gerçekleştirilir ve kamera yayınları hiçbir zaman evinizden çıkmaz. Hem gizlilik endişelerini giderebilmesi hem de birçok kamera üreticisinin nesne tanıma özelliği için ücret talep etmesi sebebiyle, pek çok akıllı ev sahibi tarafından tercih edilmektedir. Frigate ile ilgili daha fazla bilgiye şu linkten ulaşabilirsiniz.

Ancak, Frigate’i verimli bir şekilde kullanabilmek için yeni nesil bir bilgisayara veya Google Coral gibi harici bir görüntü işlemcisine ihtiyaç duyulmaktadır. Ben, yeni nesil bir mini PC kullanmayı tercih ettim ve bu seçimimle ilgili yazıma şu linkten ulaşabilirsiniz.

Sistem Bilgileri

Bu kurulumda kullandığım sistem şu şekilde;

  • Önceki yazımda incelediğim MSI Cubi JSL-042EU Mini PC  4 GB RAM, Intel N6000 işlemci
  • Proxmox 8.1.4
  • 120 GB USB External SSD
  • TP-Link Tapo C200 Kamera

İnternette birçok yazıda Google Coral’ın kullanıldığını ve kurulumun buna göre yapıldığını görebilirsiniz. Ancak, iGPU kullanmak isteyenler için donanım ayarlarını doğru bir şekilde yapmak ciddi sıkıntılar doğurabilir. Bu yazıda, bu konuyla ilgili detaylı açıklamalar bulacaksınız.

Frigate ve Proxmox

Frigate doğrudan Proxmox üzerinde çalıştırılamaz, ancak Docker üzerinde çalışır. Bu nedenle, bir Proxmox sanal makinesi oluşturup, içine Docker kurarak Frigate’i çalıştıracağız. Bu yöntem, bir sanal makine içinde başka bir sanal makine kurmayı içerse de, performans sorunu yaşamadım.

Kurulum

Proxmox üzerine Docker kurulumu

Bu adım, kurulumun ilerleyen safhalarında başınıza en fazla dert açabilecek kısımdır, çünkü görece basit olmasına rağmen doğru yapılmazsa sorunlar çıkabilir. Bu yüzden, ayarlamalarınızı dikkatlice yapmanız önemlidir.

Öncelikle tteck’in komut dosyalarını kullanarak kolay bir şekilde Docker kurulumunu yapacağız. Bunun için https://tteck.github.io/Proxmox/ adresine gidin ve “Docker – Kubernetes” menüsü altındaki “Docker LXC” bölümünü açın. İlk linki kopyalayın;

bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/docker.sh)"

Ana Proxmox düğümünüze geçerek terminal ekranını açın ve kopyaladığınız komutu yapıştırarak çalıştırın.

Proxmox ve Docker Kullanarak Frigate Kurulumu

Bu komut bir kurulum sihirbazı açacak, aşağıdaki cevaplarla ilerleyin;

  • “This will create a New Docker LXC. Proceed?” – Yes
  • “Use Default Settings?” – Advanced
  • “To make a selection…” – OK
  • “debian 12…” – OK
  • “Choose Distribution” – debian
  • “Choose Version” – 12 Bookworm
  • “Choose Type” – 0 Privileged
  • “Set root password…” – Boş bırakabilir ya da bir şifre belirleyebilirsiniz.
  • “Set Container ID” – Varsayılan olarak bırakabilirsiniz.
  • “Set Hostname” – Sanal makinenizin ismi. Ben “frigate” olarak belirledim.
  • “Set Disk Size in GB” – Sanal makinenize ayıracağınız disk alanı. Ben frigate’in yakalayacağı video ve resimleri USB’ye takılı bir SSD üzerine kaydedeceğim, bu nedenle burayı 4GB olarak bırakacağım. Siz burayı ihtiyacınıza göre ayarlayabilirsiniz.
  • “Allocate CPU Cores” – Eğer benim gibi nesne algılama işlemlerini CPU üzerinden yapacaksanız, ne kadar çok çekirdek eklerseniz o kadar yararınıza olacaktır.
  • “Allocate RAM in Mib” – Kullandığınız bilgisayarınızın RAM miktarına göre ayarlama yapabilirsiniz.
  • “Set a bridge” – Varsayılan değerde bırakabilirsiniz.
  • “Set a Static IPv4…” – Frigate kuracağınız makinenin IP adresi. Buraya sabit bir adres yazmanızı tavsiye ederim, ancak dikkat edin IP adresinin sonuna “/24” ifadesi eklemeyi unutmayın. (Örneğin: 192.168.0.122/24”)
  • “Enter gateway IP…” – Sabit IP tanımladığınızda makinenin internete bağlanabilmesi için modeminizin IP adresini bilmesi gerekir. Buraya modeminizin IP adresini yazmalısınız.
  • “Set APT-Cacher…” – Varsayılan olarak bırakabilirsiniz.
  • “Disable IPv6” – Ben IPv6 kullanmadığımdan Yes seçeneğini seçtim.
  • “Set Interface MTU size…” – Varsayılan olarak bırakabilirsiniz.
  • “Set a DNS Search Domain…” – Varsayılan olarak bırakabilirsiniz.
  • “Set a DNS Server IP…” – Bir DNS sunucusu kullanıyorsanız ya da örneğin pi-hole vb. kullanıyorsanız buraya o adresi yazmanız gerekir. (Örneğin: 8.8.8.8)
  • “Set a MAC Address…” – Varsayılan olarak bırakın.
  • “Set a Vlan” – Varsayılan olarak bırakabilirsiniz.
  • “Enable Verbose Mode” – No
  • “Ready to create Docker LXC” – Yes
  • Kurulum sırasında “Would you like to add Portainer?” sorusu gelecek. Ben kullandığım için Yes seçeneğini seçtim.
  • Yine “Would you like to add Docker Compose?” sorusuna da Yes seçeneğini seçtim.

Donanım hızlandırma ayarları

Yazımda, Frigate’i Intel donanım hızlandırıcısıyla nasıl kullanabileceğinizi anlatıyorum. Frigate’in donanım hızlandırıcısına erişebilmesi için Proxmox üzerinde belirli izinler tanımlamamız gerekiyor.

Docker kurulumunu yeni tamamladığınızı ve hala ana Proxmox düğümünde olduğunuzu, terminal ekranının da açık olduğunu varsayıyorum.Öncelikle sanal makinemizin ayar dosyasının olduğu klasöre geçmemiz lazım.

cd /etc/pve/lxc

Sonra ilgili makinemizin ayar dosyasını düzenleyeceğiz. Aşağıdaki örnekte makine numarası 104, bu rakamı kendi makinenize göre değiştirmeniz gerekiyor.

nano 104.conf

Nano’yu kullanarak ayar dosyasında birkaç değişiklik yapacağız. features satırını aşağıdaki şekilde değiştirin:

features: fuse=1,nesting=1

Aşağıdaki satırları da ayar dosyasına ekleyin.

lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file

CTRL+X, Y ve Enter tuşlarına sırasıyla basarak dosyayı kaydederek Nano’dan çıkın.

Sanal makinenizi tekrar başlatın.

Böylelikle Docker kurulumunu tamamladık. Internette bulacağınız pek çok kaynakta bu aşamada artık kurulumda belirlediğiniz IP adresinin sonuna 9000 port numarasını yazarak (Örneğin 192.168.0.122:9000) Portainer’a bağlanabilirsiniz yazar ancak eğer SSL kullanıyorsanız bu doğru değildir. Benim gibi birkaç saat vakit kaybedip defalarca Docker kurmak istemiyorsanız, SSL kullanmanız halinde doğru port numarası 9443 (Örneğin 192.168.0.122:9443) olmalıdır.

Web tarayıcınız bu adrese bağlanmak istediğinizde çeşitli uyarılar verebilir. Önemli bir şey değil, “Advanced – Accept the Risk and Continue” seçeneklerini seçerek ilerleyebilir ve Portainer ayarlarına geçebilirsiniz. Eğer “Your Portainer instance timed out for security purposes. To re-enable your Portainer instance, you will need to restart Portainer.” uyarısı ile karşılaşırsanız Docker kurulumu yaptığınız sanal makineyi yeniden başlatıp tekrar bağlanmanız gerekecektir.

Portainer ayarları ve Frigate Kurulumu

Öncelikle aşağıdaki açılış ekranını kullanarak bir kullanıcı oluşturmanız gerekiyor.

Proxmox ve Docker Kullanarak Frigate Kurulumu

Kullanıcı oluşturmayı tamamladığınızda karşınıza ana Portainer ekranı çıkacak. “Get Started” tuşuna basarak ilerleyin.

Sağ tarafta göreceğiniz “Live connect” ikonuna basın.

Yeni açılan ekranda sol menüde yer alan “Stacks” seçeneğini seçin.

Açılan ekranda yer alan “Add stack” düğmesine basın.

En üstte yer alan kısmından konteynırınıza bir isim verin. Ben frigate seçtim. Sonra aşağıdaki kodu editöre yapıştırın.

version: "3.9"
services:
  frigate:
    container_name: frigate 
    privileged: true 
    restart: unless-stopped
    image: ghcr.io/blakeblackshear/frigate:stable
    shm_size: "64mb"  #Aşağıyı okuyun
    devices:
      - /dev/dri/renderD128:/dev/dri/renderD128 #Aşağıyı okuyun
    volumes:
      - /etc/localtime:/etc/localtime
      - /opt/frigate/config:/config
      - /mnt/Frigate:/media/frigate #Aşağıyı okuyun
      - type: tmpfs 
        target: /tmp/cache
        tmpfs:
          size: 1000000000
    ports:
      - "5000:5000"
      - "8554:8554" # RTSP feeds
      - "8555:8555/tcp" # WebRTC tcp
      - "8555:8555/udp" # WebRTC udp
    environment:
      FRIGATE_RTSP_PASSWORD: "XXXXXXX" #Aşağıyı okuyun

shm_size: Paylaşılan hafıza ayarları. 2 adetten fazla yüksek çözünürlüklü kamera kullanacaksanız bu rakamı arttırmanız gerekecektir. (https://docs.frigate.video/frigate/installation/)

renderD128: Yazımın başında belirttiğim gibi ben Intel tabanlı donanım hızlandırma kullanmayı tercih ettim. Bu satırı bu özelliği etkin hale getirmek için ekliyoruz.

mnt: Frigate videolarınızı kaydedeceğiniz klasörü buradan ayarlayabilirsiniz.

FRIGATE_RTSP_PASSWORD: Eğer Frigate’e bir parola eklemek isterseniz bu seçenekten tanımlayabilirsiniz.

Tüm ayarlamaları yaptıktan sonra sayfanın en altında bulunan “Deploy the stack” tuşuna basarak Frigate kurulumunu tamamlayın.

Frigate ayarları

Kurulumunu tamamlamış olsak da, ayar dosyasını henüz oluşturmadığımız için Frigate henüz çalışamaz. Bunun için öncelikle Proxmox’da Frigate’ı kurduğumuz sanal makineyi seçerek (benim örneğimde 104 numaralı makine) terminal ekranını açıyoruz.

Proxmox ve Docker Kullanarak Frigate Kurulumu
cd /opt/frigate/config

komutuyla frigate’in ayar dosyalarının saklandığı klasöre geçiyoruz.

nano config.yml

komutuyla dosyayı açın ve içine aşağıdaki kodu yapıştırın ve sisteminiz ya da isteğinize göre gereken değişiklikleri yapın.

birdseye: 
  enabled: true # <------ Kameraları toplu görmenizi sağlayan ekranı açar ya da kapatır.
  mode: continuous

mqtt:
  enabled: True # <------ Mqtt ayarları, Home Assistant ile bağlantıda kullanabilirsiniz.
  host: xxx.xxx.xxx.xxx
  user: username
  password: password
  port: 1883

detectors:
  ov:
    type: openvino
    device: AUTO
    model:
      path: /openvino-model/ssdlite_mobilenet_v2.xml

model:
  width: 300
  height: 300
  input_tensor: nhwc
  input_pixel_format: bgr
  labelmap_path: /openvino-model/coco_91cl_bkgr.txt

cameras:
  Camera1: # <------ Birinci kameranızın adı ve ayarları, her kamera için ayrı ayrı ayar yapabilirsiniz.
    ffmpeg:
      hwaccel_args: preset-vaapi
      inputs:
        - path: rtsp://xxxxxx # <------ Kameranızın yüksek kaliteli yayın adresi
          roles:
            - record
        - path: rtsp://xxxxxx # <------ Kameranızın düşük kaliteli yayın adresi
          roles:
            - detect
    snapshots:
      enabled: True
      bounding_box: True
      retain:
        default: 5
    record:
      enabled: True
      retain:
        days: 0
        mode: motion
      events:
        retain:
          default: 5
          mode: motion
    detect:
      enabled: True
      width: 1080
      height: 720
      fps: 10
    objects:
      track:
        - person
        - cat

Örnek ayarları paylaştığım dosyaya göre, Frigate kamera yayınını izleyerek yayında insan veya kedi olup olmadığını tespit etmeye çalışacak ve bu nesnelerden birini tespit ederse kaydedecektir. Alan sıkıntısı yaşamamak için geçmiş 5 günün kayıtlarını saklıyorum ve sonrasında bu kayıtları siliniyor. Tüm bu ayarları yukarıdaki dosyadan veya Frigate’in arayüzünden değiştirebilirsiniz. Daha detaylı bilgi için https://docs.frigate.video/configuration/reference adresini inceleyebilirsiniz.

Ayar dosyasını CTRL+X, Y, Enter tuşlarına sırasıyla basarak kaydederek çıkabilirsiniz. Sanal makinenizi Proxmox yeniden başlatıp Frigate için belirlediğiniz IP adresinin 5000 nolu portuna (örneğin: 192.168.0.122:5000) bağlanarak Frigate’i kullanmaya başlayabilirsiniz.

Bu uzun yazımda Proxmox üzerinde Docker kullanarak nasıl Frigate kurulumu yapabileceğinizi anlatmak istedim. Yazım sizin için yararlı olduysa, bana bir kahve ısmarlarsanız çok memnun olurum.

Yorum bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir