Immich Kiosk Cast
Chromecasting Immich Kiosk with CATT
Introduction
Immich is a popular self-hosted alternative to Google Photos. Immich Kiosk provides a highly configurable slideshow interface for displaying Immich photos on browsers and devices.
Casting to a Google Chromecast device is possible but non-trivial, as the required HTTPS connection demands the configuration of SSL certificates and custom DNS entries.
CATT (Cast All The Things) offers a simpler path, enabling a local website to be cast directly to a Chromecast device on the same LAN. This guide describes how to use CATT to cast Immich Kiosk to a local Chromecast device.
Prerequisites
- A running Immich Kiosk instance
- A host system with Docker installed
Familiarity with Docker is assumed, given that Immich itself is typically run as a container.
CATT
CATT allows websites to be rendered on Chromecast devices, as documented in the CATT repository. Rather than installing CATT directly on the host system, the approach below uses a Docker container to keep the host environment clean.
Step 1 — Create a Dockerfile
Create the following Dockerfile in a new directory:
FROM python:3.11-slim
RUN pip install --no-cache-dir catt
ENTRYPOINT ["catt"]
CMD ["--help"]
Step 2 — Build the Image
docker build -t catt .
Step 3 — Scan for Chromecast Devices
Run the container with the scan command to list all Chromecast devices discovered on the local network:
docker run --net=host --rm catt scan
Notes:
--net=hostis required to give the container full access to the local network.--rmremoves the container automatically upon completion.
Step 4 — Cast Kiosk to a Specific Device
The cast_site command, combined with the -d option, casts an Immich Kiosk URL to a named Chromecast device. As documented in the Kiosk documentation, URL query parameters can be used to customise the display at runtime, overriding the values set in config.yaml or the Docker Compose environment.
Example:
Given an Immich Kiosk instance running at 192.168.68.111:3000, the following command casts to a device named Salon. It displays images of two specific people taken between January 1982 and February 2000, with a 15-second slide duration and a fade transition:
docker run --net=host --rm catt \
-d 'Salon' \
cast_site 'http://192.168.68.111:3000?duration=15&transition=fade&person=25204c5c-e232-4488-b97c-c3f06f5cd195&person=25204c5c-e232-4488-b97c-c3f06f5cd196&date_filter=1982-01-01_to_2000-02-01'
The backslash line-continuation characters improve readability but the full command can equally be written on a single line.