Tested on Debian 9.4.0
debian-9.4.0-amd64-netinst.iso and perform graphical install, partition with MBR and single root partition filling the entire disk without any swap partition. You can use your own partitioning preference if you’d like here.
Choose minimal selections with no graphical desktop environment.
Create the default
root user and a separate user
Set up networking if desired, but we’ll assume here you’re using default settings on a network with a DHCP server automatically assigning IP addresses.
Install the following packages as
apt-get install -y chromium xorg xinit vim openssh-server less curl
Create ssh key with
ssh-keygen and set up the
authorized_keys file. Configure
/etc/ssh/sshd_config if desired. On my test machine, I set the following in
PermitRootLogin yes PasswordAuthentication yes
You may wish to use
PermitRootLogin without-password for better security. Using ssh makes it easier to update remotely. Just ssh into the machine remotely and run your typical
apt-get update && apt-get -y dist-upgrade
Enable the service
systemctl enable ssh.service systemctl start ssh.service
Configure auto login on
Create a new dir:
mkdir -p "/email@example.com/"
Then create a new file
[Service] ExecStart= ExecStart=-/sbin/agetty --autologin tv --noclear %I $TERM
Enable non-graphical console as the default runlevel with
systemctl set-default multi-user.target
Disable console blanking
This probably isn’t needed as we’ll be running X, but I like to add it anyway. Add the following to the end of
setterm -blank 0 -powersave off &> /dev/null
Disable X blanking
Create a new file
/home/tv/.xinitrc and add:
#!/bin/bash xset s noblank xset s off -dpms exec /usr/bin/chromium --kiosk --window-size=1920x1080 'https://YOURWEBSITE.COM/'
I’ve had to use the
--window-size option as otherwise it would open with a incorrect window size which only took up half the monitor (not sure of the reason behind this)
Replace the URL with your desired URL to open. I prefer the following, but it allows user to press F11 and exit fullscreen mode, access web developer tools, and the print dialog. This might not be desirable in an actual real kiosk.
exec /usr/bin/chromium --incognito --start-fullscreen 'https://YOURWEBSITE.COM/'
Set up to start X automatically for
Add to the end of
exec startx -- -nocursor
-nocursor hides the mouse pointer. Don’t use this if you want the mouse pointer to be visible.
Reboot the machine, on starting up, the machine should autologin with user
tv and start X with
chromium running, loading your desired URL. You should not be able to exist this shell.
You can open a separate login console at
tty2 if you wish by pressing CTRL + ALT + F2.
Shutting down machines
Press the power button. ACPI power shutdown sequence should begin.