Skip to content

About

Turns a Debian-based system into a Chromium kiosk.

Resources

Stars

9 stars

Watchers

1 watching

Forks

Latest commit

 

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kiosk Setup Script

Turns a Debian-based system into a Chromium kiosk. The URL is stored in /etc/kiosk/kiosk.conf and can be changed later without re-running setup.


Features

  • Installs LXDE, Chromium, LightDM, SSH, and related packages
  • LightDM autologin into LXDE for the kiosk user
  • Single config file: /etc/kiosk/kiosk.conf
  • Change URL anytime: sudo update-kiosk-url <url>
  • Chromium starts from LXDE autostart via kiosk-chromium.sh
  • User kiosk.service used for URL restarts when the session is active
  • Disables keyboard and mouse via udev rules after reboot
  • Logging: /var/log/kiosk-setup.log and journalctl -t kiosk-chromium

Warning

This script disables keyboard and mouse access after reboot.
Use SSH as an admin user (with sudo) for maintenance — not the kiosk account.


Requirements

  • Debian (or Debian-based)
  • An admin user with sudo (or root) to run setup
  • A kiosk user for the graphical session (no sudo)
  • Internet access during setup

Create accounts before setup:

sudo adduser admin
sudo usermod -aG sudo admin
sudo adduser kiosk

Usage

  1. Clone the repository:

    git clone git@gitlab.corp.vancouveronthenet.com:quality/kiosk-setup.git
    cd kiosk-setup
  2. Make the script executable:

    chmod +x kiosk-setup.sh
  3. Run as admin (not as kiosk):

    sudo ./kiosk-setup.sh
  4. Follow the prompts:

    • Kiosk session username → enter kiosk
    • Config → uses existing /etc/kiosk/kiosk.conf, or generate a new URL
  5. During apt install, if asked for a display manager, select lightdm (not gdm3).

  6. Reboot when prompted (required for kiosk display and input lockdown):

    sudo reboot

Config file

The kiosk URL lives in /etc/kiosk/kiosk.conf:

KIOSK_URL=https://example.com/kiosk

Example file in the repo: config/kiosk.conf.example

Change URL after setup (no git pull needed):

sudo update-kiosk-url https://example.com/kiosk

SSH access

Use an admin account:

ssh admin@<device-ip>
sudo journalctl -t kiosk-chromium -f
hostname -I

File structure

Repository:

kiosk-setup/
├── kiosk-setup.sh
├── config/
│   └── kiosk.conf.example
├── scripts/
│   ├── kiosk-chromium.sh
│   └── update-kiosk-url
├── .gitignore
└── README.md

Installed on the host:

Path Purpose
/etc/kiosk/kiosk.conf KIOSK_URL=...
/usr/local/bin/kiosk-chromium.sh Reads config, launches Chromium
/usr/local/bin/update-kiosk-url Updates config, restarts browser
/etc/systemd/user/kiosk.service User unit for URL restarts
/etc/udev/rules.d/99-disable-input.rules Keyboard/mouse lockdown after reboot
~kiosk/.local/share/kiosk-chromium/ Dedicated Chromium profile (survives hostname changes)
~kiosk/.config/lxsession/LXDE/autostart X session + Chromium autostart

Troubleshooting

Black screen — Chromium did not start. Check autostart includes kiosk-chromium.sh, then:

sudo journalctl -b -t kiosk-chromium -n 50
pgrep -a chromium
sudo -u kiosk DISPLAY=:0 XAUTHORITY=/home/kiosk/.Xauthority /usr/local/bin/kiosk-chromium.sh

If you see profile appears to be in use by another Chromium process, that is usually a stale lock after a hostname change or crash. Current kiosk-chromium.sh clears those automatically on boot; re-run setup to install it:

sudo ./kiosk-setup.sh
sudo reboot

Manual clear (older installs only):

sudo -u kiosk rm -f /home/kiosk/.config/chromium/Singleton* \
  /home/kiosk/.local/share/kiosk-chromium/Singleton*
sudo -u kiosk DISPLAY=:0 XAUTHORITY=/home/kiosk/.Xauthority /usr/local/bin/kiosk-chromium.sh

Keyring popup — re-run setup to install the latest kiosk-chromium.sh (uses --password-store=basic).

GNOME bar or dock — wrong session. Re-run setup (forces LXDE autologin).

About

Turns a Debian-based system into a Chromium kiosk.

Resources

Stars

9 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages