ImmichFrame vs Immich Kiosk: vilken fotoram passar din setup?

Förra året skrev vi om Immich Kiosk och ImmichFrame. Sedan dess har båda projekten släppt många versioner. Frågan vi får från användare har förändrats i takt med dem. Förr var den “går det här?” Nu är den “vilken ska jag välja?”
På ytan gör de samma sak. Båda ansluter till din Immich-server med en API-nyckel och visar dina foton i helskärm på en skärm någonstans hemma. Båda är communityprojekt, utan koppling till Immich. Båda fungerar med ett PixelUnion-konto på samma sätt som med en egen server: peka dem mot https://<username>.pixelunion.eu och ge dem en API-nyckel.
Funktionslistorna överlappar nästan helt, så dem kommer jag mest att bortse från. Det som skiljer de två åt är arkitekturen. Det här inlägget gäller de aktuella versionerna: ImmichFrame v1.0.38 (14 september 2026) och Immich Kiosk v0.44.1 (25 september 2026).
Två olika idéer om vad en fotoram är
Immich Kiosk: en server, konfigurerad via URL
Immich Kiosk, byggt av Damon Golding, är en enda Go-binär. Den använder Echo för HTTP och templ för serverrenderade mallar, och serverar en webbsida på port 3000. Det är hela produkten. Skärmen är vilken webbläsare som helst: en Raspberry Pi som kör Chromium i kioskläge, en gammal surfplatta med Fully Kiosk Browser, en smart-tv, en Google Cast-mottagare.
Designvalet som spelar roll: nästan varje inställning i config.yaml kan åsidosättas med en frågeparameter i URL:en. En enda Kiosk-container kan styra varje skärm i ditt hem, var och en med sitt eget beteende:
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
Surfplattan i köket visar familjealbumet med en klocka. Skärmen i hallen visar en persons foton i porträttläge. Samma server, samma konfigurationsfil, olika URL:er. Baksidan är att vem som helst i ditt nätverk som når sidan kan ändra vad den visar. Om det stör dig stänger disable_url_queries av det.
ImmichFrame: en server plus native-appar
ImmichFrame går åt andra hållet. Servern är C# på ASP.NET Core med ett SvelteKit-gränssnitt, levererad som ghcr.io/immichframe/immichframe på port 8080. Utöver det underhåller projektet native-klienter:
- Android, via Play Butik eller en sidladdad APK, inklusive en skärmsläckartjänst för Android TV
- Apple TV, iPhone och iPad (iOS 17+) och Mac-datorer med Apple Silicon via App Store
- Datorappar för Windows, macOS och Linux
- Frameo-ramar, de billiga Android-baserade ramarna du hittar för runt $40, sidladdade via ADB (Android Debug Bridge)
Native-apparna är anledningen till att ImmichFrame ser ut som det gör. Apple tillåter inte WebViews (inbäddade webbläsarkomponenter) på tvOS, så Apple TV-appen bygger om visningen med native-kontroller. På Android TV kan ImmichFrame ersätta systemets skärmsläckare, något en webbläsarflik inte kan. Android-appen kör också en liten HTTP-server på port 53287 som tar emot next, previous, pause, dim, undim och brightness?value=0.5. Det sistnämnda är det du kopplar till Home Assistant för att dimma ramen när lamporna släcks.
Avvägningen ligger i konfigurationen. Den lever på instansnivå. Så vitt jag kan se i dokumentationen finns det ingen motsvarighet till Kiosks åsidosättningar per URL, så två skärmar med olika album innebär oftast två containrar eller två konton. Billigt att köra. Mer att underhålla.
Detaljerna som spelar roll för power users
Konfiguration och tillstånd
Kiosk är config-as-code. En YAML-fil med ett publicerat JSON-schema för autokomplettering i editorn, miljövariabler för hemligheter och watch_config för att ladda om vid ändringar. Den ligger i ett Git-repo bredvid resten av dina compose-filer.
ImmichFrame har nyligen gått åt andra hållet. Det levereras nu med ett admingränssnitt på /admin där varje inställning, inklusive Immich-konton, kan redigeras i webbläsaren och tillämpas direkt. Inställningarna lagras i en SQLite-databas (immichframe.db) i /app/Config. En Settings.yml importeras en gång, vid första start. Därefter är databasen sanningskällan och ändringar i filen ignoreras.
Den sista punkten kommer att överraska folk. Om du hanterar ditt homelab deklarativt är ImmichFrames konfiguration nu tillstånd som du måste säkerhetskopiera, inte en fil du kan diffa. Om du hellre klickar än redigerar YAML är det en förbättring. Inget av synsätten är fel. De är byggda för olika människor.
Val av innehåll
Båda täcker grunderna: album, exkluderade album, personer, taggar, betyg, minnen, favoriter, datumintervall och video (fortfarande experimentellt i ImmichFrame). Skillnaderna finns i kanterna.
ImmichFrame är byggt kring flera konton. Varje post under Accounts har sin egen server-URL, API-nyckel och sina egna filter. Blanda ditt bibliotek med din partners, eller hämta från två separata Immich-servrar, så blandar ramen ihop dem till ett bildspel.
Kiosk går djupare när det gäller filtrering inom ett bibliotek. require_all_people visar bara foton där alla du angett syns tillsammans, precis vad du vill ha för en ram med “mor- och farföräldrar med barnbarn”. Det finns excluded_people, excluded_partners, filter_exclude_faces för en skärm med bara landskap, och filter_newest för att begränsa en källa till dess senaste objekt. Med asset_weighting påslaget drunknar inte ett litet album i ett stort när du kombinerar källor. Kiosk stöder också flera användare via immich_users_api_keys, valda per skärm via URL:en.
Skärm och hårdvara
Båda erbjuder delad vy för två porträttfoton på en liggande skärm, suddiga bakgrunder, zoom och panorering i Ken Burns-stil, en klocka och väder från OpenWeatherMap. ImmichFrame lägger till kalenderöverlägg från valfritt ICS-flöde (iCalendar) via Webcalendars, vilket gör den till en hyfsad köksdashboard.
Kiosk har fler alternativ för hårdvara som alltid är på. burn_in_interval sänker regelbundet gränssnittets opacitet för att skydda OLED-paneler mot inbränning. sleep_start och sleep_end släcker skärmen på natten. offline_mode cachar en uppsättning objekt lokalt, så att en ram på instabilt wifi fortsätter att fungera. optimize_images skalar om på servern, så att en Pi Zero inte behöver avkoda en fil på 48 MP var 60:e sekund.
Med Frameo-hårdvara bör du hålla förväntningarna låga. Enheterna kör Android 6. Om du inte uppdaterar systemets WebView, vilket ImmichFrames dokumentation beskriver och vilket kräver att du monterar om /system som root, förlorar du delad vy, stöd för HEIC (iPhones fotoformat) och video. Det fungerar. Det är ett bra sätt att ge en ram för $40 ett andra liv. Det är också ett pysselprojekt, inte en present du sätter upp på tio minuter.
Säkerhet
En fotoram står i ditt nätverk hela dagen med en nyckel till hela ditt fotobibliotek. De flesta ställer in den en gång och tittar aldrig på den igen. Den kombinationen förtjänar några minuters eftertanke.
- Använd en separat API-nyckel per ram. Immich låter dig skapa API-nycklar med begränsade behörigheter. Ge ramen bara det den behöver, och återkalla nyckeln om enheten försvinner eller byts ut. ImmichFrame stöder också
ApiKeyFile, så att nyckeln kan komma från en Docker-hemlighet i stället för en konfigurationsfil. - Se upp med skrivåtkomst. Kiosks “more info”-överlägg har like- och hide-knappar som favoritmarkerar, taggar eller arkiverar objekt i Immich. Användbart, men det betyder att nyckeln behöver skrivbehörighet. Om du inte använder de knapparna, stäng av dem och håll nyckeln skrivskyddad.
- Lås ner själva ramen. Ingen av servrarna hör hemma på det öppna internet. Kiosk har ett
password-alternativ ochdisable_url_queries. ImmichFrame har enAuthenticationSecretför klienter och ett separat adminlösenord för/admin. ImmichFrames dokumentation anger att admingränssnittet visar API-nycklar och skickar dem i klartext, så lägg det bakom HTTPS om det går att nå utanför ditt lokala nätverk. - Vet vad som lämnar ditt nätverk. Med PixelUnion färdas dina foton från våra servrar i Europa till containern hemma hos dig och sedan till din skärm. Inget går via ett tredjepartsmoln. Undantaget är vädret: båda projekten skickar dina koordinater till OpenWeatherMaps API. En liten läcka, men en verklig sådan.
Licenserna skiljer sig också. Kiosk är AGPL-3.0, ImmichFrame är GPL-3.0. För privat bruk ändrar det ingenting. AGPL omfattar även programvara som erbjuds över ett nätverk, så om du tänker köra något av dem som en hostad tjänst för andra, läs licenserna först.
Så vilken ska du köra?
Välj Immich Kiosk om dina skärmar är webbläsare (Raspberry Pi, väggmonterade surfplattor, smart-tv) och du vill att en container ska styra alla. Den passar den som håller sitt homelab i YAML och Git, vill ha finmaskiga filter och bryr sig om inbränning, sovscheman och offlinecache på hårdvara som alltid är på.
Välj ImmichFrame om du vill ha native-appar, särskilt Apple TV, en Android TV-skärmsläckare eller en ombyggd Frameo-ram. Den passar hushåll som vill blanda flera Immich-konton i ett bildspel, eller som hellre hanterar inställningar i ett webbgränssnitt än i en textfil.
Många kör båda. Kiosk ligger runt 1,7k stjärnor på GitHub, ImmichFrame runt 2,4k, och båda släpper nya versioner med några veckors mellanrum och har aktiva Discord-kanaler på Immich-servern. Två maintainers som löser samma problem på olika sätt brukar göra båda projekten bättre. Det är så öppen källkod ska fungera, och det händer inte så ofta som folk tror.
Ingen av dem kommer att berätta något om dina foton som du inte redan vet. Det de gör är att få bort fotona från en server och upp på en vägg, där du faktiskt tittar på dem. Det är värt en eftermiddags pyssel.
Om du hellre lägger den eftermiddagen på ramen än på att driva Immich själv, så är det det vi gör. Vi håller servern uppdaterad och säkerhetskopierad på europeisk infrastruktur. Du får en API-nyckel att peka din ram mot.