ImmichFrame vs Immich Kiosk : quel cadre photo pour votre installation ?

ImmichFrame vs Immich Kiosk : quel cadre photo pour votre installation ?

L’an dernier, nous avons écrit sur Immich Kiosk et ImmichFrame. Les deux projets ont publié de nombreuses versions depuis. La question que nous posent les utilisateurs a changé avec eux. Avant, c’était « est-ce possible ? » Aujourd’hui, c’est « lequel dois-je choisir ? »

En surface, ils font la même chose. Les deux se connectent à votre serveur Immich avec une clé API et affichent vos photos en plein écran sur un écran quelque part chez vous. Ce sont deux projets communautaires, sans lien avec Immich. Les deux fonctionnent avec un compte PixelUnion exactement comme avec un serveur auto-hébergé : pointez-les vers https://<username>.pixelunion.eu et donnez-leur une clé API.

Les listes de fonctionnalités se recoupent presque entièrement, je vais donc les laisser largement de côté. Ce qui distingue ces deux projets, c’est l’architecture. Cet article couvre les versions actuelles : ImmichFrame v1.0.38 (14 septembre 2026) et Immich Kiosk v0.44.1 (25 septembre 2026).

Deux idées différentes de ce qu’est un cadre photo

Immich Kiosk : un serveur, configuré par l’URL

Immich Kiosk, développé par Damon Golding, est un seul binaire Go. Il utilise Echo pour le HTTP et templ pour les templates côté serveur, et sert une page web sur le port 3000. C’est tout le produit. L’écran, c’est n’importe quel navigateur : un Raspberry Pi avec Chromium en mode kiosque, une vieille tablette avec Fully Kiosk Browser, une smart TV, un récepteur Google Cast.

Le choix de conception qui compte : presque chaque paramètre de config.yaml peut être remplacé par un paramètre de requête dans l’URL. Un seul conteneur Kiosk peut piloter tous les écrans de la maison, chacun avec son propre comportement :

http://kiosk.local:3000/?album=ALBUM_ID&layout=splitview&transition=cross-fade
http://kiosk.local:3000/?person=PERSON_ID&show_time=true&image_fit=cover

La tablette de la cuisine affiche l’album de famille avec une horloge. L’écran du couloir affiche les photos d’une seule personne en mode portrait. Même serveur, même fichier de configuration, URL différentes. Le revers de la médaille : n’importe qui sur votre réseau pouvant accéder à la page peut changer ce qu’elle affiche. Si cela vous dérange, disable_url_queries le désactive.

ImmichFrame : un serveur et des applications natives

ImmichFrame prend le chemin inverse. Le serveur est écrit en C# sur ASP.NET Core avec un frontend SvelteKit, distribué sous le nom ghcr.io/immichframe/immichframe sur le port 8080. Par-dessus, le projet maintient des clients natifs :

  • Android, via le Play Store ou un APK installé manuellement, avec un service d’économiseur d’écran pour Android TV
  • Apple TV, iPhone et iPad (iOS 17+) et les Mac Apple Silicon via l’App Store
  • Des applications desktop pour Windows, macOS et Linux
  • Les cadres Frameo, ces cadres Android bon marché que l’on trouve pour environ 40 $, installés via ADB (Android Debug Bridge)

Les applications natives expliquent pourquoi ImmichFrame ressemble à ce qu’il est. Apple n’autorise pas les WebViews (composants de navigateur intégrés) sur tvOS, donc l’application Apple TV reconstruit l’affichage avec des contrôles natifs. Sur Android TV, ImmichFrame peut remplacer l’économiseur d’écran du système, ce qu’un onglet de navigateur ne peut pas faire. L’application Android fait aussi tourner un petit serveur HTTP sur le port 53287 qui accepte next, previous, pause, dim, undim et brightness?value=0.5. C’est ce dernier que l’on branche sur Home Assistant pour baisser la luminosité du cadre quand les lumières s’éteignent.

Le compromis porte sur la configuration. Elle vit au niveau de l’instance. D’après ce que je comprends de la documentation, il n’existe pas d’équivalent aux remplacements par URL de Kiosk, donc deux écrans avec des albums différents signifient généralement deux conteneurs ou deux comptes. Peu coûteux à faire tourner. Plus à maintenir.

Les détails qui comptent pour les utilisateurs avancés

Configuration et état

Kiosk, c’est de la configuration sous forme de code. Un fichier YAML avec un schéma JSON publié pour l’autocomplétion dans votre éditeur, des variables d’environnement pour les secrets, et watch_config pour recharger en cas de modification. Il vit dans un dépôt Git à côté du reste de vos fichiers compose.

ImmichFrame est récemment parti dans l’autre direction. Il propose désormais une interface d’administration sur /admin où chaque paramètre, y compris les comptes Immich, se modifie dans le navigateur et s’applique en direct. Les paramètres sont stockés dans une base SQLite (immichframe.db) dans /app/Config. Un Settings.yml est importé une seule fois, au premier démarrage. Ensuite, la base de données fait foi et les modifications du fichier sont ignorées.

Ce dernier point va en surprendre plus d’un. Si vous gérez votre homelab de manière déclarative, la configuration d’ImmichFrame est désormais un état à sauvegarder, et non un fichier que vous pouvez comparer avec un diff. Si vous préférez cliquer plutôt que modifier du YAML, c’est une amélioration. Aucune des deux approches n’est mauvaise. Elles sont conçues pour des gens différents.

Sélection du contenu

Les deux couvrent l’essentiel : albums, albums exclus, personnes, tags, notes, souvenirs, favoris, plages de dates et vidéo (encore expérimentale dans ImmichFrame). Les différences se situent à la marge.

ImmichFrame est construit autour de plusieurs comptes. Chaque entrée sous Accounts a sa propre URL de serveur, sa propre clé API et ses propres filtres. Combinez votre bibliothèque avec celle de votre partenaire, ou puisez dans deux serveurs Immich distincts, et le cadre les mélange en un seul diaporama.

Kiosk va plus loin dans le filtrage au sein d’une bibliothèque. require_all_people n’affiche que les photos où toutes les personnes indiquées apparaissent ensemble, exactement ce qu’il faut pour un cadre « grands-parents avec petits-enfants ». Il y a excluded_people, excluded_partners, filter_exclude_faces pour un écran uniquement consacré aux paysages, et filter_newest pour limiter une source à ses éléments les plus récents. Avec asset_weighting activé, un petit album n’est pas noyé par un grand quand vous combinez des sources. Kiosk prend aussi en charge plusieurs utilisateurs via immich_users_api_keys, sélectionnables par écran via l’URL.

Affichage et matériel

Les deux proposent des mises en page en écran partagé pour deux photos portrait sur un écran paysage, des arrière-plans flous, un zoom et un panoramique façon Ken Burns, une horloge et la météo d’OpenWeatherMap. ImmichFrame ajoute des superpositions d’agenda depuis n’importe quel flux ICS (iCalendar) via Webcalendars, ce qui en fait un tableau de bord de cuisine tout à fait correct.

Kiosk offre davantage d’options pour le matériel allumé en permanence. burn_in_interval baisse régulièrement l’opacité de l’interface pour protéger les dalles OLED du marquage. sleep_start et sleep_end éteignent l’écran la nuit. offline_mode met en cache localement un ensemble d’éléments, pour qu’un cadre sur un Wi-Fi capricieux continue de fonctionner. optimize_images redimensionne côté serveur, pour qu’un Pi Zero n’ait pas à décoder un fichier de 48 MP toutes les 60 secondes.

Avec le matériel Frameo, gardez des attentes modestes. Ces appareils tournent sous Android 6. À moins de mettre à jour la WebView système, ce que décrit la documentation d’ImmichFrame et qui implique de remonter /system en root, vous perdez l’écran partagé, la prise en charge du HEIC (le format photo de l’iPhone) et la vidéo. Ça fonctionne. C’est une bonne façon de donner une seconde vie à un cadre à 40 $. C’est aussi un projet de bricolage, pas un cadeau que l’on configure en dix minutes.

Sécurité

Un cadre photo reste toute la journée sur votre réseau avec une clé donnant accès à toute votre bibliothèque de photos. La plupart des gens le configurent une fois et n’y touchent plus jamais. Cette combinaison mérite quelques minutes de réflexion.

  • Utilisez une clé API dédiée par cadre. Immich vous permet de créer des clés API avec des permissions limitées. Ne donnez au cadre que ce dont il a besoin, et révoquez la clé si l’appareil est perdu ou remplacé. ImmichFrame prend aussi en charge ApiKeyFile, pour que la clé provienne d’un secret Docker plutôt que d’un fichier de configuration.
  • Attention aux droits d’écriture. La superposition « more info » de Kiosk comporte des boutons like et hide qui ajoutent des éléments aux favoris, les taguent ou les archivent dans Immich. Pratique, mais cela implique que la clé ait des droits d’écriture. Si vous n’utilisez pas ces boutons, désactivez-les et gardez une clé en lecture seule.
  • Verrouillez le cadre lui-même. Aucun des deux serveurs n’a sa place sur internet sans protection. Kiosk a une option password et disable_url_queries. ImmichFrame a un AuthenticationSecret pour les clients et un mot de passe administrateur distinct pour /admin. La documentation d’ImmichFrame indique que l’interface d’administration affiche les clés API et les transmet en clair, donc placez-la derrière HTTPS si elle est accessible depuis l’extérieur de votre réseau local.
  • Sachez ce qui quitte votre réseau. Avec PixelUnion, vos photos voyagent de nos serveurs en Europe jusqu’au conteneur chez vous, puis jusqu’à votre écran. Rien ne passe par un cloud tiers. L’exception, c’est la météo : les deux projets envoient vos coordonnées à l’API OpenWeatherMap. Une petite fuite, mais une vraie.

Les licences diffèrent aussi. Kiosk est sous AGPL-3.0, ImmichFrame sous GPL-3.0. Pour un usage personnel, cela ne change rien. L’AGPL couvre aussi les logiciels proposés via un réseau, donc si vous comptez faire tourner l’un ou l’autre comme service hébergé pour d’autres personnes, lisez d’abord les licences.

Alors, lequel faire tourner ?

Choisissez Immich Kiosk si vos écrans sont des navigateurs (Raspberry Pi, tablettes murales, smart TV) et que vous voulez qu’un seul conteneur les pilote tous. Il convient à ceux qui gèrent leur homelab en YAML et dans Git, qui veulent des filtres fins, et qui tiennent à la protection contre le marquage, aux horaires de veille et au cache hors ligne sur du matériel allumé en permanence.

Choisissez ImmichFrame si vous voulez des applications natives, en particulier pour Apple TV, un économiseur d’écran Android TV ou un cadre Frameo détourné. Il convient aux foyers qui veulent mélanger plusieurs comptes Immich en un seul diaporama, ou qui préfèrent gérer leurs paramètres dans une interface web plutôt que dans un fichier texte.

Beaucoup font tourner les deux. Kiosk compte environ 1,7k étoiles sur GitHub, ImmichFrame environ 2,4k, et tous deux publient des versions toutes les deux ou trois semaines avec des canaux Discord actifs sur le serveur Immich. Deux mainteneurs qui résolvent le même problème de manières différentes rendent généralement les deux projets meilleurs. C’est ainsi que l’open source est censé fonctionner, et cela arrive moins souvent qu’on ne le croit.

Aucun des deux ne vous apprendra quoi que ce soit sur vos photos que vous ne sachiez déjà. Ce qu’ils font, c’est sortir ces photos d’un serveur pour les mettre au mur, là où vous les regardez vraiment. Cela vaut un après-midi de bricolage.

Si vous préférez consacrer cet après-midi au cadre plutôt qu’à l’exploitation d’Immich lui-même, c’est justement notre métier. Nous maintenons le serveur à jour et sauvegardé sur une infrastructure européenne. Vous recevez une clé API vers laquelle pointer votre cadre.

Commencez gratuitement avec PixelUnion →