Instructables

Setting Up Ubuntu as a Kiosk Web Appliance

Featured
At work we have the frequent need for a machine that will allow students to access the internet without having full access to a computer.  To accomplish this task we previously resorted to creating AutoHotKey scripts on a Windows XP machine.  Many of the students and the staff who monitored these computers took issue with the computer's slow boot and running speed.  To cope with this we started to explore alternatives to Windows.  This is where we combined Ubuntu (a fast operating system) with Chromium-browser (one of the fastest browsers).  Now we have really old machines running as web kiosks that boot in 20 seconds or less and are very responsive to clicks, typing, and even flash videos and animations.

Follow the steps in this Instructable to set up Ubuntu, and Chromium if you haven't already.

Some potential uses for this type of system:
    * Web Kiosk
    * Information Booth
    * Subsonic Guest Interface
    * X10 House Control
 
Remove these adsRemove these ads by Signing Up

Step 1: Add XScreensaver & Ubuntu Restricted Extras

On our systems we found that even LCD monitors got burnt in after time.  They are not supposed to be able to do this, but they were.  To remedy this, we tried to get the default screensavers to come up.  They were not great at running from a script.  Instead the best option for this is to install the xscreensaver packages.  I like to do this from the command line so click Applications, highlight Accessories, and click Terminal.  From there enter the command "sudo apt-get install xscreensav* -y" without the quotation marks.  The asterisk at the end allows aptitude to install all of the packages that start with xscreensav, thus installing all the additional screensavers available.
If you will be using flash you will need to install the plugin for it.  The best way I've found to do this is similar to adding xscreensaver.  In the terminal window enter "sudo apt-get isntall ubuntu-restricted-extras -y".  Once this is done close the Terminal window.
1-40 of 169Next »
chuydb1 year ago
Made it back by runnig a terminal...then

sudo nano /etc/lightdm/lightdm.conf

and deleting the autologin user line.

How did you get to the terminal? CTRL-ALT-T doesn't work for me.

natrinicle (author)  newuser20141 month ago
ctrl+alt+t only works while in a window manager. ctrl+alt+f1 or ctrl+alt+f2 should take you to an alternate tty though.
natrinicle (author)  chuydb1 year ago
Excellent! Glad you figured it out. Thanks for posting the answer!
lowbrr7 days ago

Sooo, I set this up on Ubuntu 14.04, and I got it working, but there's a problem.

I don't know how to exit the kiosk mode and log in to a different account. I can access the terminal through some of the methods detailed below, but I don't have Sudo access because the Kiosk account is a basic user, and that's as far as I know how to get.

Any and all help is appreciated.

natrinicle (author)  lowbrr7 days ago
You can use ctrl+alt+F1 or ctrl+alt+F2 to switch to a terminal login. From there, login with a user that has access to sudo.
breinicke16 days ago

I've had the system set up for a couple weeks and have casually been interacting with it in my spare time, ensuring it is locked down. I then realized there is a glaringly obvious way bypassing the full screen locked down nature.
Is there a way to edit the right click menu? With a simple mouse wheel click, or a right click "open link in new Window"/"New Tab" selection, a simple and commonly known technique gives the user a URL bar and full reign of the settings menu, etc.

natrinicle (author)  breinicke16 days ago
When I tested this years ago, it didn't give you the URL bar or settings menu from a new tab page. If you follow the part of setting it so that Chrome's settings are read only, you shouldn't need to worry as closing the browser/reopening it should reset the state.
breinicke1 month ago

I made it but am having a small issue. I used a P4. Ubuntu 14 ran, but was sluggish so I used lubuntu instead and it behaves much snappier. and works short of one thing glitch:
When it loads into kiosk mode, it has narrow strip across the bottom where the toolbar would be in the normal desktop mode and it shows whatever the wallpaper is set as in that strip.
Any ideas on how to get rid of this strip?

If related, on Step 5 where you said to edit the Local State file, I did not find the Top or Left line to enter zero. I had to use leafpad as an editor in LXDE and even did a file search for left and top with no results.
Did this go away in recent Chrome versions?

natrinicle (author)  breinicke1 month ago

It does look like they removed this file in recent versions. Not sure if they just moved it or renamed it or if they got rid of it altogether. The strip across the bottom is likely something to do with this file missing (I was getting similar things with Chrome before I edited that).

Thank you very much.

natrinicle (author)  breinicke1 month ago

It does look like they removed this file in recent versions. Not sure if they just moved it or renamed it or if they got rid of it altogether. The strip across the bottom is likely something to do with this file missing (I was getting similar things with Chrome before I edited that).

stejk111 month ago

Super tutorial and it's exactly what I am looking for.

Just one thing though... I need to use Firefox browser rather than Chromium as I will be using a touch screen and for some reason Chromium doesn't work very well for me.

I'm just stuck at step 7 and 8 and how to launch Firefox rather than Chromium. Can you help?

Thanks

natrinicle (author)  stejk111 month ago

I'm not certain where you would set Firefox's dimensions as I haven't really dug into it, but you would want to change /usr/share/xsessions/kiosk.desktop's Exec line to point to the Firefox executable. You can find where this is by running "which firefox". Then you will want to remove/change both lines that start with cat in /usr/share/xsessions/chromeKiosk.sh and change chromium-browser to firefox as well.

nhburgess1 month ago

Great tutorial.

Suppose I would like to deploy this on multiple machines. Could I have a script that runs and makes all of these changes at once? Or can I copy and paste some files/folders?

Any help would be appreciated.

Rico

natrinicle (author)  nhburgess1 month ago

Thanks :)

I have been considering re-working this tutorial so that it could be scriptable but have been too busy with work lately and this has taken a back burner. Will look into it again here soon. Also, you could always build up one machine, clone the drive, and then log in and change the IP/hostname for each of the machines.

newuser20141 month ago

Great tutorial! One question, though. I set this up on 14.04 and have it working, but I can't back to the sign in screen. The login process doesn't pause anywhere to hit ESC or anything else to stop the auto login. I need to make some adjustments.

Any ideas?

natrinicle (author)  newuser20141 month ago
ctrl+alt+f1 or ctrl+alt+f2 should take you back to a terminal window. From there you should be able to edit and make adjustments to the various configurations.
sitoto4 months ago

Great instructable. I was successful in installing and configuring everything and I can boot in Kiosk Mode. My question is; is there anything else i need to install as a receiver? in order to make the touch screen working, because now my touch screen mouse is just bouncing around and not clicking anything.

natrinicle (author)  sitoto4 months ago
It really depends from screen to screen. Is it a USB screen? If so, please run lsusb -v and paste the output into a pastebin and shoot me a link. Otherwise, get me the make and model and I'll see if anyone's got any advice online (when it doubt, Google it).
godzilla8nj6 months ago

You might be interested in Sanickiosk. It's a simple-to-use, completely free, totally customizable web kiosk I built. You can download an ISO or run a script against a fresh Ubuntu Server installation. The entire system can be customized and administrated through the browser. http://links.sanicki.com/sanickiosk

balno1 year ago
Great instructable. I've recently installed some computers as described in our local library and it works like a charm ! Thanks thanks thanks ! By the way, the part of the script used for setting the initial window size didn't work here, I used this one instead :

-------------------------------------------------------------------------------------------------------------
#!/bin/bash

# we get screen resolution

res=$(xrandr -q | awk -F'current' -F',' 'NR==1 {gsub("( |current)","");print $2}')
resx=$(echo $res | awk '{split($0,array,"x")} END{print array[1]}')
resy=$(echo $res | awk '{split($0,array,"x")} END{print array[2]}')

# starting xscreensaver

xscreensaver -nosplash &

while true;
        do chromium-browser %u --incognito --window-size=$resx,$resy
        sleep 5s;
done




--------------------------------------------------------------------------------------------------------------
Thanks again for the good work.

François. (Agneaux. France)
balno balno1 year ago
as you can see, window size isn't saved anywhere here, it is set by a flag on the command line used to run chromium.
natrinicle (author)  balno1 year ago
Beautiful code! Thanks for the update on that!
scottdn1 year ago
Excellent instructable. I was successful in configuring everything and the Kiosk is working as expected except for one minor issue. While in the kiosk the mouse pointer displays a black X as opposed to a white pointer. What is causing this and how can it be resolved?
natrinicle (author)  scottdn1 year ago
That's the default X Cursor, it looks like you can change it by following the instructions Beastie explains here: http://forums.freebsd.org/showthread.php?t=27920
Like the instructable but what in the world made you think lcd screens would not burn in????
natrinicle (author)  ghostbust5551 year ago
I accounted for that, hence the xscreensaver installation and portion of the script.
noob2ub1 year ago
Does anyone know the correct way to get my kiosk screen to go full screen? I tried many of the methods on this site and I still have a 1/2 inch of uncovered screen at the bottom of my kiosk. My settings are 1000 bottom and 1280 right. Any help is greatly appreciated.
nmartin121 year ago
I GOT IT!!!! Once logged into kiosk I navigated in the file browser to the files I created and executed kiosk.desktop. Now chrome launches the kiosk when started as a regular program from the sidebar (unity launcher)
nmartin121 year ago
Ok so I redid the two lines in the bash file to fix the issue but chromium will not autostart or even start in kiosk mode for that other user. I am at a loss as to why. I have redone the steps several times and copy pasted to prevent typos.
natrinicle (author)  nmartin121 year ago
Can you check who the script is owned by and what the permissions on it are by running an "ls -al" in the terminal while in the same directory as the script?
nmartin121 year ago
I even thought about reworking the chromeKiosk.sh file. Though I have no Idea exactly how any of the scripting works yet. I am running 12.04 if that changes anything, I noticed some steps don't exist anymore.
rpace19061 year ago
Thank you for posting this! I found it useful. You wouldn't happen to know anything about bell - merivale would you? Any insight would be great!
natrinicle (author)  rpace19061 year ago
No problem rpace1906. I'm afraid the only things I know about Bell is what I can Google on it. I live in the U.S., not Canada.
chuydb1 year ago
Im using ubuntu 12.04 LTS, finllay got working the kiosk with autologin. Couple of things, how do I switch back? If I force reboot the autologin gets me right back to the kiosk mode, hence I cant do anything.

chuydb chuydb1 year ago
Been playing around with the terminal to see if i could force out of the kiosk, still nothing.
Clr361 year ago
Where might I have gone, followed the directions but now even when using the admin or master account it loads the kiosk mode? Now I can't change any setting. Thanks
natrinicle (author)  Clr361 year ago
You will need to edit the ~/.dmrc file's Session= line. I use KDE by default on my system (not loaded with standard Ubuntu) and my line is Session=kde-plasma.
Just guessing, but I think if you set that line to Session=gnome that it should go back to the gnome desktop for you.
mrazem3 years ago
Is there a way to force Chrome or Chromium start in Full-Screen mode?
1-40 of 169Next »