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 (6)

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
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
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)