Migrazione da Monument 2 a Immich
Questo post potrebbe trasformarsi in un grande sproloquio sulla necessità di strumenti open-source da parte di aziende che vendono hardware che dovrebbero essere di lunga durata, ma se state leggendo questo articolo, probabilmente avete vissuto la stessa cosa che ho vissuto io negli ultimi mesi.
Monument è un’azienda di Chicago, IL, con 5 dipendenti. Hanno proposto un sistema di gestione delle foto su Kickstarter nel 2017. Ho finanziato il modello iniziale e mi è piaciuto molto. Certo, c’erano delle limitazioni, ma era infinitamente meglio di altre soluzioni disponibili all’epoca. L’hardware era un po’ lento e hanno rilasciato un dispositivo aggiornato, Monument 2, nel 2022.
La migrazione da Monument 1 a Monument 2 non fu priva di intoppi, ma tutto procedeva piuttosto bene, c’era una roadmap per le funzionalità in fase di sviluppo in cui gli utenti potevano segnalare bug o contribuire con idee, e le prestazioni erano piuttosto piacevoli. Il punto di forza di Monument 2 era la possibilità di creare link che potevano essere utilizzati per condividere album o singole foto con persone non registrate come utenti su Monument.
Tutto questo, però, è cambiato nella seconda metà del 2023. È emerso che la condivisione pubblica di Monument 2, così come l’accesso dall’esterno a Monument 1 e 2, si basa sul routing AWS, attraverso un’abile mappatura DNS inversa tra utenti, si presume. Ma con la guerra in Ucraina, è diventato evidente che parte dello sviluppo effettuato dal team di Monument dipendeva da sviluppatori ucraini. Non c’è motivo per cui non avrebbero dovuto farlo. Solo che dipendevano completamente da loro e, quando la guerra ha conquistato l’intero Paese e ha mobilitato tutti gli uomini dai 18 anni in su nell’esercito, i sistemi cloud di Monument hanno iniziato a rompersi. Dapprima si è trattato di un’interruzione di un paio di settimane che ha causato problemi. Poi, all’inizio di settembre, l’infrastruttura ha ceduto di nuovo e, a tutt’oggi, non è ancora stata riparata.
Frustrato e, in quanto genitore di un bambino, desideroso di condividere le foto di quest’ultimo con i nonni e gli altri membri della famiglia, mi sono affidato alla funzione di album condiviso della Monument 2. Ho dovuto quindi cercare un’alternativa. Ho quindi dovuto cercare un’offerta alternativa che potessi gestire da solo, senza dipendere da servizi commerciali a sorgente chiusa che potevano andare in tilt a causa dell’indisponibilità di una persona diversa da me.
Dopo aver trascorso una considerevole quantità di tempo a cercare tra i numerosi confronti tra le librerie open source disponibili, ne ho provate due: Photoprism e Immich. Photoprism utilizza il sistema sempre più comune delle edizioni “comunitarie” e “a pagamento”. Ma mi sono subito reso conto che mentre Photoprism funziona bene per un singolo utente, l’edizione comunitaria rende difficile una configurazione multiutente. È necessario utilizzare la CLI per creare e gestire gli utenti. Ho quindi provato Immich.
Immich richiede più risorse di Photoprism, ma credo che i risultati ne valgano la pena. Poiché viene eseguito come uno stack docker compose, è relativamente facile virtualizzarlo su più server (se ne avete accesso) o fargli utilizzare unità di archiviazione specifiche collegate alla vostra macchina. Avevo a disposizione un Mac Mini del 2010, che era stato aggiornato a 8 GB di RAM, che ho prontamente formattato per utilizzare Ubuntu server 22.04 barebone e ho seguito le istruzioni per l’installazione di Docker contenute nella documentazione completa.
Dopo che Immich è stato avviato e funzionante, ho dovuto iniziare a migrare le circa 60.000 foto e qualche migliaio di video dalla mia Monument 2. Il modo più semplice che ho trovato, perché è stato quello di far passare le foto e i video da un server all’altro, è stato quello di farli migrare. Il modo più semplice che ho trovato, perché sono paranoico riguardo alla perdita di dati, è stato quello di esportare tutte le foto di ogni utente sul disco rigido esterno del mio desktop (una cartella per ogni utente). Questa operazione può richiedere una notevole quantità di spazio.
Dopo che tutte le foto erano accessibili sul mio disco rigido, ho seguito le istruzioni del documento Immich sul caricamento in blocco. Ciò ha comportato l’accesso come utente, la creazione di una chiave API e l’esecuzione di un’operazione di importazione massiva sulla cartella di ciascun utente con la relativa chiave API. Si tratta di un’operazione che richiede tempo, ma non eccessivamente dolorosa. Anche su Windows, la CLI di nodejs è banale da installare ed eseguire il bulk uploader.
Dopo aver completato l’importazione e aver regolato il conteggio dei thread dei vari lavori in modo da non soffocare il povero Intel Core 2 Duo del Mac Mini (l’impostazione predefinita è di 5 thread per quasi tutto!)
Ho dovuto semplicemente creare i record DNS e il reverse proxy per la mia istanza e inviare le password dei miei utenti.
Potrebbe esserci un modo migliore per importare da Monument a Immich, ma non l’ho ancora esaminato.
Tenere presente che configurare Immich non è semplice come configurare Monument 2. Sono davvero deluso dal modo in cui Monument ha lasciato cadere la palla, perché se avessero semplicemente creato un’API per aprire il reverse-DNS che stavano facendo, gli utenti più esperti di tecnologia avrebbero potuto costruire la propria infrastruttura per mantenere i servizi e il dispositivo in vita. Invece, ora sono l’orgoglioso proprietario di un altro pezzo di hardware defunto.
Detto questo, la documentazione è davvero semplice se si ha una certa familiarità con il funzionamento di Linux e di docker. Anche se non siete sicuri del funzionamento interno di Docker, leggete le istruzioni e procedete in modo corretto. È sufficiente non avere paura di digitare alcuni comandi attraverso un terminale per eseguire programmi su un computer.