Unifi Protect im Docker Container in einer arm64 Debian VM installieren
Beschreibung:
Unifi UNVR im Docker Conatiner 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.
Grundinstallation Docker und Einbungung Festplatte
Installation Docker, als root per ssh einloggen
apt install docker.io gdisk
Nun eine weitere Festplatte hinzufügen und diese Partitionieren wenn nicht schon geschehen
Mit lsbk die neue Festplatte ermitteln
oot@unnvr:~# 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
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 haben 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
Die Grub config um diesen Eintrag erweitern.
/etc/default/grub
Inhalt:
GRUB_CMDLINE_LINUX_DEFAULT="quiet systemd.unified_cgroup_hierarchy=0"
Sollten schon andere parameter drin stehen diese logischerweise hinzufügen und nicht ersetzten...
nun update grub ausführen
update-grub
Neustarten
reboot
Erstellen der Docker instanz durch pullen von dockerhub
Folgendes script laufen lassen, die Pfade sind angepasst auf /unvr
Soll der conateiner automatisch gestartet werden an den Befehl noch
--restart always hinter -d
dranhängen
docker run -d --name unifi-protect \
--privileged \
--tmpfs /run \
--tmpfs /run/lock \
--tmpfs /tmp \
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
-v /unvr/srv:/srv \
-v /unvr/data:/data \
-v /unvr/persistent:/persistent \
--network host \
-e STORAGE_DISK=/dev/sdb2 \
-p 443:443 \
-p 80:80 \
-p 7446:7446 \
-p 7443:7443 \
-p 8443:8443 \
markdegroot/unifi-protect-arm64
Mit Autostart Flag
docker run -d --restart always --name unifi-protect \
--privileged \
--tmpfs /run \
--tmpfs /run/lock \
--tmpfs /tmp \
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
-v /unvr/srv:/srv \
-v /unvr/data:/data \
-v /unvr/persistent:/persistent \
--network host \
-e STORAGE_DISK=/dev/sdb2 \
-p 443:443 \
-p 80:80 \
-p 7446:7446 \
-p 7443:7443 \
-p 8443:8443 \
markdegroot/unifi-protect-arm64
Nun 9-10 Minuten warten
Dann unter https://ip:443 aufrufbar
Autostart conatiner
Den container beenden.
mit
docker stop unifi-protect
Und nun starten mit dem Befehl always run
docker run unifi-protect --restart always
Fehler:
Wenn wir folgende Fehler bekommenr (or any systemd error):
Failed to create /init.scope control group: Read-only file system
Failed to allocate manager object: Read-only file system
[!!!!!!] Failed to allocate manager object.
Exiting PID 1...
Die Grub config um diesen Eintrag erweitern.
/etc/default/grub
Inhalt:
GRUB_CMDLINE_LINUX_DEFAULT="quiet systemd.unified_cgroup_hierarchy=0"
Sollten schon andere parameter drin stehen diese logischerweise hinzufügen und nicht ersetzten...
nun update grub ausführen
update-grub