Initial setup script
This commit is contained in:
120
kiosk.sh
120
kiosk.sh
@ -1,60 +1,94 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
echo "Enter kiosk URL (e.g., https://dashboard.company.com):"
|
||||
read -r KIOSK_URL
|
||||
else
|
||||
KIOSK_URL="$1"
|
||||
fi
|
||||
echo "Setting up Kiosk..."
|
||||
|
||||
echo "Setting up Alpine Linux Kiosk..."
|
||||
echo "Kiosk URL: $KIOSK_URL"
|
||||
cat > /etc/apk/repositories << 'EOF'
|
||||
http://mirror.fcix.net/alpine/v3.22/main
|
||||
http://mirror.fcix.net/alpine/v3.22/community
|
||||
EOF
|
||||
|
||||
if ! grep -q "community" /etc/apk/repositories; then
|
||||
echo "http://dl-cdn.alpinelinux.org/alpine/v3.22/community" >> /etc/apk/repositories
|
||||
apk update
|
||||
fi
|
||||
apk update && apk upgrade
|
||||
|
||||
echo "Installing kiosk packages..."
|
||||
apk add chromium xorg-server xinit openbox font-noto xf86-input-libinput mesa-dri-gallium
|
||||
# Install packages
|
||||
apk add \
|
||||
mesa-dri-gallium mesa-egl mesa-gl mesa-gles \
|
||||
xorg-server xf86-video-fbdev xf86-input-libinput \
|
||||
dbus setxkbmap kbd xrandr xset xinit chromium
|
||||
|
||||
echo "Creating .xinitrc for kiosk mode"
|
||||
cat > /root/.xinitrc << EOF
|
||||
# Configure boot with custom config.txt and cmdline.txt (usercfg.txt is used becuase config.txt get's overwritten on updates)
|
||||
cat > /boot/usercfg.txt << 'EOF'
|
||||
camera_auto_detect=0
|
||||
disable_overscan=1
|
||||
dtoverlay=vc4-kms-v3d
|
||||
gpu_mem=128
|
||||
hdmi_force_hotplug=1
|
||||
hdmi_group=2
|
||||
hdmi_mode=82
|
||||
config_hdmi_boost=4
|
||||
boot_delay=0
|
||||
disable_splash=1
|
||||
EOF
|
||||
|
||||
echo "root=UUID=$(findmnt -no UUID /) modules=sd-mod,usb-storage,ext4 rootfstype=ext4 console=tty3 loglevel=0 vt.global_cursor_default=0" > /boot/cmdline.txt
|
||||
|
||||
# Remove unnecessary services
|
||||
for service in acpid chronyd crond modules seedrng; do
|
||||
rc-update del $service 2>/dev/null || true
|
||||
done
|
||||
|
||||
# Create kiosk user
|
||||
adduser -D -h /srv/kiosk -s /bin/ash kiosk
|
||||
|
||||
# Setup kiosk profile
|
||||
cat > /srv/kiosk/.profile << 'EOF'
|
||||
#!/bin/sh
|
||||
if [ -z "$DISPLAY" ] && [ "$(tty)" = "/dev/tty1" ]; then
|
||||
exec startx >/dev/null 2>&1
|
||||
fi
|
||||
EOF
|
||||
|
||||
xset -dpms
|
||||
xset s off
|
||||
xset s noblank
|
||||
# Setup xinitrc
|
||||
cat > /srv/kiosk/.xinitrc << 'EOF'
|
||||
#!/bin/sh
|
||||
export DISPLAY=:0
|
||||
(sleep 2 && xset -dpms s off s noblank) &
|
||||
|
||||
mkdir -p /root/.config/chromium/Default
|
||||
sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' /root/.config/chromium/Default/Preferences 2>/dev/null || true
|
||||
sed -i 's/"exit_type":"Crashed"/"exit_type":"Normal"/' /root/.config/chromium/Default/Preferences 2>/dev/null || true
|
||||
while ! ping -c 1 -W 1 google.com > /dev/null 2>&1; do
|
||||
sleep 2
|
||||
done
|
||||
|
||||
while true; do
|
||||
/usr/bin/chromium-browser $KIOSK_URL --window-size=1920,1080 --window-position=0,0 --start-fullscreen --kiosk --incognito --noerrdialogs --disable-translate --no-first-run --fast --fast-start --disable-infobars --disable-features=TranslateUI --enable-features=OverlayScrollbars --disk-cache-dir=/dev/null --overscroll-history-navigation=0 --disable-pinch --no-sandbox --disable-dev-shm-usage --disable-sync --disable-signin-frame-redirect
|
||||
echo "Browser crashed, restarting in 5 seconds..."
|
||||
chromium \
|
||||
--kiosk \
|
||||
--no-sandbox \
|
||||
--disable-dev-shm-usage \
|
||||
--force-device-scale-factor=1 \
|
||||
--window-size=3840,2160 \
|
||||
--disable-features=TranslateUI \
|
||||
--disable-component-update \
|
||||
--no-first-run \
|
||||
--num-raster-threads=4 \
|
||||
--use-gl=egl \
|
||||
--disable-infobars \
|
||||
--disable-session-crashed-bubble \
|
||||
--disable-breakpad \
|
||||
--disable-sync \
|
||||
--disable-translate \
|
||||
--metrics-recording-only \
|
||||
--disable-default-apps \
|
||||
--mute-audio \
|
||||
--no-default-browser-check \
|
||||
${KIOSK_URL:-https://benewahauto.com}
|
||||
sleep 5
|
||||
done
|
||||
EOF
|
||||
|
||||
chmod +x /root/.xinitrc
|
||||
chown -R kiosk:kiosk /srv/kiosk
|
||||
chmod +x /srv/kiosk/.profile /srv/kiosk/.xinitrc
|
||||
|
||||
echo "Setting up auto-start X11 on boot"
|
||||
cat > /root/.profile << 'EOF'
|
||||
if [ -z "$DISPLAY" ] && [ "$XDG_VTNR" = 1 ]; then
|
||||
exec startx
|
||||
fi
|
||||
EOF
|
||||
|
||||
if ! grep -q "getty -n -l /bin/sh" /etc/inittab; then
|
||||
sed -i 's/^tty1:/#&/' /etc/inittab
|
||||
echo 'tty1::respawn:/sbin/getty -n -l /bin/sh 38400 tty1' >> /etc/inittab
|
||||
fi
|
||||
|
||||
echo "kiosk" > /etc/hostname
|
||||
|
||||
echo ""
|
||||
echo "Kiosk setup complete!"
|
||||
echo "URL configured: $KIOSK_URL"
|
||||
echo "Reboot to start kiosk mode: reboot"
|
||||
# Configure autologin
|
||||
sed -i 's/^tty1::respawn:.*$/tty1::respawn:\/bin\/login -f kiosk/' /etc/inittab
|
||||
|
||||
echo "Setup complete! Rebooting..."
|
||||
reboot
|
||||
|
||||
Reference in New Issue
Block a user