Es geht, UniFi Protect im Docker Container auf eigener ARM64 Hardware installieren!
Ich nutze das nicht produktiv, sondern erstmal nur in einer Testumgebung zum ausprobieren.
Diese Anleitung basiert auf: https://github.com/dciancu/unifi-protect-unvr-docker-arm64.
Funktioniert, einige bugs, kommt aber mit aktuellen Versionen! (meine erste Anleitung mit anderem Repository)
mein Setup:
- Raspberry Pi 4 (4GB)
- Raspberry Pi OS Lite (64bit, Debian 12 Bookworm)
- 500GB SSD mit USB-Adapter (für Pi OS und Storage)
- 2 Kameras (G3 Flex, G3 Micro)
stable und edge
- stable: UniFi OS 3.2.12 mit UniFi Protect 2.9.42 (empfohlen)
- edge: UniFi OS 3.2.12 mit UniFi Protect 4.0.33 (mit der aktuellsten UniFi-Protect Version, läuft nicht immer)
Docker installieren
pi@nvr:~ $ curl -fsSL https://get.docker.com -o get-docker.sh pi@nvr:~ $ sudo sh get-docker.sh pi@nvr:~ $ docker -v Docker version 26.1.4, build 5650f9b
Den aktuellen Benutzer (nicht root) in die Docker Gruppe aufnehmen.
pi@nvr:~ sudo usermod -aG docker ${USER}
Docker
Aktuelles Docker Image laden. (Das Image kommt mit UNVR 3.2.12 und Protect 2.9.42)
pi@nvr:~ sudo docker pull dciancu/unifi-protect-unvr-docker-arm64:stable
docker-compose.yml herunterladen
pi@nvr:~ cd /opt pi@nvr:~ sudo wget https://raw.githubusercontent.com/dciancu/unifi-protect-unvr-docker-arm64/main/docker-compose.yml
und in der docker-compose.yml anpassen
- STORAGE_DISK=/dev/sda2 - TZ=Europe/Berlin
Container starten.
pi@nvr:~ sudo docker compose up -d
Container läuft.
pi@nvr:~ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c224dd7cfdf6 dciancu/unifi-protect-unvr-docker-arm64:stable "/lib/systemd/systemd" About a minute ago Up About a minute unifi-protect
UniFi Protect
Über https://ip-addresse das WebUI starten und das Setup durchklicken.
Dann sofort unter OS Settings → Applications, Auto Update deaktivieren! (Funktioniert eh nicht und ggf. zerschießen wir uns den Container.)
Storage
Anzeige funktioniert.
RTSP Stream
Kann unter Camera → Settings → Advanced aktiviert werden. Der erstellte link muß aber geändert werden.
?enableSrtp am Ende entfernen, Port auf 7447 ändern und Protokoll auf RTSP ändern.
# der erstellte link rtsps://192.168.50.159:7441/POx2DUau80whIS30?enableSrtp # ändern in rtsp://192.168.50.159:7447/POx2DUau80whIS30
Updates
Updates lassen sich nicht über das WebUI installieren. Es muss ein neues Docker Image geladen werden!
Sonstiges
- der UNVR läuft bisher ohne Probleme mit den zwei Kameras
- lässt sich OHNE einen Ubiquiti Account nutzen (auch die Android Protect App)
- einige Funktionen sind nicht verfügbar
- Storage: Anzeige funktioniert
- Fehler: System Config Backup funktioniert nicht
- Fehler: Map (InnerSpace) funktioniert nicht
- Update: geringer Aufwand, neues Image laden (wenn es denn eins gibt)
- Edge: auch die aktuellste Version läuft ohne Probleme
- trotzdem alles ziemlich frickelig …
Leider komme ich weder bei der stable noch im Edge Release nicht weiter. Der Initialfehler ist, dass er
[FAILED] Failed to start PostgreSQL Cluster 9.6-protect.
unifi-protect | See ‘systemctl status postgresql@9.6-protect.service‘ for details.
unifi-protect | [FAILED] Failed to start PostgreSQL Cluster 9.6-main.
unifi-protect | See ‘systemctl status postgresql@9.6-main.service‘ for details.
unifi-protect | Starting UniFi Core…
[FAILED] Failed to start UniFi Core.
unifi-protect | See ‘systemctl status unifi-core.service’ for details.
unifi-protect | [FAILED] Failed to start UniFi Protect.
unifi-protect | See ‘systemctl status unifi-protect.service’ for details. Und dann Protect ebenfalls nicht starten lässt
Habe es gerade nochmal nach meiner Anleitung installiert. (stable)
Läuft problemlos durch. Komme bis ins WebUI für die Ersteinrichtung.
Bei mir sieht das so aus.
PostgreSQL 9.6 muss anscheinend auch nicht laufen, sondern PostgreSQL 14.
root@UNVR:/# systemctl status postgresql@9.6-protect.service
● postgresql@9.6-protect.service – PostgreSQL Cluster 9.6-protect
Loaded: loaded (/lib/systemd/system/postgresql@.service; disabled; vendor preset: enabled)
Active: failed (Result: protocol) since Thu 2024-08-29 19:44:02 CEST; 9min ago
CPU: 148ms
root@UNVR:/# systemctl status postgresql@14-protect.service
● postgresql@14-protect.service – PostgreSQL Cluster 14-protect
Loaded: loaded (/lib/systemd/system/postgresql@.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/postgresql@14-protect.service.d
└─clean-postmaster-pid.conf, slow-query.conf, unifi-protect.conf
Active: active (running) since Thu 2024-08-29 19:44:05 CEST; 7min ago
Main PID: 287 (postgres)
Tasks: 10 (limit: 587)
CPU: 3.596s