Connexion Premium

[Tuto] Quitter Google/Apple Photos et installer Immich (open source) sur un petit VPS

Clic Clac c’est dans VOTRE boite

[Tuto] Quitter Google/Apple Photos et installer Immich (open source) sur un petit VPS

Illustration : Flock

Et si vous repreniez la main sur vos données ? Après les mots de passe, nous vous expliquons comment sauvegarder vos photos sur un serveur (VPS) maison grâce à Immich, une application gratuite et open source. Les amateurs de Google Photos ne seront pas dépaysés.

Quand nous avons commencé nos articles sur les VPS, l’idée était simple : louer pour quelques euros par mois un serveur privé virtuel afin de reprendre possession de nos données, via des applications open source. Nous avons déjà expliqué comment installer le gestionnaire de mots de passe Vaultwarden et un VPN. N’oubliez pas de vérifier et de renforcer la sécurité, un serveur exposé sur Internet est attaqué plusieurs milliers de fois par jour en moyenne.

Immich, un clone open source de Google Photos

Aujourd’hui, on s’attaque à vos photos et vidéos. Pour remplacer Google et Apple Photos, il existe plusieurs alternatives. Nous avons choisi Immich, dont la version 3.0.0 a été mise en ligne cet été. Immich est composé d’une partie serveur (pour stocker les données) et de clients mobiles, pour Android et iOS.

Immich recommande une machine avec 6 Go de mémoire et 2 vcores minimum. Notre VPS de test en a respectivement 8 et 4. La méthode d’installation décrite dans le guide de démarrage rapide passe par Docker, que nous avons déjà installé pour Vaultwarden.

Nous pouvons donc entrer dans le vif du sujet. Comme toujours, on se connecte à notre VPS via PuTTy. Si vous avez bien suivi notre tuto sur la sécurité, normalement vous n’utilisez plus de mot de passe pour la connexion, mais une clé SSH.

Téléchargement et installation en quelques lignes de commandes

Il reste 73% de l'article à découvrir.

Cadenas en colère - Contenu premium

Soutenez un journalisme indépendant,
libre de ton, sans pub et sans reproche.

Accédez en illimité aux articles

Profitez d'un média expert et unique

Intégrez la communauté et prenez part aux débats

Partagez des articles premium à vos contacts

Commentaires (32)

votre avatar
Reste à déporter le stockage dans le S3 de Next !
Merci, Seb'
votre avatar
DB_PASSWORD=NextFTW (mettez un vrai mot de passe solide)

Il faut aussi changer l'utilisateur. Le user postgres est un utilisateur à privilèges, il me semble. D'ordre général, j'éviterais d'utiliser une base postgresql installée via un compose file sur une prod exposée. Il vaut mieux que les containers se connectent à une instance proprement configurée et sécurisée.

Un autre critère de hardening à vérifier sur le reverse proxy : s'assurer qu'il bloque bien l'accès au .env si celui-ci fini d'une manière ou d'une autre dans le container (volume monté ou que sais-je). Bloquer tout ce qui est .env et .git est aussi une bonne pratique (avec un retour 404, le 403 peut laisser supposer leur existence réelle).
votre avatar
Oui, l'utilisateur postgres fait partie de rôles permettant de gérer les permissions, les création de rôles, bref : toute l'administration.
Comme toujours, si uniquement lecture/écriture sur certaines tables est établi, un utilisateur disposant des moindres privilèges nécessaires devrait être préféré. Si l'instance de SGBD est déployée en conteneur, on peut aussi faire en sorte qu'elle soit dédiée et non mutualisée, de façon à limiter l'impact quand elle se fera trouer.
Sécurité en profondeur, quoi… Mais bon : la flemme demeure l'ennemi habituel.

Il faut reconnaître que se fader la configuration d'un SGBD, j'ai développé de l'urticaire pour cela il y a plusieurs décennies et j'essaie autant que faire se peut de me l'éviter. Les machins complexes et dont il faut être expert pour les optimiser : j'ai décidé que j'avais d'autres loisirs… :D

Pas compris la partie sur le service Web des fichiers de configuration de conteneurs… oO
Servir une arborescence contenant des choses critiques que l'on va spécifiquement interdire fleure bon les anti-motifs de sécurité qu'il était légion de réaliser avec cette horreur d'Apache HTTP Server dans les années 1990.
Le serveur mandataire inverse ne devrait servir que des connexions aux port(s) réseau du conteneur hébergeant l'application, et s'il y a besoin de servir du contenu hors-conteneur, le faire sur un chemin isolé, "de données".
votre avatar
Pour le point sur les fichiers .env ou .git, c'est dans le cas où le container les expose pour une raison X ou Y. (défaut de construction, incompétence, etc.)

C'est simple, quand je regarde les logs d'accès et d'erreurs de mes sites web, beaucoup de monde est extrêmement intéressé par ces dossiers/fichiers. Perso je n'en ai jamais puisque tous mes sites sont statiques. Mais si on ne maîtrise pas le build du container et si on analyse encore moins ce qu'il va exposer via son entrée Web, vaut mieux bloquer dès que possible les patterns à risque d'une manière générale.

Après, cela devrait plutôt se trouver au niveau d'un WAF que du reverse proxy de nos jours.
votre avatar
J’ai fais ça le mois dernier, j’en suis très-très content. La reconnaissance faciale est un gros plus ! Un super projet open-source à suivre.
votre avatar
J'ai entendu parlé de Immich la semaine dernière, je n'ai pas encore eu le temps de tester, ce tuto tombe à pic !
votre avatar
Merci pour ce tuto. Je fais tourner Immich sur mon nas avec 60k photos. Like a breeze
votre avatar
Je crois que c'est mon premier commentaire, mais juste merci Next, pour tout ces tutos!
Il ne me parle pas tous mais me font découvrir plein de choses.
votre avatar
Merci pour tous ces petits articles sympas sur les applis selfhosted !

A force, un tuto sur une solution type Pangolin serait bienvenue aussi pour simplifier la gestion des accès externes ! Une idée de prochain tuto ? ;-)

Pour le compose d'immich, je rajouterai de laisser "immich-server" sur le bridge mais de rajouter un network de type internal et de ne mettre base, cache et machine-learning que dans le internal... donc pas accessibles du dehors du tout
un truc de ce genre

networks:
pangolin: # bridge externe = que pour immich-server
external: true
immich: # tous les containers pour qu'ils echangent qu'entre eux
name: immich
internal: true


A noter que Pangolin utilisant Traefik en interne, ils acceptent ce genre de labels pour définir la conf accès externe directement

labels:
- pangolin.public-resources.{{ stack_name }}.name={{ pangolin_name }}
- pangolin.public-resources.{{ stack_name }}.full-domain={{ dns_alias }}.{{ dns_info.domain }}
- pangolin.public-resources.{{ stack_name }}.ssl=true
- pangolin.public-resources.{{ stack_name }}.auth.sso-enabled=true
- pangolin.public-resources.{{ stack_name }}.auth.sso-roles[0]=Member
- pangolin.public-resources.{{ stack_name }}.protocol=http
- pangolin.public-resources.{{ stack_name }}.targets[0].method=http
- pangolin.public-resources.{{ stack_name }}.rules[0].action=pass
- pangolin.public-resources.{{ stack_name }}.rules[0].match=path
- pangolin.public-resources.{{ stack_name }}.rules[0].value=/admin/*
- pangolin.public-resources.{{ stack_name }}.rules[1].action=allow
- pangolin.public-resources.{{ stack_name }}.rules[1].match=path
- pangolin.public-resources.{{ stack_name }}.rules[1].value=/share/*

J'utilise ansible, d'où les variables
Ici on donne accès à Immich depuis un alias en https, mais il faut être dans le groupe "Member", les urls /admin/ demandent d'être dans le group "Admin" et les url /share/ sont ouvertes sans authent (pour les partages)
votre avatar
Immich est le projet open source qui m'a fait prendre goût au self host. Ça prend du temps de tout bien configurer comme il faut et de migrer toute sa bibliothèque éparpillée à droite et à gauche mais bon sang qu'est-ce que c'est agréable de pouvoir profiter de ce service, avec toutes les fonctionnalités qui sont ajoutées régulièrement, c'est un pur bonheur !

Si vous vous intéressez un peu au self host (ce que j'imagine est le cas d'une grande partie de la communauté ici) je ne peux que vous le conseiller 😊
votre avatar
J'ai justement installé immich (via compose) y'a une dizaine de jour dans mon NAS fait maison sur lequel je fais tourner OpenMediaVault.
Pas encore réussi à installer la sauvegarde auto vers le S3 de Next mais c'est une autre histoire.

J'ai choisi d'utiliser la bibliothèque externe pour la gestion des médias, uniquement en read-only.
Cela me permet de continuer à alimenter le NAS via le partage réseau uniquement et immich ne sert qu'en consultation web. La gestion des comptes n'est pas encore si simple.
Leur notion de bibliothèque rattachée à un seul utilisateur rend, selon moi, plus difficile l'usage familial quand on veut partager les données.
Immich donne pour le moment en solution de démultiplier le traitement IA et les méta-données autant qu'il y a d'utilisateurs (ce qui peut avoir du sens si plusieurs utilisateurs sont actifs). Cela ne résout pas le problème qu'une bibliothèque possède un unique propriétaire (du travail est en cours sur ce sujet si j'ai bien compris mes lectures sur reddit).
Pour ma part, je suis le seul qui va administrer donc un seul compte familial non admin et j'ai créé des comptes admin à côté.
L'avantage du read-only, impossible qu'un utilisateur moins habitué supprime vraiment des données par inadvertance. Inconvénient : la solution permet d'identifier des doublons, des images proches, ça serait facilitant de pouvoir taper directement sur les fichiers quand ça s'y prête.

Pour donner des ordres de grandeur, ma bibliothèque externe comporte un peu plus de 90 000 photos et 2000 films. J'ai lancé l'ensemble des fonctions d'immich pour la reconnaissance faciale et la création des index, etc.
Le NAS a 32Go de RAM et un i5-9600T et travaille uniquement sur des SSD. Les données sont sur un NVME de 4To Samsung S990 evo. La base de données est sur un vieux SSD samsung MLC de 128Go (840 PRO).
Sur la base de ce matériel, le serveur a mis environ 16h à faire l'ensemble des traitements, avec une occupation à 100% du processeur pendant 13h puis un palier de 3h à environ 70% (suivi via télémétrie OMV + prise connectée en amont de la baie). En terme de RAM, c'est monté à 6Go assez rapidement puis jusqu'à la fin du traitement.

La bonne surprise : c'est extrêmement fluide à l'usage.
Côté reconnaissance faciale, petit effet collatéral des photos de groupe (mariages, universités, voyages,...), immich m'a détecté presque 4 000 visages uniques en premier traitement. Heureusement, on peut fusionner peu à peu les regroupements qu'il n'a pas su faire (un enfant pris en photo qu'une fois par an est souvent vu unique à chaque fois) et on peut aussi "oublier" les visages sans intérêt pour nous (la grand-tante du frère de la soeur d'un ami de ma femme qui s'est marié m'importe assez peu :-D ).
Le travail est toujours en cours entre les demi-visages à bien retrouver et les innombrables visages uniques trouvés sur des photos de voyage. Je suis déjà descendu à 2600 visages restants, la route est encore longue !

Côté index, c'est plutôt bien foutu même si l'IA a des réactions bizarres. En cherchant "dragon" (voyages en asie), j'en retrouve énormément mais aussi des photos sans aucun lien compréhensible. D'autres mots comme plage, voiture marchent plutôt bien.
Un truc bien est la recherche par contexte avec des filtres multiples. Par exemple, une seule recherche pour trouver toutes les photos où tous les membres de la famille sont présents est pratique pour un album.

En terme d'impact sur le serveur, en idle, j'ai même pas vraiment pris 1W de conso en plus, mais la RAM est à 3,5Go au lieu de 1Go avant son installation. Evidemment, si on sollicite la visualisation et des traitements, cela monte mais je n'ai pas consulté plus que ça car je sais que le serveur est large.

Je n'ai que 10 jours d'usage mais si vous avez une question sur l'après démarrage, je peux toujours regarder ce que ça donne de mon côté pour vous donner une réponse.
votre avatar
Moi aussi je suis passé récemment à Immich après avoir quitté Goggle totalement et progressivement il y a plus d'un an et je ne peux que recommander cette gestion des photos qui n'a rien à envier aux GAFAM (surtout la reco des visages et la recherche par mots clés : plage, arbre, chien...)

En ce qui me concerne, je n'ai pas eu besoin de faire compliqué : l'installation s'est faite très facilement/rapidement via un paquet (App) sur l'OS TrueNAS community Edition installé sur un NAS UGreen avec 8Go de RAM, pas de SSD et proc Intel Pentium G dont 2 cœurs sont dédiés à Immich, C'est étonnant de voir à quel point c'est réactif, même si les disques "gratouilles" sans arrêt lors de consultations -> j'imagine qu'avoir des SSD vaut vraiment le coup lorsqu'ils redeviendront abordables !
votre avatar
Intéressant de savoir que ça marche avec un pentium!
Initialement, le serveur devait avoir un proxmox et OMV virtualisé avec quelques autres services, ça explique son matériel.

Finalement, vu le temps à y passer pour le MCO, j'ai mis directement OMV et je complète avec les xtra et compose.
Pas de besoin d'accès à distance via cette machine, c'est mon routeur qui gère une connexion Wireguard.
Du coup, le pentium acheté Initialement suffirait, ça me fait une pièce de rechange possible, bonne nouvelle.

Pour les SSD, je voulais surtout limiter les vibrations car la baie informatique n'est pas loin de la chambre et j'ai une ouïe très sensible. Un SSD est aussi à quasi rien en consommation en idle, à peine plus en traitement, alors qu'on disque mécanique prend qques watts.

Et il faut aussi dire que j'ai pu l'avoir en nov-2025 à seulement 230€, je suis large avec les 4To mais le marché semblait déjà partir à la hausse.

Je n'ai pas encore mis de carte réseau multigig donc le gain à l'upload n'est pas vraiment sensible mais je sature le lien 1 Gbps à coup sûr.
En consultation, c'est parfait car la navigation est instantanée dans les répertoires.
votre avatar
Ça n'est pas non plus un Pentium ancienne génération. Pour être plus précis, le processeur est un "Intel X86 12th Generation Intel® Pentium® Gold 5 Cores 6 Threads" que l'on trouve dans le UGREEN NASync DXP4800 Plus, Mais seulement 2 CPUs (cœurs) ont été dédiés à Immich.
Par contre après avoir ingéré la bibliothèque de 22k photos et plus de 500 vidéos (92Go), il a mis pas loin d'une vingtaine d'heures pour les différentes reconnaissances (surtout recherches intelligentes, détection des visages, reconnaissance faciale, OCR).
En revanche, je ne remarque aucune lenteur dans la consultation et recherches : toutes les pages s'affichent instantanément.
Autre point : le système de fichiers du TrueNAS est du ZFS.
votre avatar
Tu utilises un routeur Mikrotik avec Wiregua built-in ?
votre avatar
Ça a l'air top, peut être le gestionnaire de photos que je recherchais !
Ça gère aussi les albums ?
On peut y importer une bibliothèque GPhoto en entière, et ses albums existant le cas échéant ?
votre avatar
Oui, ça gère les albums, on peut d'ailleurs y ajouter des photos avec plusieurs façons différentes (depuis la timeline, depuis un visage, depuis un autre album,...).

Par contre, je viens de tester la création d'un album, il n'y a pas d'option d'import mais je n'ai pas été fouillé la doc officielle pour voir s'il y a des fonctions à activer (y'a des montagnes de paramètres et fonctions complémentaires).
votre avatar
Comme toujours, on se connecte à notre VPS via PuTTy.
Ça tourne avec wine ce truc ? :fumer:
votre avatar
Pour moi, le putty c'est ça.
votre avatar
De mon côté j’ai un LXC immich sur mon home lab Proxmox depuis quelques mois et je stock en dehors du serveur sur mon NAS. Ça tourne nickel, l’appli sur IOS marche nickel même hors réseau local via un VPN et je peux synchro mes albums et photos de l’iPhone.
votre avatar
Intéressant en auto hébergement. Seulement à ma connaissance Immich ne gère pas le trio Raw /Jpg Boitier / jpeg Edit/ ni les rafales ou bracketing/stacking ?
votre avatar
J'utilise pas Immich mais memories sur Nextcloud. C'est relativement lourd pour la vm avec des pics d'utilisation de ram du même ordre de grandeur. De plus, il faut rajouter easy sync sur le tel pour rapatrier les photos. Si quelqu'un a pratiqué les deux, je serais heureux de connaître avantages/inconvénients.
L'un des autres avantages chez Nextcloud, c'est que les photos sont directement visible aussi avec le vusualusateur de fichier et on peut synchroniser où on veut.
votre avatar
Le point bonus, c'est le point clé qui ne fonctionne jamais si le stockage déporté est via smb....

c'est pourtant le point critique, les photos c'est lourd.

Immich tourne les vm/docker/serveur de virtu, mais les photos elles sont sur le NAS. Et souvent ça bloque.

docker et LXC fail -_-
votre avatar
Immich tourne les vm/docker/serveur de virtu, mais les photos elles sont sur le NAS. Et souvent ça bloque.
Même en montant le filesystem concerné dans le container ?

Perso c'est comme ça que mon Plex marche : il est en container sur le serveur et lit depuis un point de montage sur le NAS.

Après pour du Linux, j'aurai plus tendance à faire du NFS que du SMB.
votre avatar
Moi je suis plutôt Photoprism (https://www.photoprism.app/) mais après chacun ses goûts et ses couleurs ;)
votre avatar
Je conseille de regarder du côté d'ente, en version self host (ils ont aussi leur offre managée). Pas encore parfait niveau expérience (pas de reconnaissance d'objet à ma connaissance par exemple), mais le chiffrement de bout en bout c'est bien pour les photos, on ne sait jamais ce qui peut arriver à un petit VPS qu'on peut oublier. En plus le stockage passe uniquement par du S3, donc pas de problème d'espace disque.
votre avatar
Le tutau parle d'une vms donc un truc cloud
Si on part sur un disk cloud de 1 a 2 to
Quand je vois mon syno qui a 10 ans je me dis que c'est peut-être pas très rentable de louer de l'espace en ligne pour les photos, non?
J'ai fait faiire un petit cacul a une ia pour comparer un nas 2to local et une vms +2to d'espace cloud
Le local devient "rentable" entre 3 et 6 ans ...
votre avatar
Demander à IA de faire une multiplication (montant mensuel de la loc d'espace cloud x durée désirée)? :keskidit:
votre avatar
Sur le principe tu n'as pas complètement tort j'aurais pu comme elle l'a fait chercher sur le net les tarif de location dune vms chez 3 fournisseurs, mettre ca sous excel faire une moyenne, faire la même chose pour un nas et évaluer les coûts an par an
Ca m’a juste pris moins temps...
A noter que ca réponse était beaucoup plus complète que ce que j'ai écrit dans le poste
Pour le "fun", comme je suis vraiment mauvais j'utilise chrome, avec le fait que maintenant il y a une recherche ia automatique je ne sais pas si ma recherche perso et manuelle aurait été plus écologique...
votre avatar
Pour des photos de smartphones prises de temps à autres, le cloud c'est intéressant. Pour celui qui comme moi fait des photos au reflex et conserve un bonne partie de ses RAW, ça l'est beaucoup moins. Du coup je stocke sur un NAS, puis je backup sur un cloud via un workflow traitement RAW vers JPEG (traitement classique débruitage/vignetage/aberration chromatique) => compression avec JPEGmini => S3 Next.ink :) )
votre avatar
Installé sur un VPS OVHcloud grâce aux articles Hardware Next, bravo les gars et merci :iloveyou:
:inpactitude2:
votre avatar
Je conseille vivement cette solution. Je l'ai installée sur mon serveur unraid en utilisant docker compose, + swag pour y accéder depuis l'extérieur, et ça n'a rien à envier à Google Photos.
La synchronisation se fait sans problème avec des appareils iOS et Android.
Il y a même une application (dispo sur github) pour importer sa bibliothèque Google Photos.