Immich : remplacer Google Photos sur votre serveur

Sauvegarde du téléphone, visages, recherche par le contenu : Immich fait l'essentiel de Google Photos, sur une machine que vous administrez au Canada. Quelle offre prendre, notre image ou une installation à la main, les sauvegardes 3-2-1 et les limites.

Des vignettes de photos qui montent d'un téléphone vers un serveur où elles se rangent en grille

Immich est une photothèque libre, pour vos photos et vos vidéos, que vous hébergez vous-même. Elle ressemble beaucoup à Google Photos : l'application mobile sauvegarde la pellicule, les visages sont regroupés par personne, et vous retrouvez une photo en décrivant ce qu'elle montre. La différence tient à l'endroit où dorment les fichiers.

Google offre 15 Go, partagés entre Photos, Gmail et Drive. Au-delà, vous payez Google chaque mois et la photothèque reste sur ses serveurs. Avec Immich sur un VPS à Montréal, elle est sur une machine que vous administrez, au Canada. Notre catalogue propose une image Immich prête à déployer : cet article couvre cette voie, l'installation à la main, le choix de l'offre, les sauvegardes et les mises à jour.

1. Ce que fait Immich

L'application mobile envoie les nouvelles photos et vidéos en arrière-plan et garde les originaux intacts. Sur le serveur, Immich construit une frise chronologique, une carte à partir des données GPS et des souvenirs des années passées. Son apprentissage automatique regroupe les visages par personne et indexe le contenu de chaque image : une recherche « voiture rouge » ou « plage au coucher du soleil » fonctionne sans aucun mot-clé posé à la main. Les albums se partagent avec les autres comptes de votre serveur ou par un lien public.

Immich est gratuit et sort souvent de nouvelles versions, mais il reste un logiciel que vous faites tourner vous-même : mises à jour, espace disque et sauvegardes sont à votre charge. Chaque point est traité plus bas.

2. Quelle offre choisir

Immich demande au minimum 6 Go de mémoire et en recommande 8, avec 2 à 4 cœurs. Sa documentation précise qu'une machine de 4 Go le fait tourner si l'apprentissage automatique est désactivé. D'où la fourchette :

La dernière colonne est une estimation : le système et les conteneurs d'Immich prennent une dizaine de gigaoctets, et la documentation d'Immich compte 10 à 20 % de plus que les originaux pour les vignettes et les vidéos converties. La Nano (2 Go) est trop petite, et la console ne propose pas l'image Immich sur cette offre.

Pour un premier essai, la facturation à l'heure convient bien : déployez, envoyez quelques centaines de photos depuis votre téléphone, testez la recherche et les visages, puis détruisez la machine ou gardez-la.

3. Installer avec notre image Immich

Commandez une Starter ou plus avec l'image Immich. Ce lien ouvre la console avec l'image déjà choisie :

bash
https://console.ffxf.net/servers/order-vm?image=immich

L'image est une Ubuntu 24.04 avec Docker. Au premier démarrage, elle lance Immich (le serveur, le service d'apprentissage automatique, PostgreSQL et Valkey) derrière Caddy, qui s'occupe du HTTPS. Chaque VM a son propre nom de domaine ; quand ce nom pointe vers la machine, Caddy obtient un certificat Let's Encrypt et Immich répond sur https://domaine-de-votre-vm. Sinon, Immich répond en HTTP simple sur l'IPv4 de la machine. Le mot de passe de la base est généré à ce premier démarrage et rangé dans /opt/immich/.env, lisible par root seulement.

Ouvrez l'adresse et créez le compte administrateur tout de suite : le premier compte créé sur un serveur Immich en devient l'administrateur.

L'utilisateur SSH est ubuntu. Tout se trouve dans /opt/immich : compose.yml, .env et Caddyfile. Pour utiliser votre propre domaine, faites pointer ses enregistrements A et AAAA vers la machine, remplacez le nom de la VM par le vôtre sur les deux lignes du Caddyfile, puis redémarrez Caddy :

bash
sudo nano /opt/immich/Caddyfile
sudo docker compose -f /opt/immich/compose.yml restart caddy

4. Installer à la main, sur n'importe quel VPS

Si vous préférez tout monter vous-même, ou faire tourner Immich à côté d'autres services, partez d'une image Ubuntu ou Debian avec Docker Engine et son greffon Compose (voir Docker sur un VPS). Voici les commandes de la documentation d'Immich :

bash
mkdir ./immich-app
cd ./immich-app
wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env

Dans .env, remplacez DB_PASSWORD par une valeur aléatoire faite uniquement de lettres et de chiffres (openssl rand -hex 16 en donne une), décommentez TZ et mettez America/Toronto, et laissez IMMICH_VERSION=v3. Puis démarrez :

bash
docker compose up -d

Immich écoute sur le port 2283, en HTTP simple. Placez devant lui un mandataire inverse en HTTPS (notre guide Nginx et HTTPS couvre le certificat) et gardez les réglages qu'Immich recommande pour les gros envois :

bash
client_max_body_size 50000M;
proxy_read_timeout 600s;
proxy_send_timeout 600s;
send_timeout       600s;
proxy_http_version 1.1;
proxy_set_header   Upgrade    $http_upgrade;
proxy_set_header   Connection "upgrade";

Fermez ensuite le port 2283 vers l'extérieur, par exemple avec un pare-feu cloud.

5. L'application mobile

L'application Immich est sur l'App Store, Google Play et F-Droid. Saisissez l'adresse HTTPS de votre serveur, connectez-vous, ouvrez l'écran de sauvegarde et choisissez les albums à envoyer. Sur Android, la sauvegarde en arrière-plan se fait seule. Sur iPhone, elle dépend du moment où iOS laisse l'application tourner : l'ouvrir de temps en temps lui permet de rattraper son retard.

Après le premier gros envoi, Immich génère les vignettes, détecte les visages et indexe chaque photo. Sans carte graphique, comptez un bon moment pour des milliers d'images : la progression se suit dans l'administration, page des tâches (Job Queues). La recherche et les personnes se complètent à mesure que les tâches avancent.

6. Les sauvegardes

Deux choses comptent : les fichiers originaux et la base de données. Immich exporte sa base chaque jour à 2 h et garde les 14 derniers exports, dans un dossier backups à côté des photos. Les dossiers à garder sont library, upload, profile et backups ; thumbs et encoded-video se régénèrent.

Avec notre image, tout est dans un seul volume Docker : /var/lib/docker/volumes/immich_upload_data/_data. Avec une installation à la main, c'est votre UPLOAD_LOCATION.

Immich recommande la règle 3-2-1 : trois copies, sur deux types de support, dont une ailleurs. Chez FFxF, la machine est la première copie. Les sauvegardes de machine dans la console sont la deuxième (7 sauvegardes manuelles incluses, les sauvegardes automatiques coûtent 3 CAD par mois). Pour la troisième, copiez la photothèque à l'extérieur, vers un NAS à la maison par exemple :

bash
sudo rsync -a --delete --exclude thumbs --exclude encoded-video \
  /var/lib/docker/volumes/immich_upload_data/_data/ vous@nas-maison:/backups/immich/

La documentation d'Immich conseille aussi de sauvegarder la base avant les fichiers, ou d'arrêter le serveur pendant la copie, pour que les deux concordent. L'export du jour se trouve déjà dans le dossier copié : pour restaurer, remettez les fichiers en place et chargez le dernier export, comme l'explique le guide de sauvegarde d'Immich.

7. Les mises à jour

Immich publie souvent (la 3.3.0 est sortie le 7 octobre, la 3.3.1 le lendemain), et des versions majeures ont déjà modifié la base et la configuration. Lisez les notes de version avant chaque mise à jour, et faites d'abord une sauvegarde de la machine dans la console.

Notre image suit l'étiquette release d'Immich : une mise à jour prend la dernière version, qui peut être une nouvelle majeure.

bash
cd /opt/immich
sudo docker compose pull
sudo docker compose up -d

Pour rester sur la version 3 jusqu'à ce que vous en décidiez autrement, remplacez d'abord :release par :v3 dans compose.yml. Avec une installation à la main, IMMICH_VERSION=v3 dans .env fait la même chose, et la mise à jour reste un pull suivi d'un up -d.

8. Les limites

Le disque d'abord. Notre plus grande offre a 160 Go, de quoi loger une photothèque familiale d'environ 130 Go de photos et de vidéos. Une archive de plusieurs téraoctets a sa place sur un serveur à la maison ou un espace de stockage dédié, pas sur ces offres.

L'apprentissage automatique tourne sur le processeur : la première indexation d'une grosse photothèque est lente. Les fichiers sont stockés tels quels sur le disque du serveur, sans chiffrement au repos. Et l'administrateur, c'est vous : tenez aussi Ubuntu à jour (notre guide pour sécuriser Ubuntu liste l'essentiel).

Les autres images du catalogue, avec leur utilisateur par défaut, sont sur la page Images.

Un panneau d'applications dans une fenêtre, une tuile en cours de déploiement

VPS Easypanel : préinstallé, prêt en deux minutes

Easypanel rejoint le catalogue : un VPS livré avec le panneau Docker déjà installé, qui répond sur le port 3000 moins de deux minutes après la commande.

Lire l'article 4 min de lecture

Support & discussions

Questions techniques, retours d'incidents ou discussions d'infrastructure, l'équipe est présente sur Discord, Telegram, X, Instagram, Reddit et IRC.