Unifi Controller – Firmware Upgrade hinter Proxy Server

Unifi Controller – Firmware Upgrade hinter Proxy Server

Mit dem Unifi Controller lässt sich Unifi Hardware wunderbar managen, das Ding läuft auch unter Linux sehr gut und integriert die Netzwerkverwaltung an einer Stelle – eigentlich alles wunderbar. Einzig hinter einem Proxy Server mit restriktiven Einstellungen bei der Firewall hat das Ding seine Probleme – hier hat die Firma Ubiquiti aus unbekannten Gründen keine Proxy Unterstützung integriert.

Im Controller kann man unter Maintenance für alle Firmware Versionen die Dateien cachen – ein Klick auf den „Cache“ Button sollte eigentlich im Hintergrund einen Download starten.

Sobald kein direkter Zugriff auf das Internet möglich ist erscheinen im unifi Logfile folgende Meldungen:

<webapi-126> ERROR system – Error in downloading https://dl.ubnt.com/unifi/firmware/US24P250/3.9.6.7613/firmware.bin

Da auch unser Controller ohne Proxy nicht auf’s Internet zugreifen darf klappt auch das Cachen der Firmware Dateien auf dem Controller nicht.

<webapi-88> WARN system – failed to get firmware update info: connect timed out

Mein Ansatz das Problem zu lösen bzw. zu umgehen ist folgender:

Ich übernehme den Download der Firmware Dateien und lege sie dort ab wo sie der Controller anschließend laden kann, dafür überarbeite ich die „bundles.json“ Datei in der der Pfad der Firmware Datei für den Download hinterlegt ist.

Folgendes Bash-Script erledigt dies:

https://www.grufo.com/get_unifi_firmware.sh.txt

Einfach herunterladen, unter get_unifi_firmware.sh abspeichern und mittels „chmod +x get_unifi_firmware.sh“ ausführbar machen.

Für den Download habe ich einfach am Controller einen nginx Server installiert und die Dateien in dessen Default Ordner abgelegt. Die Pfad müssen im Script entsprechend angepasst werden, ebenso der Proxy Server.

Nach dem Ausführen des Scriptes sollten die Firmware Dateien im angegebenen Ordner zu finden sein und über die Server URL erreichbar sein.

Die bundles.json Datei wurde nach dem Download mit den lokalen Pfaden versorgt, der Controller sollte am Ende des Scripts automatisch neu gestartet worden sein. Im Controller Webinterface kann man sich jetzt neu anmelden und unter Maintenance den Cache der Firmware Dateien aktualisieren.

Nach nur wenigen Klicks sollte die Firmware im Cache geladen sein und die Unifi Endgeräte können direkt darauf zugreifen und das Firmware Upgrade einspielen…

Was mich etwas nachdenklich macht ist dass Unifi es seit längerer Zeit nicht für nötig befunden hat ihren Controller Proxy tauglich zu machen – für Unternehmen sollte ein direkter Internet Zugriff ohne Kontrolle eigentlich tabu sein!

Dieser Beitrag hat 5 Kommentare

  1. Henry

    Danke für das Script! Stellt sich mir die Frage, woher man die aktuellste bundles.json her bekommt.

    1. Manfred

      Mit jeder neuen Version vom Controller bekommt man die aktuellsten Firmware Daten installiert, die bundles.json kommt da immer mit…

      1. Henry

        Ja aber es gibt häufiger FW Updates als Controller Updates. 🙂

  2. Jan

    @ Henry, die bundles.json Datei kann man auch manuell anpassen:
    1) passende firmware.bin von ubiquiti.com herunterladen und Versionsnummer notieren, z.B. 3.9.3.7537
    2) auf einem unix/linux-System den MD5-Hash ermitteln zur Firmware: md5sum , z.B. cbe99db75e656d78111f3783bc804ed2
    3) bundles.json Datei in einem formatfreien Texteditor bearbeiten wie folgt hier am Beispiel einer U7HD-Firmware. Es können mehrere Einträge zum gleichen Modell vorhanden sein. Es wird stets die aktuellste Version genommen:
    { … „U7HD“: {
    „base_model“: „U7HD“, „bundled“: false, „display“: „UniFi AP-AC-HD“, „md5sum“: „cbe99db75e656d78111f3783bc804ed2“, „url“: „http:///firmware/U7HD/3.9.3.7537/firmware.bin“, „version“: „3.9.3.7537“,
    } … }
    4) UniFi-Controller Service neustarten

    1. Manfred

      Hallo Jan, danke für die Info bzw. den Tip! 🙂

Schreibe einen Kommentar