Initial commit for version 1.0.0

This commit is contained in:
2026-02-24 21:24:38 -05:00
commit e2dba6ee86
33 changed files with 3836 additions and 0 deletions

249
kiosk-setup.sh Normal file
View File

@@ -0,0 +1,249 @@
#!/bin/bash
# kiosk-setup.sh
# OpenKiosk Browser Terminal Setup
# Copyright (C) 2024 Rod Wright
# SPDX-License-Identifier: GPL-2.0
OK_VERSION="1.0.0"
# Test for superuser
current_user=`whoami`
current_login=`who am i | awk '{print $1}'`
if [ "$current_user" != "root" ]
then
echo "You must have root privileges to run this setup."
echo "Try 'sudo ./kiosk-setup.sh'"
exit 1
fi
echo ""
echo " Welcome to OpenKiosk $OK_VERSION"
echo ""
echo ""
echo "This script will configure a Debian based system to be a Kiosk Browser terminal."
echo ""
echo ""
echo "To continue with the setup of OpenKiosk, press enter. Otherwise,"
echo -n "press ctrl-c to quit."
read continueok
echo ""
echo ""
# Determine OS Release version
echo -n "OS information: "
echo ""
cat /etc/os-release
echo ""
sleep 5
# Copy in the needed files
echo "Copying files..."
chmod +x usr/local/bin/*
cp -Rv etc/* /etc/
cp -v usr/local/bin/* /usr/local/bin
cp -v lib/systemd/system/getty@tty1.service /lib/systemd/system
rm /lib/systemd/system/ctrl-alt-del.target
ln -s /dev/null /lib/systemd/system/ctrl-alt-del.target
echo "...done."
# Make sure OS is up to date
echo "Updating Operating System..."
sleep 5
apt update && apt dist-upgrade -y
echo "...done."
echo ""
# Remove snap if installed
if snap list >/dev/null 2>&1; then
echo "Removing snap..."
snap remove lxd
snap remove core20
snap remove snapd
systemctl stop snapd
systemctl disable snapd
systemctl mask snapd
apt purge snapd -y
apt-mark hold snapd
rm -rf /home/*/snap/
rm -rf /root/snap/
rm -rf /snap
rm -rf /var/snap
rm -rf /var/lib/snapd
echo "...done."
# Add the firefox deb repository since we won't be getting snap
add-apt-repository -y ppa:mozillateam/ppa
fi
# Install packages
echo ""
echo ""
echo "Installing required kiosk packages..."
sleep 5
echo ""
# If we are on a Raspberry Pi 5, we'll need to install this for the
# xorg server to start
if cat /proc/cpuinfo|grep -q "Raspberry Pi 5" >/dev/null 2>&1
then
apt install -y gldriver-test
fi
# If we are on a Raspberry Pi running Raspbian we use chromium-browser.
# If we are on anything else, we use firefox.
if cat /etc/os-release|grep -q "Raspbian" >/dev/null 2>&1
then
browser_pkg="chromium-browser"
ln -sf /etc/openkiosk.conf-chromium /etc/openkiosk.conf
else
browser_pkg="firefox"
ln -sf /etc/openkiosk.conf-firefox /etc/openkiosk.conf
fi
# Install required packages
apt update
apt install -y --no-install-recommends xorg openbox $browser_pkg
apt install -y cups libcups2-dev cmake
systemctl enable getty@tty1.service
cd brlaser-master && cmake . && make && make install && cd ..
myhn=`hostname`
infotimer=10
echo ""
echo ""
echo ""
echo "The cups print server has been installed."
echo "After the kiosk is set up and working, you can use another network"
echo "computer to point a web browser to $myhn:631 to add a printer"
echo "of your choosing."
while [ $infotimer -gt 0 ]
do
sleep 1
((infotimer-=1))
done
echo ""
# Download and install webmin
echo "Installing webmin..."
skipwebmin="false"
curl -o setup-repos.sh https://raw.githubusercontent.com/webmin/webmin/master/setup-repos.sh
if [ $? -ne 0 ]
then
echo "Warning: failed to download Webmin repo setup script."
echo -n "Ignore and [c]ontinue or [A]bort? [c/A]: "
read wmfailchoice
if [ "$wmfailchoice" = "C" -o "$wmfailchoice" = "c" ]
then
skipwebmin="true"
echo "Continuing without installing Webmin. You should investigate the failure"
echo "and install Webmin manually after the kiosk is set up if you would like"
echo "to be able to manage the kiosk from another computer with a GUI instead"
echo "of through ssh only."
echo -n "Press enter to continue."
read continueok
echo ""
else
echo "Aborting kiosk setup."
exit 1
fi
fi
if [ "$skipwebmin" = "false" ]
then
sh setup-repos.sh -f
apt install -y --install-recommends webmin
fi
echo "...done."
# Install user config
echo ""
echo "Creating default user..."
cloneuser `who am i | awk '{print $1}'` customer
mkdir -p /home/customer/.config/openbox
cp home/customer/.profile /home/customer
cp home/customer/.config/openbox/rc.xml /home/customer/.config/openbox
cp home/customer/openkiosk_mozilla_profile.tar.gz /home/customer
chown customer:customer /home/customer/openkiosk_mozilla_profile.tar.gz
chown -R customer:customer /home/customer/.config /home/customer/.profile
echo "...done."
echo ""
# Prompt for URL and kiosk type
echo ""
echo "This web browser based kiosk will need to know the site you would"
echo "like to load. This can be a normal website or a file to be displayed"
echo "in the browser, but must be available as a web URL."
echo ""
echo "Note that in kiosk mode, your normal navigation buttons and mouse"
echo "right-click menus are not available, so you will have no way to go"
echo "back or forward in a page unless the page itself provides that"
echo "capability."
url_ok=false
server_url="https://localhost:10000"
while ! $url_ok
do
echo ""
echo "Please enter complete URL."
echo -n "[https://localhost:10000] :"
read server_url
if [[ $server_url == "" ]]
then
server_url="https://localhost:10000"
fi
if ! `wget --no-check-certificate -q -o /dev/null -O /dev/null $server_url`
then
echo ""
echo "There was an error retrieving the URL you entered. The URL must"
echo "be a complete URL of the format \"http://somesite.com/somepage\"."
echo "If this URL is on the local network, try using the IP address or"
echo "the local domain. For example, instead of \"http://myserver/mypage\","
echo "try \"http://192.168.1.1/mypage\" or \"http://myserver.local/mypage\"."
else
url_ok=true
fi
done
sed -i 's,'TGT_URL=.*','TGT_URL="\"$server_url\""',' /etc/openkiosk.conf-firefox
sed -i 's,'TGT_URL=.*','TGT_URL="\"$server_url\""',' /etc/openkiosk.conf-chromium
echo ""
type_choice="none"
while [ "$type_choice" = "none" ]
do
echo "Will this kiosk be an interactive kiosk or a display-only kiosk?"
echo -n "[I]nteractive or [D]isplay-only? [I] :"
read kiosk_type
echo ""
if [ "$kiosk_type" = "D" -o "$kiosk_type" = "d" ]
then
echo "Configuring for display-only kiosk."
echo "How often would you like to check for changes to the page being"
echo "displayed? Specify the number of seconds. Enter 0 to disable"
echo "periodic checking."
echo -n "Seconds between checks? [60] :"
read poll_interval
echo ""
if [ "$poll_interval" = "" ]; then poll_interval=60; fi
sed -i 's,'POLL_INTERVAL=.*','POLL_INTERVAL="\"$poll_interval\""',' /etc/openkiosk.conf-firefox
sed -i 's,'POLL_INTERVAL=.*','POLL_INTERVAL="\"$poll_interval\""',' /etc/openkiosk.conf-chromium
echo "Disabling screen blanking."
sed -i 's,'INHIBIT_BLANK=.*','INHIBIT_BLANK="\"1\""',' /etc/openkiosk.conf-firefox
sed -i 's,'INHIBIT_BLANK=.*','INHIBIT_BLANK="\"1\""',' /etc/openkiosk.conf-chromium
type_choice="D"
elif [ "$kiosk_type" = "I" -o "$kiosk_type" = "i" ]
then
echo "Configuring for interactive kiosk."
type_choice="I"
else
echo "Please enter I for interactive or D for display-only."
fi
done
echo ""
echo "Kiosk configuration is now complete. "
echo ""
echo "The system must be rebooted for the configuration to take effect."
echo -n "Enter R to reboot now, or hit enter to return to shell. "
read rebootok
if [ "$rebootok" = "R" -o "$rebootok" = "r" ]
then
reboot
else
exit 0
fi