Offre Durée limitée : -10% sur tout le site* avec le code WELCOME10

Installer Immich sur un VPS Linux avec Docker : alternative auto-hebergee a Google Photos

Mis à jour le 25 octobre 2026 10 min de lecture 14 sections

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

ProblemeCause probableSolution
Le conteneur database redemarre en boucleDB_DATA_LOCATION sur un partage reseau ou permissions insuffisantesVerifiez que le repertoire est local (ext4, xfs) et que l'utilisateur a les droits en ecriture
Erreur 413 lors de l'upload via le navigateurNginx limite la taille des requetesAjoutez client_max_body_size 50000M dans le bloc server de Nginx
La reconnaissance faciale ne fonctionne pasLe conteneur machine-learning n'a pas assez de RAMVerifiez 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 connecterLe certificat TLS est invalide ou le port 443 est bloqueVerifiez 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 pasLe service Redis est arreteVerifiez 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.

FAQ

Combien de RAM faut-il pour faire tourner Immich sur un VPS ?

Immich necessite au minimum 6 Go de RAM pour fonctionner avec toutes les fonctionnalites activees (reconnaissance faciale, recherche par contenu). Le conteneur de machine learning consomme a lui seul environ 3 Go de RAM. Avec seulement 4 Go de RAM, Immich fonctionne mais il faut desactiver le module de machine learning dans les parametres d'administration.

Mes photos sont-elles accessibles si le serveur est hors ligne ?

Non. Immich est une application auto-hebergee : si votre VPS est eteint ou inaccessible, l'interface web et l'application mobile ne peuvent plus se connecter. Les photos deja synchronisees sur votre telephone restent disponibles localement sur l'appareil, mais aucun nouvel envoi n'est possible tant que le serveur n'est pas de nouveau en ligne.

Peut-on migrer ses photos depuis Google Photos vers Immich ?

Oui. Exportez vos photos depuis Google Photos via Google Takeout (format ZIP). Decompressez l'archive sur votre poste local ou directement sur le VPS, puis utilisez l'outil immich-cli pour envoyer les fichiers vers votre serveur Immich. Le CLI preserve les metadonnees EXIF et detecte les doublons automatiquement.

Comment mettre a jour Immich sans perdre ses photos ?

Les photos et la base de donnees sont stockees dans des volumes Docker persistants, en dehors des conteneurs. La mise a jour se fait avec docker compose pull suivi de docker compose up -d. Les conteneurs sont remplaces par les nouvelles versions, mais les volumes de donnees restent intacts. Sauvegardez la base PostgreSQL avant chaque mise a jour par precaution.

Immich fonctionne-t-il sur un VPS ARM (Ampere, Graviton) ?

Oui. Depuis la version 3, Immich publie des images Docker multi-architectures compatibles amd64 et arm64. Un VPS equipe d'un processeur Ampere Altra ou AWS Graviton peut faire tourner Immich sans modification du fichier docker-compose.yml.