Skip to content

Configuration

While Kiosk is highly customizable, most of the settings and features are opt-in. The only required settings are immich_url and immich_api_key found in core.

Below you will find a configuration file and environment variables containing all the available settings.

docker-compose.yaml
services:
immich-kiosk:
image: ghcr.io/damongolding/immich-kiosk:latest
container_name: immich-kiosk
tty: true
environment:
LANG: "en_GB"
TZ: "Europe/London"
ports:
- 3000:3000
volumes:
- ./config:/config
# - ./custom.css:/custom.css
# - ./offline-assets:/offline-assets
restart: always
config.yaml
## Required settings - move these to ENV if you want to check in this file
immich_api_key: ""
immich_url: ""
## Clock
show_time: false
time_format: 24 # 12 or 24
show_date: false
date_format: YYYY/MM/DD
clock_source: client
## Kiosk behaviour
refresh: 60 # in seconds
disable_screensaver: false # Ask browser to request a lock that prevents device screens from dimming or locking.
optimize_images: false # Whether Kiosk should resize images to match your browser screen dimensions for better performance.
use_gpu: true # Enable GPU acceleration for improved performance.
## Asset sources
show_archived: false # Allow assets marked as archived to be displayed.
## ID(s) of person or people to display
person:
- "PERSON_ID"
require_all_people: false # When true, only show images containing all specified people together
excluded_people:
- "PERSON_ID"
## ID(s) of album or albums to display
album:
- "ALBUM_ID"
## Album IDs to exclude from being shown. Albums in this list will be filtered from
## appearing in the frame even if they are included in the 'album' list.
album_order: random # random | newest | oldest
excluded_albums:
- "ALBUM_ID"
## Date range or ranges to display
date:
- "YYYY-MM-DD_to_YYYY-MM-DD"
## Value(s) of tag(s) to display
tag:
- "TAG_VALUE"
memories: false # show memories
## Filters
# date_filter: last-30-days # only applies to people and random assets
## Experimental
experimental_album_video: false
## UI
disable_ui: false # this is just a shortcut for all ui elements (show_time, show_date, show_image_time, show_image_date)
frameless: false # remove border around image and rounded corners.
hide_cursor: false # Hide cursor/mouse via CSS.
font_size: 100 # the base font size as a percentage. OMIT the % character
background_blur: true # display a blurred version of image as background
background_blur_amount: 10 # amount of blur to apply to background image (sigma)
theme: fade # which theme to use. fade or solid
layout: single # which layout to use. single | splitview | splitview-landscape | portrait | landscape
## Sleep mode
# sleep_start: 22 # sleep mode start time
# sleep_end: 7 # sleep mode end time
# sleep_dim_screen: false # dim screen when sleep mode is active (only works with Fully Kiosk Browser)
sleep_icon: true
## Transition options
transition: none # cross-fade, fade or none
fade_transition_duration: 1 # in seconds
cross_fade_transition_duration: 1 # in seconds
## Image display settings
show_progress: false # display a progress bar
image_fit: contain # none | contain | cover
image_effect: none # none | zoom | smart-zoom
image_effect_amount: 120
use_original_image: false # use the original file.
## Image METADATA
show_owner: false # show the owner of the image
show_album_name: false
show_person_name: false
show_person_age: false
show_image_time: false
image_time_format: 24 # 12 or 24
show_image_date: false
image_date_format: YYYY-MM-DD
show_image_description: false
show_image_exif: false
show_image_location: false
show_image_qr: false
hide_countries:
- "country to hide"
show_image_id: false
show_more_info: true
show_more_info_image_link: true
show_more_info_qr_code: true
like_button_action: favorite # album, favorite or both [album, favorite]
hide_button_action: tag # tag, archive, or both [tag, archive]
## Weather feature - you’ll need an API key from OpenWeatherMap
# weather:
# - name: london
# lat: 51.5285262
# lon: -0.2663999
# api: ""
# unit: metric
# lang: en
# default: false
## Add iframes into Kiosk - you can use local files or remote URLs
#iframe:
# - https://iframe.immichkiosk.app/pokemon
# - ./iframes/pokemon.html
## Immich API keys for specific users
# immich_users_api_keys:
# user1: ""
# show_user: false # show user name
## Offline mode
# offline_mode:
# enabled: false
# number_of_assets: 100
# max_size: 0
# parallel_downloads: 4
# expiration_hours: 0
## Options that can NOT be changed via url params
kiosk:
port: 3000
behind_proxy: false
watch_config: false
fetched_assets_size: 1000
http_timeout: 20
password: ""
cache: true # cache select api calls
prefetch: true # fetch assets in the background
asset_weighting: true # use weighting when picking assets
docker-compose.yaml
services:
immich-kiosk:
image: ghcr.io/damongolding/immich-kiosk:latest
container_name: immich-kiosk
environment:
LANG: "en_GB"
TZ: "Europe/London"
# Required settings
KIOSK_IMMICH_API_KEY: "****"
KIOSK_IMMICH_URL: "****"
# External url for image links/QR codes
KIOSK_IMMICH_EXTERNAL_URL: ""
# Clock
KIOSK_SHOW_TIME: false
KIOSK_TIME_FORMAT: 24
KIOSK_SHOW_DATE: false
KIOSK_DATE_FORMAT: YYYY/MM/DD
KIOSK_CLOCK_SOURCE: client
# Kiosk behaviour
KIOSK_REFRESH: 60
KIOSK_DISABLE_SCREENSAVER: false
KIOSK_OPTIMIZE_IMAGES: false
KIOSK_USE_GPU: true
# Asset sources
KIOSK_SHOW_ARCHIVED: false
KIOSK_ALBUM: "ALBUM_ID,ALBUM_ID,ALBUM_ID"
KIOSK_ALBUM_ORDER: random
KIOSK_EXCLUDED_ALBUMS: "ALBUM_ID,ALBUM_ID,ALBUM_ID"
KIOSK_EXPERIMENTAL_ALBUM_VIDEO: false
KIOSK_PERSON: "PERSON_ID,PERSON_ID,PERSON_ID"
KIOSK_REQUIRE_ALL_PEOPLE: false
KIOSK_EXCLUDED_PEOPLE: "PERSON_ID,PERSON_ID,PERSON_ID"
KIOSK_DATE: "DATE_RANGE,DATE_RANGE,DATE_RANGE"
KIOSK_TAG: "TAG_VALUE,TAG_VALUE,TAG_VALUE"
KIOSK_MEMORIES: false
KIOSK_BLACKLIST: "ASSET_ID,ASSET_ID,ASSET_ID"
# FILTER
KIOSK_DATE_FILTER: ""
# UI
KIOSK_DISABLE_NAVIGATION: false
KIOSK_DISABLE_UI: false
KIOSK_FRAMELESS: false
KIOSK_HIDE_CURSOR: false
KIOSK_FONT_SIZE: 100
KIOSK_BACKGROUND_BLUR: true
KIOSK_BACKGROUND_BLUR_AMOUNT: 10
KIOSK_THEME: fade
KIOSK_LAYOUT: single
KIOSK_SHOW_USER: false
# Sleep mode
# KIOSK_SLEEP_START: 22
# KIOSK_SLEEP_END: 7
# KIOSK_SLEEP_DIM_SCREEN: false
# Transistion options
KIOSK_TRANSITION: none
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: smart-zoom
KIOSK_IMAGE_EFFECT_AMOUNT: 120
KIOSK_USE_ORIGINAL_IMAGE: false
# Image metadata
KIOSK_SHOW_OWNER: false
KIOSK_SHOW_ALBUM_NAME: false
KIOSK_SHOW_PERSON_NAME: false
KIOSK_SHOW_PERSON_AGE: false
KIOSK_SHOW_IMAGE_TIME: false
KIOSK_IMAGE_TIME_FORMAT: 24
KIOSK_SHOW_IMAGE_DATE: false
KIOSK_IMAGE_DATE_FORMAT: YYYY-MM-DD
KIOSK_SHOW_IMAGE_DESCRIPTION: false
KIOSK_SHOW_IMAGE_EXIF: false
KIOSK_SHOW_IMAGE_LOCATION: false
KIOSK_HIDE_COUNTRIES: "HIDDEN_COUNTRY,HIDDEN_COUNTRY"
KIOSK_SHOW_IMAGE_ID: false
KIOSK_SHOW_IMAGE_QR: false
KIOSK_SHOW_MORE_INFO: true
KIOSK_SHOW_MORE_INFO_IMAGE_LINK: true
KIOSK_SHOW_MORE_INFO_QR_CODE: true
# More info actions
KIOSK_LIKE_BUTTON_ACTION: favorite
KIOSK_HIDE_BUTTON_ACTION: tag
# Kiosk settings
KIOSK_PORT: 3000
KIOSK_BEHIND_PROXY: false
KIOSK_WATCH_CONFIG: false
KIOSK_FETCHED_ASSETS_SIZE: 1000
KIOSK_HTTP_TIMEOUT: 20
KIOSK_PASSWORD: ""
KIOSK_CACHE: true
KIOSK_PREFETCH: true
KIOSK_ASSET_WEIGHTING: true
ports:
- 3000:3000
restart: always

When checking config.yaml into a repository

Section titled “When checking config.yaml into a repository”

It is recommended to avoid checking-in any secrets.

  1. Create a docker-compose.env file.

    Terminal window
    touch docker-compose.env
  2. Remove secrets from config.yaml (and docker-compose.yaml) - generally immich_url and immich_api_key.

  3. Include your secrets in docker-compose.env.

    Terminal window
    KIOSK_IMMICH_API_KEY=SECRET_KEY
    KIOSK_IMMICH_URL=SECRET_URL
  4. Update docker-compose.yaml to include env_file:.

    services:
    immich-kiosk:
    env_file:
    - docker-compose.env
  5. Add docker-compose.env to .gitignore.