I'm not related to the donkeys in the picture.
Remember, that was, um, 15 years ago :

Digital photo frames were all the rage. You bought one, used it 3 times, and then it ended up in a drawer because the rendering was so poor and it was a pain to fill the SD card. On paper it seemed good, but in reality, I knew very few people who used them regularly.
But it's now 2025. The world has changed! There's Docker.
Today we're talking about ImmichFrame! It's the same principle as the photo frame, but more modern and flexible. The principle is simple: a scrolling display of photos located in one or more photo albums created in Immich.
I invite you to take a look at all the possible configuration options :
In this tutorial, I offer you something functional and not too busy.
⚡ Features
- Scrolling photos.
- Different date and time effects.
- Country-specific date and time formats.
- Numerous configuration options.
🗒️ Requirements
- Generate an API key in Immich. You'll find this option in Account Settings. Make a note of this key somewhere for the rest of the tutorial.

- You must have created one or more albums on Immich and noted the corresponding code(s) in the address bar. This also works for people.
Album :

People :

💾 Installation
- Create your compose.yml file in the folder where you intend to install ImmichFrame :
nano compose.yml
- Stick it in :
name: immichframe
services:
immichframe:
container_name: immichframe
image: ghcr.io/immichframe/immichframe:latest
restart: on-failure
ports:
- "8777:8080"
environment:
TZ: "Europe/Brussels"
# Required
ImmichServerUrl: "http://192.168.1.176:2283"
ApiKey: "4QUdiSTbT1ZaLu7J0vmLFesAEOBzXvJBj6pe8rfQYig"
#Security
AuthenticationSecret: "test"
# Image
ImageZoom: "true"
Interval: "10"
TransitionDuration: "2"
# Filters
Albums: "09a4a1ee-18f2-4bfa-8094-41e55063c1e7"
ShowMemories: "false"
ShowFavorites: "false"
ImagesFromDays: ""
ImagesFromDate: ""
ImagesUntilDate: ""
# Clock
ShowClock: "true"
ClockFormat: "HH:mm"
# Metadata
ShowImageDesc: "true"
ShowImageLocation: "true"
ShowPhotoDate: "true"
PhotoDateFormat: "yyyy-MM-dd"
# Caching
RenewImagesDuration: "30"
DownloadImages: "false"
RefreshAlbumPeopleInterval: "12"
# UI
PrimaryColor: "#FF5733"
BaseFontSize: "17px"
# Misc
ImmichFrameAlbumName: ""
Style: "none"
Layout: "splitview"
- TZ: "Europe/Brussels" => Set your TimeZone.
- ImmichServerUrl : "http://192.168.1.176:2283" => Change http://192.168.1.176:2283 by your server's IP and the Immich port, 2283 by default.
- ApiKey : "4QUdiSTbT1ZaLu7J0vmLFesAEOBzXvJBj6pe8rfQYig" => Change 4QUdiSTbT1ZaLu7J0vmLFesAEOBzXvJBj6pe8rfQYig with your API key.
- AuthenticationSecret : "test" => Replace test with a password of your choice.
- Albums: "09a4a1ee-18f2-4bfa-8094-41e55063c1e7" => Indicate the album(s). Separate each album with a comma.
- ShowClock: "true" => Set to false if you don't want the clock. A clock with several aesthetics, by the way.
- ShowImageDesc: "true" => Set to false if you don't want an image description.
- ShowImageLocation: "true" => Set to false if you don't want the location where the photo was taken to be displayed.
- We'll deploy the container :
docker compose up -d
- Go to ip:port, depending on your local server IP and chosen port, 8777 by default :
http://ip:8777/
Or your domain :
https://imframe.mydomain.com
🔌 First connection
If you have set a password, enter it and click on Authenticate :

🎨 Personalization
I invite you to consult the customizations page as indicated at the beginning of the tutorial. Here are a few different examples of the clock, in orange:



📱 Availability
Android
Linux | Mac | Windows
Always make sure to get the latest version. Downloads are here :
