Migration de Monument 2 vers Immich

Cet article pourrait se transformer en un long discours sur le besoin d’outils open-source de la part d’entreprises qui vendent du matériel censé durer longtemps, mais si vous lisez ceci, c’est que vous avez probablement vécu la même chose que moi au cours des derniers mois.

Monument est une entreprise de Chicago, IL, qui compte 5 employés. Ils avaient proposé un système de gestion de photos soigné sur Kickstarter en 2017. J’ai soutenu le premier modèle et je l’ai adoré. Il y avait des limites, bien sûr, mais c’était infiniment mieux que les autres solutions disponibles à l’époque. Le matériel était un peu lent, et ils ont sorti un appareil amélioré, le Monument 2, en 2022.

La migration de Monument 1 à Monument 2 ne s’est pas faite sans heurts, mais tout se passait plutôt bien, il y avait une feuille de route pour les fonctionnalités en cours de développement où les utilisateurs pouvaient signaler des bugs ou apporter des idées, et les performances étaient plutôt agréables. Le principal atout de Monument 2 était la possibilité de créer des liens permettant de partager des albums ou des photos individuelles avec des personnes qui n’étaient pas enregistrées en tant qu’utilisateurs sur Monument.

Mais tout cela a changé au cours du second semestre 2023. Il s’avère que le partage public de Monument 2, ainsi que l’accès aux Monuments 1 et 2 depuis l’extérieur de la maison, repose sur le routage AWS, par le biais d’un mappage DNS astucieux entre l’utilisateur et l’inverse, suppose-t-on. Mais avec la guerre en Ukraine, il est devenu évident qu’une partie du développement effectué par l’équipe de Monument dépendait de développeurs ukrainiens. Rien ne s’y oppose. Sauf qu’ils étaient complètement dépendants d’eux, et comme la guerre s’est emparée de tout le pays et a mobilisé tous les hommes âgés de 18 ans et plus dans l’armée, les systèmes en nuage de Monument ont commencé à tomber en panne. Il y a d’abord eu une panne de quelques semaines qui a causé des problèmes. Puis, au début du mois de septembre, l’infrastructure s’est à nouveau effondrée et, à ce jour, n’a toujours pas été réparée.

Frustrée et, en tant que parent d’un enfant en bas âge, désireuse de partager les photos de cet enfant avec les grands-parents et d’autres membres de la famille, je me suis appuyée sur la fonction d’album partagé du Monument 2. J’ai donc dû chercher une offre alternative que je pouvais gérer moi-même sans dépendre de services commerciaux à code source fermé qui pouvaient tomber en panne parce que quelqu’un qui n’était pas moi n’était pas disponible.

Après avoir passé un temps considérable à faire des recherches dans les comparaisons approfondies des bibliothèques open source disponibles, j’en ai essayé deux : Photoprism et Immich. Photoprism utilise le système de plus en plus courant des éditions « Community » et « payantes ». Mais j’ai rapidement réalisé que si Photoprism fonctionne bien pour un seul utilisateur, l’édition communautaire rend difficile une installation multi-utilisateurs. Il faut utiliser le CLI pour créer et gérer les utilisateurs. J’ai donc essayé Immich.

Immich est plus gourmand en ressources que Photoprism, mais je pense que les résultats en valent la peine. Parce qu’il fonctionne comme une pile docker compose, il est relativement facile de le virtualiser sur plusieurs serveurs (si vous y avez accès), ou de lui faire utiliser des disques de stockage spécifiques que vous avez attachés à votre machine. J’avais un mac mini 2010 qui traînait, qui avait été mis à niveau avec 8 Go de RAM, que j’ai rapidement formaté pour utiliser Ubuntu server 22.04 barebones, et j’ai travaillé sur les instructions d’installation de Docker dans la documentation complète.

Une fois Immich opérationnel, j’ai dû commencer à migrer les quelque 60 000 photos et quelques milliers de vidéos de mon Monument 2. La méthode la plus simple que j’ai trouvée, parce que je suis paranoïaque à propos de la perte de données, a été d’exporter toutes les photos de chaque utilisateur sur le disque dur externe de mon bureau (un dossier pour chaque utilisateur). Cela peut prendre un espace considérable, c’est certain.

Une fois toutes les photos accessibles sur mon disque dur, j’ai suivi les instructions du document d’Immich sur le téléchargement en masse. Cela impliquait de se connecter en tant qu’utilisateur, de créer une clé API, puis d’exécuter une tâche d’importation en masse sur le dossier de chaque utilisateur avec la clé API correspondante. Cela prend du temps, mais n’est pas trop pénible à faire. Même sous Windows, l’interface de programmation nodejs est facile à installer et à utiliser pour le téléchargement en masse.

Une fois l’importation terminée, et après avoir ajusté le nombre de threads des différentes tâches de manière à ne pas étouffer le pauvre Intel Core 2 Duo du Mac Mini (la valeur par défaut est de 5 threads pour presque toutes les tâches !)

Il ne me restait plus qu’à créer les enregistrements DNS et le reverse proxy pour mon instance, et à envoyer les mots de passe de mes utilisateurs.

Il existe peut-être une meilleure façon d’importer de Monument vers Immich, mais je ne l’ai pas encore étudiée.

N’oubliez pas que la configuration d’Immich n’est pas aussi simple que celle de Monument 2. Je suis vraiment déçu de la façon dont Monument a laissé tomber cette affaire, car s’ils avaient simplement créé une API pour ouvrir le reverse-DNS qu’ils faisaient, les utilisateurs les plus doués en technologie auraient pu construire leur propre infrastructure pour maintenir les services, et l’appareil, en vie. En l’état actuel des choses, je suis l’heureux propriétaire d’une autre pièce de matériel défectueuse.

Cela dit, la documentation est vraiment simple si vous êtes quelque peu familier avec le fonctionnement de Linux et de Docker. Même si vous n’êtes pas sûr du fonctionnement interne de Docker, vous pouvez lire les instructions et vous frayer un chemin jusqu’au bout. Il suffit de ne pas avoir peur de taper quelques commandes dans un terminal pour exécuter des programmes sur un ordinateur.