Transform Your Raspberry Pi into a Digital Photo Frame

Robin Ingelbrecht
5 min readOct 30, 2024

--

The Raspberry Pi is an affordable, compact device that can easily turn a monitor into a customisable digital photo frame, displaying your favorite photos in a continuous slideshow. I’ll be using Immich, a self-hosted photo and video management solution, to achieve this.

Photo by Denis N. on Unsplash

What you’ll need

  • Raspberry Pi (5)
  • Micro SD Card
  • Ethernet Cable (or good Wifi connection)
  • Touch Screen or LCD screen

I used a Raspberry Pi 5 running the latest version of Raspberry Pi OS Bookworm 64-bit.

Install the operating system

  • Download the latest version from raspberrypi.com/software and run the installer.
  • Click Choose device and select your Raspberry Pi model from the list.
Select your Raspberry Pi model
  • Next, click Choose OS and select Raspberry Pi OS (64 bit)
Choose Operating Sytem
  • Connect your preferred storage device to your computer. For example, a microSD card. Then, click Choose storage and select your storage device.
Choose storage device
  • Next, click Next and Edit Settings. Set a proper hostname and credentials
Set hostname and credentials
  • Under the tab Services, click Enable SSH. When you’ve finished entering OS customisation settings, click Save to save your customisation.
Enable SSH
  • Then, click Yes to apply OS customisation settings when you write the image to the storage device.
  • Finally, respond Yes to the “Are you sure you want to continue?” popup to begin writing data to the storage device.
Write data to the storage device

Install docker

Once you have booted your Pi for the first time, you’ll need to SSH into it:

ssh immich.local

You should be prompted to enter the password you have configured earlier. Docker is the recommended method to install and run Immich. To install docker on your Raspberry Pi device, run following commands

sudo apt update
sudo apt upgrade -y
curl -sSL https://get.docker.com | sh

For another user to be able to interact with Docker, it needs to be added to the docker group, run:

sudo usermod -aG docker $USER

You’ll need to log out and log back in for these changes to take effect

logout

Install Immich

At this point your Raspberry Pi is ready to have Immich installed. Immich has extensive installation documentation. But here’s a short summary of the commands you need to run:

mkdir ./immich-app
cd ./immich-app
# Get docker-compose.yml file
wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
# Get .env file
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env
# Start the docker containers
docker compose up -d

After starting the Docker containers, the web application should be available at http://immich.local:2283on any device in your local network. If this is not the case, you will probably need to use the IP address of your Raspberry Pi: http://<machine-ip-address>:2283

Static IP

If you know how to set a static IP for your Raspberry Pi, I’d recommend you to do this. That way your Immich photo server will always be available on the same IP address.

Run docker at system start up

Ideally we want the docker containers (and therefore the Immich app) to be started automatically when the Raspberry Pi is rebooted. You can do this by running

sudo systemctl enable docker

Configuring Immich

What I tend to do is to create an album per digital photo frame. In this case I created an album for my photo frame in the living room and added some pictures to it

Example album with pictures

Install the app

It’s also perfectly possible to install the Immich mobile app

This will allow you to upload pictures from your mobile device

Connect your Raspberry Pi to a (touch) screen

Last but not least you will need to connect your Raspberry Pi to some kind of monitor. I decided to use the LUCKFOX Raspberry Pi Screen 7 Inch HDMI Touchscreen for this.

Install a virtual keyboard

For me, the default virtual keyboard installed on the Raspberry Pi did not work. After some searching I decided to install wvkbd

sudo apt install wvkbd

Next I added a simple bash script on my desktop to toggle the keyboard

PID="$(pidof wvkbd-mobintl)"
if [ "$PID" != "" ]; then
killall wvkbd-mobintl
else
wvkbd-mobintl
fi

Starting your slideshow

Next, navigate to album you created and start a new slideshow by clicking the slideshow icon in the top right-hand corner.

Start slideshow

When the slideshow is running, click the settings cog in the top left-hand corner. Make sure to set the direction to shuffle. This option will run the slideshow indefinitely. The other options you can set as you see fit.

Configure slideshow settings

Immich Kiosk (optional)

Immich Kiosk is a lightweight slideshow for running on kiosk devices and browsers that uses Immich as a data source.

I also installed Immich Kiosk on top of Immich to enable some extra features. Just edit your docker-compose.yml file and add the kiosk service:

  immich-kiosk:
image: damongolding/immich-kiosk:latest
container_name: immich-kiosk
environment:
TZ: "Europe/Brussels"
# Required settings
KIOSK_IMMICH_API_KEY: "YOUR_IMMICH_API_KEY"
KIOSK_IMMICH_URL: "YOUR_IMMICH_URL"
# Clock
KIOSK_SHOW_TIME: FALSE
KIOSK_TIME_FORMAT: 24
KIOSK_SHOW_DATE: FALSE
KIOSK_DATE_FORMAT: DD/MM/YYYY
# Kiosk behaviour
KIOSK_REFRESH: 20
KIOSK_DISABLE_SCREENSAVER: TRUE
# Asset sources
KIOSK_SHOW_ARCHIVED: FALSE
KIOSK_ALBUM: "YOUR_IMMICH_ALBUM_ID"
KIOSK_PERSON: ""
# UI
KIOSK_DISABLE_UI: FALSE
KIOSK_HIDE_CURSOR: TRUE
KIOSK_FONT_SIZE: 100
KIOSK_BACKGROUND_BLUR: TRUE
KIOSK_THEME: FADE
KIOSK_LAYOUT: SINGLE
# Transistion options
KIOSK_TRANSITION: FADE
KIOSK_FADE_TRANSITION_DURATION: 1
KIOSK_CROSS_FADE_TRANSITION_DURATION: 1
# Image display settings
KIOSK_SHOW_PROGRESS: FALSE
KIOSK_IMAGE_FIT: CONTAIN
KIOSK_IMAGE_EFFECT_AMOUNT: 120
# Image metadata
KIOSK_SHOW_IMAGE_TIME: FALSE
KIOSK_IMAGE_TIME_FORMAT: 24
KIOSK_SHOW_IMAGE_DATE: TRUE
KIOSK_IMAGE_DATE_FORMAT: DD MMMM YYYY
KIOSK_SHOW_IMAGE_EXIF: FALSE
KIOSK_SHOW_IMAGE_LOCATION: TRUE
KIOSK_HIDE_COUNTRIES: "HIDDEN_COUNTRY,HIDDEN_COUNTRY"
KIOSK_SHOW_IMAGE_ID: FALSE
# Kiosk settings
KIOSK_WATCH_CONFIG: FALSE
KIOSK_PASSWORD: ""
KIOSK_CACHE: TRUE
KIOSK_PREFETCH: TRUE
KIOSK_ASSET_WEIGHTING: TRUE
KIOSK_PORT: 3000
ports:
- "3000:3000"
restart: always

Now you need to rebuild your containers, run

docker compose up -d --build

After this you should be able to navigate to http://immich.local:3000/ where your slideshow will start

That’s it?

Yes, turning a Raspberry Pi into a DIY digital photo frame is that simple. With just a few basic steps, you can create a personalised, ever-changing display that’s affordable, customisable, and unique.

The result

--

--

Robin Ingelbrecht

My name is Robin Ingelbrecht, and I'm an open source (web) developer at heart and always try to up my game. Obviously, I'm also into gaming 🎮.