124 lines
4.4 KiB
Bash
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"
|