Pod koniec zeszłego miesiąca walczyłem z ciągłym restartem dockerowej instancji Immich na RPi4B, wywołanymi problemami z generowaniem miniaturek zdjęć. Patrząc na liczne komentarze zarówno na Githubie, jak i na Reddicie, nie byłem jedynym użytkownikiem.
Houston, mamy problem
Przejrzałem logi w dockerze i powtarzały się następujące informacje:
Initializing Immich v1.139.3
Detected CPU Cores: 4
Źródło problemu
Prawdziwa przyczyna tkwiła w kompatybilności narzędzi do przetwarzania obrazów z procesorem Raspberry Pi 4.
Analiza logów oraz testy pokazały, że libvips z Debiana (v8.16) działa OK, ale ta sama biblioteka w wersji v8.17, dołączona do kontenerów Immich, wywołuje błąd „Illegal instruction”. Pierwsze nieprawidłowości zauważono po aktualizacji Immich do wersji v.1.139.3
, w kolejnych wydaniach ten problem ponownie wystąpił
Winna była kompilacja pod NEON_WITHOUT_AES, która w tej architekturze ARM ładuje instrukcje niedostępne dla Raspberry – i silnik pada.
Tymczasowe rozwiązanie
Tymczasowe rozwiązanie, które zostało potwierdzone przez wielu użytkowników, polega na wyłączeniu przetwarzania wektorowego w libvips
poprzez dodanie flagi w .env
VIPS_NOVECTOR=1
Następnie należało restartować dockerowy stack i z poziomu administracji uruchomić zadania skanowania biblioteki zewnętrznej lub stworzenia bądź odświeżenia miniaturek
Note
Publikuję to w ramach 100 Days To Offload ↗. Możesz dołączyć samodzielnie, odwiedzając stronę 100DaysToOffload.com ↗