posimai-root/posimai-dev/setup-kiosk.sh

124 lines
4.4 KiB
Bash

#!/bin/bash
# posimai-station kiosk setup
# Usage: bash setup-kiosk.sh
# What this does:
# 1. Installs posimai-dev as a systemd service (auto-start on boot)
# 2. Installs openbox (lightweight window manager, replaces GNOME)
# 3. Sets up auto-login and Chromium kiosk pointing to station.html
# 4. Removes GNOME (saves ~1.5GB disk + frees RAM)
#
# SAFE TO RUN: shows a summary and asks for confirmation before each step.
set -e
STATION_URL="https://localhost:3333/station"
SERVICE_SRC="$(dirname "$0")/posimai-dev.service"
WHOAMI=$(whoami)
echo ""
echo "=== posimai-station kiosk setup ==="
echo "Current user : $WHOAMI"
echo "Station URL : $STATION_URL"
echo ""
# ── Step 1: Detect username and home ──────────────────────────
# The service file was written with User=ubuntu-pc, update if different
if [ "$WHOAMI" != "ubuntu-pc" ]; then
echo "[INFO] Updating service file user from 'ubuntu-pc' to '$WHOAMI'"
sed -i "s/User=ubuntu-pc/User=$WHOAMI/g" "$SERVICE_SRC"
sed -i "s|/home/ubuntu-pc/|/home/$WHOAMI/|g" "$SERVICE_SRC"
fi
# ── Step 2: Install posimai-dev as systemd service ────────────
echo "--- Step 1: systemd service for posimai-dev ---"
read -p "Install / update posimai-dev.service? [Y/n] " ans
if [[ "$ans" != "n" && "$ans" != "N" ]]; then
sudo cp "$SERVICE_SRC" /etc/systemd/system/posimai-dev.service
sudo systemctl daemon-reload
sudo systemctl enable posimai-dev
sudo systemctl restart posimai-dev
sleep 2
if curl -sf http://localhost:3000/api/health > /dev/null; then
echo " [OK] posimai-dev is running"
else
echo " [WARN] posimai-dev did not respond. Check: sudo journalctl -u posimai-dev -n 20"
fi
fi
# ── Step 3: Install Openbox + Chromium ────────────────────────
echo ""
echo "--- Step 2: Install openbox + chromium ---"
read -p "Install openbox and chromium-browser? [Y/n] " ans
if [[ "$ans" != "n" && "$ans" != "N" ]]; then
sudo apt-get update -qq
sudo apt-get install -y openbox chromium-browser xdotool unclutter
echo " [OK] installed"
fi
# ── Step 4: Kiosk autostart ───────────────────────────────────
echo ""
echo "--- Step 3: Configure kiosk autostart ---"
AUTOSTART_DIR="$HOME/.config/openbox"
mkdir -p "$AUTOSTART_DIR"
cat > "$AUTOSTART_DIR/autostart" << EOF
# posimai-station kiosk
# Wait for posimai-dev to be ready
sleep 3
# Hide cursor after 1 second of inactivity
unclutter -idle 1 -root &
# Launch Chromium in kiosk mode
chromium-browser \
--kiosk \
--no-first-run \
--disable-infobars \
--disable-session-crashed-bubble \
--disable-translate \
--noerrdialogs \
--ignore-certificate-errors \
--app=$STATION_URL &
EOF
echo " [OK] openbox autostart written to $AUTOSTART_DIR/autostart"
# ── Step 5: LightDM autologin ─────────────────────────────────
echo ""
echo "--- Step 4: Configure auto-login (LightDM) ---"
read -p "Set up autologin for user '$WHOAMI' with openbox session? [Y/n] " ans
if [[ "$ans" != "n" && "$ans" != "N" ]]; then
LIGHTDM_CONF="/etc/lightdm/lightdm.conf.d/50-kiosk.conf"
sudo mkdir -p /etc/lightdm/lightdm.conf.d
sudo tee "$LIGHTDM_CONF" > /dev/null << EOF
[Seat:*]
autologin-user=$WHOAMI
autologin-user-timeout=0
user-session=openbox
EOF
echo " [OK] LightDM autologin configured"
fi
# ── Step 6: Remove GNOME (optional, last step) ────────────────
echo ""
echo "--- Step 5: Remove GNOME Desktop ---"
echo " This frees ~1.5GB disk and ~600MB RAM on boot."
echo " The display will show station.html only (no desktop UI)."
echo " WARNING: This is hard to undo without reinstalling Ubuntu."
read -p "Remove GNOME now? [y/N] " ans
if [[ "$ans" == "y" || "$ans" == "Y" ]]; then
sudo apt-get remove --purge -y ubuntu-desktop gnome-shell gnome-session \
gnome-panel gnome-control-center nautilus
sudo apt-get autoremove -y
echo " [OK] GNOME removed"
else
echo " [SKIP] GNOME not removed. Run this script again when ready."
fi
echo ""
echo "=== Setup complete ==="
echo "Reboot to activate kiosk mode: sudo reboot"
echo ""
echo "Useful commands:"
echo " sudo systemctl status posimai-dev # check server"
echo " sudo journalctl -u posimai-dev -f # server logs"
echo " sudo systemctl restart posimai-dev # restart server"