Pourquoi auto-héberger Immich sur un VPS
Vos photos sont parmi les données les plus sensibles que vous confiez à un cloud : visages, lieux, habitudes, géolocalisation. Immich reproduit l'expérience de Google Photos, applications mobiles incluses, mais sur une infrastructure que vous possédez. Sa stack est plus exigeante que celle d'un wiki : un serveur applicatif, un PostgreSQL avec l'extension vectorielle pgvecto.rs pour la recherche sémantique, Redis, et un service de machine learning qui calcule les embeddings pour la reconnaissance faciale et la recherche par mots-clés. Un VPS dédié vous permet d'isoler ce service ML gourmand, de dimensionner le stockage selon votre photothèque, et d'éviter que vos clichés ne servent à entraîner des modèles tiers. Vous restez maître du chiffrement, des sauvegardes et de l'accès.
Ce que l'auto-hébergement d'Immich apporte
- Sauvegarde automatique depuis iOS et Android dès qu'une photo est prise, comme un cloud privé.
- Reconnaissance faciale et recherche sémantique exécutées sur votre serveur, sans envoi à un tiers.
- Stockage illimité défini par votre disque VPS, sans quota imposé ni facturation au Go.
- Partage d'albums par lien sécurisé que vous contrôlez et révoquez à tout moment.
- Support multi-utilisateurs : chaque membre du foyer ou de l'équipe a sa bibliothèque isolée.
- Métadonnées EXIF, cartes et timelines conservées localement, sans exploitation publicitaire.
Prérequis matériels et logiciels
Immich est le plus exigeant de cette série à cause de son service de machine learning. Comptez au minimum 4 Go de RAM, mais 6 à 8 Go sont recommandés si la reconnaissance faciale traite une grande photothèque. 2 à 4 vCPU permettent de digérer l'indexation initiale sans bloquer l'interface. Le stockage est le facteur clé : prévoyez large, car une bibliothèque familiale dépasse vite 100 Go ; un VPS avec disque extensible est idéal. Côté logiciel : Docker et docker compose v2, un domaine (photos.votreentreprise.ma), et suffisamment d'espace de swap pour absorber les pics du modèle ML lors du premier import.
Déployer Immich étape par étape
Préparer le VPS et le stockage
Mettez à jour le système, installez Docker, puis créez un point de montage dédié aux médias, par exemple /mnt/photos, séparé du disque système. Activez au moins 2 Go de swap pour le service de machine learning.
Récupérer le compose officiel et le .env
Téléchargez le docker-compose.yml et le fichier example.env du dépôt Immich avec wget. Renommez en .env, puis définissez UPLOAD_LOCATION=/mnt/photos, le mot de passe de la base et DB_DATA_LOCATION sur un volume persistant.
Comprendre les quatre services
La stack démarre immich-server, immich-machine-learning, redis et database (PostgreSQL avec l'extension vectorielle). Ne remplacez pas l'image de base de données par un PostgreSQL standard : l'extension pgvecto.rs est indispensable à la recherche sémantique.
Lancer la pile et créer l'administrateur
Exécutez docker compose up -d et attendez le téléchargement des images ML, volumineuses. Ouvrez le port 2283 en interne, puis créez le compte administrateur via l'assistant web avant d'inviter d'autres utilisateurs.
Sécuriser avec un reverse proxy et SSL
Placez Caddy devant le serveur : photos.votreentreprise.ma { reverse_proxy immich-server:2283 }. Augmentez la taille maximale d'upload du proxy (client_max_body_size sur Nginx) car les vidéos peuvent être lourdes, sinon les envois mobiles échouent.
Configurer l'application mobile
Installez Immich depuis l'App Store ou le Play Store, saisissez https://photos.votreentreprise.ma comme URL de serveur, connectez-vous, puis activez la sauvegarde automatique de la pellicule pour répliquer en continu vos nouveaux clichés.
Lors du premier import massif, lancez la génération des miniatures et des embeddings ML pendant une période creuse et surveillez la RAM avec docker stats. Si le service de machine learning sature, vous pouvez le faire pointer temporairement vers le modèle le plus léger dans les paramètres, puis repasser à un modèle plus précis une fois l'indexation initiale terminée. Cela évite que le VPS ne s'effondre sous la charge du tout premier scan.