Direkt zum Hauptinhalt

Unifi Protect im Docker Container in einer arm64 Debian VM installieren

    
    
    
  1. apt install docker.io
  2. Beschreibung:

    Unifi UNVR im Docker installierenConatiner auf einem ARm64 Host. Wir können einmal das Image aus dem Docker Hub Pullen oder uns auch ein eigenes Image bauen. Erstmal die Variante mit dem Pullen.

    Vorraussetzung:

    Einmal ein arm64 Host in dem Docker installiert ist.
    Eine zweite HDD mindesten 128 GB groß. würde aber eine Größe wählen die größer ist. Unbedingt eine Partioion und ext4 so kann sie on the fly vergrößert werden.

    Installation Docker, als root per ssh einloggen

    apt install docker.io
  3.  Nun Docker volumes anlegen. unifi braucht zwei persistent Volumes.
    Das erste für die Datenbank, das zweite für die Videoaufnahmen.

    docker volume create unifi-protect
    docker volume create unifi-protect-postgresqlgdisk

    StandarmäßigNun speichereine Dockerweitere alleFestplatte Volumeshinzufügen inund /var/lib/docker/volumesdiese Partitionieren wenn nicht schon geschehen
    möchteMit manlsbk dasdie Imageneue fürFestplatte unifi-prtotect woanders hin haben wo mehr platz ist dann
    ermitteln

    dockeroot@unnvr:~# volumelsblk
    NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    sda      8:0    0    32G  0 disk 
    ├─sda1   8:1    0   512M  0 part /boot/efi
    ├─sda2   8:2    0  30.5G  0 part /
    └─sda3   8:3    0   976M  0 part [SWAP]
    sdb      8:16   0   256G  0 disk 
    sr0     11:0    1 329.3M  0 rom  
    

    sdb ist die gewünschte Festplatte

     

    nun partitonieren

    gdisk /dev/sdb
    
    dann o eingeben für neues layout
    dann n eingeben für eine neue partition
    
    alles durchentern
    
    nun w für schreiben
    und exit
    

    Nun Dateisystem ext4 erzeugen auf sdb1

    mkfs.ext4 /dev/sdb1

    Nun ein verzeichnis für den mount point erstellen

    mkdir /unvr

    Nun die part UUID auselsen

    blkid /dev/sdb1
    /dev/sdb1: UUID="a396f93a-305e-4412-9040-5c51c9203f78" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Linux filesystem" 
    PARTUUID="c9c72c32-250f-4b08-b74f-0aadc682d313"
    

    Nun ahben wir die UUID. Mit dieser serstellen wir einen automount in der fstab.

    nano /etc/fstab

    Dort tragen wir unsere UUID ein dann das Mountverzeichnis das Dateisystem

    ...
    UUID=a396f93a-305e-4412-9040-5c51c9203f78  /unvr      ext4    defaults,errors=remount-ro 0       1
    ...

    testen des mount points.
    Wenns geklappt hat können wir mit

    mount /unvr

    die Festplatte mounten.
    Das Ergebnis ob gemountet sehen wir durch lsblk

    lsblk
    NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    sda      8:0    0    32G  0 disk 
    ├─sda1   8:1    0   512M  0 part /boot/efi
    ├─sda2   8:2    0  30.5G  0 part /
    └─sda3   8:3    0   976M  0 part [SWAP]
    sdb      8:16   0   256G  0 disk 
    └─sdb1   8:17   0   256G  0 part /unvr
    sr0     11:0    1 329.3M  0 rom 

     

    Fehler:

    Wenn wir folgende Fehler bekommenr (or any systemd error):

    Failed to create -o/init.scope type=nonecontrol -ogroup: o=bindRead-only -ofile device=/meinpfadmitviel/speichersystem
    unifi-protectFailed Beispielto dockerallocate volumemanager createobject: -oRead-only type=nonefile -osystem
    o=bind[!!!!!!] -oFailed device=/mnt/externehddto unifi-protectallocate manager object.
    Exiting PID 1...
    

    Die Grub config um diesen Eintrag erweitern.

    /etc/default/grub

    Inhalt:

    GRUB_CMDLINE_LINUX_DEFAULT="systemd.unified_cgroup_hierarchy=0"
    
    Sollten schon andere parameter drin stehen diese logischerweise hinzufügen und nicht ersetzten...

     


  4. Optional kann auch ein eigenes VLAN in unserem Fall ein VLAN 100 Erstellt werden wo der
    Rekorder (Unserer Docker Protect) und die Kameras rein kommen.

    docker network create \
      --driver macvlan \
      --subnet 192.168.100.0/24 \
      --gateway 192.168.100.1 \
      --opt parent=eth0.100 \
      video

  5. Nun nur noch ausführen. Im befehl die IP Anpassen

    docker run \
      --name unifi-protect \
      --ip 222.222.1.170 \
      -v unifi-protect:/srv/unifi-protect \
      -v unifi-protect-postgresql:/var/lib/postgresql \
      --tmpfs /tmp \
      iamjamestl/unifi-protect

    oder Optional mit nem eigenen Netz für Video muss noch der Netzname angebenen werden. Wie wir ihn oben erstellt haben. In unserem Beispiel Video

    docker run \
      --name unifi-protect \
      --net video \
      --ip 222.222.1.170 \
      -v unifi-protect:/srv/unifi-protect \
      -v unifi-protect-postgresql:/var/lib/postgresql \
      --tmpfs /tmp \
      iamjamestl/unifi-protect



    Nach dem starten kann die Weboberfläche über

    http://<ip-of-the-container>:7080/

    geöffnet werden.