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
Section titled “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
Section titled “config.yaml”## Required settings - move these to ENV if you want to check in this fileimmich_api_key: ""immich_url: ""
## Clockshow_time: falsetime_format: 24 # 12 or 24show_date: falsedate_format: YYYY/MM/DDclock_source: client
## Kiosk behaviourrefresh: 60 # in secondsdisable_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 sourcesshow_archived: false # Allow assets marked as archived to be displayed.
## ID(s) of person or people to displayperson: - "PERSON_ID"require_all_people: false # When true, only show images containing all specified people togetherexcluded_people: - "PERSON_ID"
## ID(s) of album or albums to displayalbum: - "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 | oldestexcluded_albums: - "ALBUM_ID"
## Date range or ranges to displaydate: - "YYYY-MM-DD_to_YYYY-MM-DD"
## Value(s) of tag(s) to displaytag: - "TAG_VALUE"
memories: false # show memories
## Filters# date_filter: last-30-days # only applies to people and random assets
## Experimentalexperimental_album_video: false
## UIdisable_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 % characterbackground_blur: true # display a blurred version of image as backgroundbackground_blur_amount: 10 # amount of blur to apply to background image (sigma)theme: fade # which theme to use. fade or solidlayout: 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 optionstransition: none # cross-fade, fade or nonefade_transition_duration: 1 # in secondscross_fade_transition_duration: 1 # in seconds
## Image display settingsshow_progress: false # display a progress barimage_fit: contain # none | contain | coverimage_effect: none # none | zoom | smart-zoomimage_effect_amount: 120use_original_image: false # use the original file.
## Image METADATAshow_owner: false # show the owner of the imageshow_album_name: falseshow_person_name: falseshow_person_age: falseshow_image_time: falseimage_time_format: 24 # 12 or 24show_image_date: falseimage_date_format: YYYY-MM-DDshow_image_description: falseshow_image_exif: falseshow_image_location: falseshow_image_qr: falsehide_countries: - "country to hide"show_image_id: falseshow_more_info: trueshow_more_info_image_link: trueshow_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 paramskiosk: 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 (with env)
Section titled “docker-compose.yaml (with env)”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.
-
Create a
docker-compose.env
file.Terminal window touch docker-compose.env -
Remove secrets from
config.yaml
(anddocker-compose.yaml
) - generallyimmich_url
andimmich_api_key
. -
Include your secrets in
docker-compose.env
.Terminal window KIOSK_IMMICH_API_KEY=SECRET_KEYKIOSK_IMMICH_URL=SECRET_URL -
Update
docker-compose.yaml
to includeenv_file:
.services:immich-kiosk:env_file:- docker-compose.env -
Add
docker-compose.env
to.gitignore
.