Converting an existing Ubuntu Desktop into a Chrome kiosk

You might already have Ubuntu Desktop installed and you might want to just run one application without stripping it down. This article should give you a decent idea how to convert a stock Desktop/Unity install into a single-application computer.

Published 2014-07-24. Read 7,072 times. Comments. Tagged: kiosk ubuntu

This follows straight on from today’s other article on building a kiosk computer with Ubuntu and Chrome [from scratch]. In my mind that’s the perfect setup: low fat and speedy… But we don’t always get it right first time. You might have already been battling with a full Ubuntu install and not have the time to strip it down.

This tutorial assumes you’re starting with an Ubuntu desktop, all installed with working network and graphics. While we’re in graphical-land, you might as well go and install Chrome.

I have tested this in a clean 14.04 install but be careful. Back up any important data before you commit.

sudo apt update
sudo apt install --no-install-recommends openbox

sudo install -b -m 755 /dev/stdin /opt/kiosk.sh << EOF
#!/bin/bash

xset -dpms
xset s off
openbox-session &

while true; do
    rm -rf ~/.{config,cache}/google-chrome/
    google-chrome --kiosk --no-first-run  'http://thepcspy.com'
done
EOF

sudo install -b -m 644 /dev/stdin /etc/init/kiosk.conf << EOF
start on (filesystem and stopped udevtrigger)
stop on runlevel [06]

emits starting-x
respawn

exec sudo -u $USER startx /etc/X11/Xsession /opt/kiosk.sh --
EOF

sudo dpkg-reconfigure x11-common  # select Anybody

echo manual | sudo tee /etc/init/lightdm.override  # disable desktop

sudo reboot

This should boot you into a browser looking at my home page (use sudoedit /opt/kiosk.sh to change that), but broadly speaking, we’re done.

If you ever need to get back into the desktop you should be able to run sudo start lightdm. It’ll probably appear on VT8 (Control+Alt+F8 to switch).

Why wouldn’t I always do it this way?

I’ll freely admit that I’ve done farts longer than it took to run the above. Starting from an Ubuntu Desktop base does do a lot of the work for us, however it is demonstrably flabbier:

  • The Server result was 1.6GB, using 117MB RAM with 38 processes.
  • The Desktop result is 3.7GB, using 294MB RAM with 80 processes!

Yeah, the Desktop is still loading a number of udisks mount helpers, PulseAudio, GVFS, Deja Dup, Bluetooth daemons, volume controls, Ubuntu 1, CUPS the printer server and all the various Network and Modem Manager things a traditional desktop needs.

This is the reason you base your production model off Ubuntu Server (or even Ubuntu Minimal).

And remember that you aren’t done yet. There’s a big list of boring jobs to do before it’s Martini O’Clock

Just remember that everything I said about physical and network security last time applies doubly here. Ubuntu-proper ships a ton of software on its 1GB image and quite a lot more of that will be running, even after we’ve disabled the desktop. You’re going to want to spend time stripping some of that out and putting in place any security you need to stop people getting in.

Just be careful and conscientious about how you deploy software.