Immich : l'alternative auto-hebergee a Google Photos
Immich est une plateforme open source de gestion de photos et de videos que vous hebergez sur votre propre serveur. Publie sous licence AGPL v3, le projet offre une sauvegarde automatique depuis les smartphones iOS et Android, la reconnaissance faciale, le regroupement par lieu et par date, la recherche intelligente par contenu d'image, et une interface web pour parcourir sa bibliotheque. En auto-hebergement, vos photos restent sur votre VPS Linux : aucun abonnement cloud, aucune limite de stockage imposee, et un controle total sur vos donnees personnelles.
Ce guide couvre l'installation d'Immich via Docker Compose sur un VPS Linux sous Ubuntu 22.04/24.04 ou Debian 12, la configuration de la base de donnees PostgreSQL et du cache Redis (les deux sont inclus dans la pile Docker officielle), la mise en place d'un reverse proxy Nginx avec certificat HTTPS Let's Encrypt, et la connexion de l'application mobile pour lancer la sauvegarde automatique de votre bibliotheque photo.
Prerequis
- Un VPS Linux avec au minimum 6 Go de RAM (8 Go recommandes) et 2 vCPU (4 recommandes). Avec 4 Go de RAM, Immich fonctionne mais la reconnaissance faciale et la recherche intelligente doivent etre desactivees (le conteneur de machine learning consomme a lui seul 3 Go).
- Un espace de stockage dimensionne selon votre bibliotheque photo : prevoyez 10 a 20 % de marge pour les miniatures et les videos transcodees. Pour 500 Go de photos, comptez environ 600 Go de volume total.
- Un processeur x86-64 (microarchitecture v2 ou superieure) ou ARM64. Les processeurs Intel et AMD recents des VPS remplissent cette condition.
- Docker Engine v25 ou superieur avec le plugin Docker Compose v2 installe. Si Docker n'est pas encore installe, suivez notre guide installer Docker sur un VPS Linux.
- Un nom de domaine pointe vers l'adresse IP de votre VPS (enregistrement DNS de type A).
- Un acces SSH root ou un utilisateur avec
sudo.
Verifier l'installation de Docker et Docker Compose
Connectez-vous a votre VPS en SSH et verifiez que Docker Engine et le plugin Compose sont installes et fonctionnels :
docker --version
docker compose version
Docker Engine doit afficher une version 25 ou superieure, et docker compose une version 2.x. Si la commande docker compose n'est pas reconnue, installez le plugin depuis les depots officiels. Notre guide Docker Compose sur VPS Linux detaille la procedure complete et la syntaxe du fichier compose.yaml.
Telecharger la configuration Immich
Immich fournit un fichier docker-compose.yml officiel et un fichier d'environnement .env a chaque release sur son depot GitHub. Creez un repertoire dedie sur votre VPS, puis telechargez les deux fichiers :
mkdir ~/immich && cd ~/immich
curl -L -o docker-compose.yml \
https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
curl -L -o .env \
https://github.com/immich-app/immich/releases/latest/download/example.env
L'URL releases/latest/download pointe toujours vers la derniere version stable. La pile Docker officielle declare quatre services :
- immich-server : le serveur principal (API, interface web, sauvegarde mobile, transcodage video). Ecoute sur le port 2283 par defaut.
- immich-machine-learning : reconnaissance faciale et recherche par contenu d'image via CLIP. Necessite environ 3 Go de RAM.
- redis : file d'attente des taches (miniatures, transcodage, indexation).
- database : PostgreSQL avec l'extension pgvecto.rs pour la recherche vectorielle de similarite d'images.
Configurer le fichier .env
Ouvrez le fichier .env avec votre editeur de texte :
nano ~/immich/.env
Les variables a modifier obligatoirement :
# Repertoire de stockage des photos et videos sur le VPS
UPLOAD_LOCATION=/data/immich/upload
# Repertoire de la base de donnees PostgreSQL (doit etre sur un disque local, pas un partage reseau)
DB_DATA_LOCATION=/data/immich/postgres
# Mot de passe de la base de donnees : remplacez cette valeur par un mot de passe unique
# Caracteres autorises : A-Z, a-z, 0-9 uniquement
DB_PASSWORD=MotDePasseAleatoire42
# Fuseau horaire
TZ=Europe/Paris
La variable IMMICH_VERSION est preconfiguree a v3, ce qui tire automatiquement la derniere version stable de la branche v3. Creez les repertoires de stockage sur votre VPS :
sudo mkdir -p /data/immich/upload /data/immich/postgres
sudo chown -R $USER:$USER /data/immich
Dimensionnez la partition /data selon la taille de votre bibliotheque. Pour surveiller l'espace disque disponible au fil du temps, consultez notre guide surveiller l'espace disque d'un VPS Linux.
Lancer Immich
Depuis le repertoire ~/immich, demarrez la pile Docker en arriere-plan :
cd ~/immich
docker compose up -d
Docker telechargera les images (environ 4 Go au total lors du premier demarrage), creera les volumes, et lancera les quatre conteneurs. Suivez les journaux de demarrage en temps reel :
docker compose logs -f
Attendez que le serveur affiche un message indiquant qu'il ecoute sur le port 3001 (le port interne, mappe sur 2283 en externe). Verifiez que tous les conteneurs sont en cours d'execution :
docker compose ps
Les quatre services doivent afficher l'etat Up. Si le conteneur database redemarre en boucle, verifiez que DB_DATA_LOCATION pointe vers un repertoire local accessible en lecture et en ecriture, et non vers un montage reseau NFS ou CIFS.
Configurer le reverse proxy Nginx avec HTTPS
Immich ecoute en HTTP sur le port 2283. Pour exposer l'interface sur le port 443 avec un certificat TLS, configurez Nginx en reverse proxy devant le conteneur. Si Nginx n'est pas encore installe, notre guide Nginx reverse proxy sur VPS Linux couvre l'installation et les bases de la configuration.
Creez un fichier de configuration pour votre domaine :
sudo nano /etc/nginx/sites-available/immich.conf
Contenu du fichier (remplacez photos.example.com par votre nom de domaine) :
server {
listen 80;
server_name photos.example.com;
client_max_body_size 50000M;
location / {
proxy_pass http://127.0.0.1:2283;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket pour les mises a jour en temps reel
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
La directive client_max_body_size 50000M autorise l'envoi de fichiers volumineux (videos, lots de photos). Activez le site et testez la configuration :
sudo ln -s /etc/nginx/sites-available/immich.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Ajoutez ensuite un certificat Let's Encrypt pour chiffrer la connexion. Notre guide Certbot et Let's Encrypt sur VPS Linux detaille la procedure. En resume :
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d photos.example.com
Certbot modifie automatiquement le bloc Nginx pour ecouter sur le port 443 et rediriger le trafic HTTP vers HTTPS. Le renouvellement du certificat est automatique via un timer systemd.
Premier acces et creation du compte administrateur
Ouvrez votre navigateur et accedez a https://photos.example.com. L'ecran d'accueil vous demande de creer le compte administrateur. Renseignez une adresse e-mail et un mot de passe. Ce premier compte dispose de tous les droits : gestion des utilisateurs, configuration du serveur, bibliotheques externes.
Depuis l'interface d'administration (icone d'engrenage), vous pouvez :
- Creer des comptes pour d'autres membres de la famille, chacun avec son propre espace de stockage ;
- Definir un quota de stockage par utilisateur ;
- Configurer les parametres de transcodage video (codec, resolution, debit) ;
- Activer ou desactiver la reconnaissance faciale et la recherche intelligente ;
- Gerer les bibliotheques externes (repertoires deja presents sur le serveur).
Connecter l'application mobile
Installez l'application Immich depuis l'App Store (iOS) ou le Google Play Store (Android). Au lancement, renseignez l'URL de votre serveur (https://photos.example.com) et connectez-vous avec votre compte.
Dans les parametres de l'application, activez la sauvegarde automatique pour synchroniser les nouvelles photos et videos vers votre VPS des qu'elles sont prises. Vous pouvez choisir les albums a synchroniser, activer la sauvegarde uniquement en Wi-Fi, et exclure les videos pour economiser la bande passante.
L'application affiche en temps reel la progression de l'envoi. Les photos sont stockees dans le repertoire UPLOAD_LOCATION de votre VPS, organisees par date et par utilisateur. La synchronisation initiale d'une bibliotheque de plusieurs milliers de photos prend du temps selon la bande passante : laissez le telephone branche et connecte au Wi-Fi.
Importer une bibliotheque de photos existante
Deux methodes permettent d'importer des photos deja presentes sur un disque dur ou un autre serveur :
Methode 1 : l'outil en ligne de commande (immich-cli)
Immich propose un CLI officiel pour envoyer des fichiers depuis un poste local ou un autre serveur via l'API. Installez-le via npm :
npm install -g @immich/cli
Configurez l'URL du serveur et une cle d'API (generee dans l'interface web, section "Parametres du compte" puis "Cles d'API") :
immich login https://photos.example.com CLE_API_ICI
Lancez l'import d'un repertoire :
immich upload /chemin/vers/mes/photos
Le CLI detecte les doublons, preserve les metadonnees EXIF et envoie les fichiers par lots.
Methode 2 : les bibliotheques externes
Si vos photos sont deja sur le VPS (transferees par rsync ou SCP), ajoutez le repertoire comme bibliotheque externe dans l'interface d'administration. Immich indexe les fichiers en place sans les deplacer ni les dupliquer. Montez le repertoire comme volume dans le docker-compose.yml :
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /data/photos-existantes:/usr/src/app/external:ro
Relancez la pile Docker pour prendre en compte le nouveau volume :
docker compose up -d
Puis dans l'interface web, creez une bibliotheque externe pointant vers /usr/src/app/external. Pour transferer vos photos depuis un autre serveur, consultez notre guide sauvegarder un VPS avec rsync.
Sauvegarder Immich
Deux elements a sauvegarder separement :
- Les photos et videos (
UPLOAD_LOCATION) : ce sont des fichiers bruts, sauvegardables avec rsync, rclone ou tout outil de copie de fichiers. - La base de donnees PostgreSQL : contient les metadonnees, les albums, les visages reconnus, les utilisateurs. Un dump SQL regulier est indispensable.
Pour sauvegarder la base PostgreSQL d'Immich via Docker :
docker exec -t immich_postgres pg_dumpall -c -U postgres | gzip > ~/immich-db-backup-$(date +%F).sql.gz
Automatisez cette commande avec un cron quotidien. Copiez le dump et les fichiers media vers un stockage distant (un second VPS, un NAS, ou un service de stockage objet) pour une sauvegarde hors-site. Ne stockez jamais l'unique copie de sauvegarde sur le meme serveur que les donnees de production.
Mettre a jour Immich
Avec la variable IMMICH_VERSION=v3, la mise a jour se resume a deux commandes :
cd ~/immich
docker compose pull
docker compose up -d
Docker telecharge les nouvelles images et relance les conteneurs. Les donnees persistent dans les volumes montes. Consultez les notes de version sur le depot GitHub avant chaque mise a jour pour verifier qu'aucune migration manuelle n'est requise.
Depannage courant
| Probleme | Cause probable | Solution |
|---|---|---|
| Le conteneur database redemarre en boucle | DB_DATA_LOCATION sur un partage reseau ou permissions insuffisantes | Verifiez que le repertoire est local (ext4, xfs) et que l'utilisateur a les droits en ecriture |
| Erreur 413 lors de l'upload via le navigateur | Nginx limite la taille des requetes | Ajoutez client_max_body_size 50000M dans le bloc server de Nginx |
| La reconnaissance faciale ne fonctionne pas | Le conteneur machine-learning n'a pas assez de RAM | Verifiez que le VPS dispose d'au moins 6 Go de RAM totale. Avec 4 Go, desactivez le machine learning dans l'interface d'administration |
| L'application mobile n'arrive pas a se connecter | Le certificat TLS est invalide ou le port 443 est bloque | Verifiez le certificat avec curl -I https://photos.example.com et ouvrez les ports 80 et 443 dans le pare-feu |
| Les miniatures ne se generent pas | Le service Redis est arrete | Verifiez avec docker compose ps que le conteneur redis est en etat Up |
Conclusion
Immich transforme un VPS Linux en serveur photo personnel complet : sauvegarde automatique depuis le telephone, reconnaissance faciale, recherche par contenu, albums partages, le tout sous votre controle. La pile Docker officielle inclut PostgreSQL, Redis et le module de machine learning, ce qui simplifie le deploiement a quelques commandes. Avec un reverse proxy Nginx et un certificat Let's Encrypt, l'interface est accessible en HTTPS depuis n'importe quel appareil. Pour gerer visuellement vos conteneurs Docker (Immich et les autres), consultez notre guide Portainer, Dockge et Cosmos sur VPS Linux.
FiveM
Minecraft
Rust
RedM
Hytale