#!/usr/bin/env bash # Install rtsp-streamer as a boot-to-wall kiosk. Run as root on the target # (Raspberry Pi 4 or any Linux with sway + mpv). # # sudo ./deploy/install.sh [kiosk-user] # # Steps performed: # * install the rtsp-streamer binary to /usr/local/bin # * install the kiosk sway config to /etc/rtsp-streamer/sway/config # * create the kiosk user (if missing) and add it to the video/render/input seats # * enable tty1 autologin for that user # * append the sway launcher to the user's ~/.bash_profile # # It does NOT install sway/mpv — do that with your distro's package manager: # Debian/RPi OS: apt install sway mpv foot # Arch: pacman -S sway mpv foot set -euo pipefail KIOSK_USER="${1:-kiosk}" REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" BIN_SRC="${REPO_DIR}/bin/rtsp-streamer" # The configurator is a separate, optional binary (built with Bun; see # tui/README.md). Accept either the host build or the arm64 cross-build. TUI_SRC="${REPO_DIR}/bin/rtsp-streamer-tui" [ -x "$TUI_SRC" ] || TUI_SRC="${REPO_DIR}/bin/rtsp-streamer-tui-arm64" if [ "$(id -u)" -ne 0 ]; then echo "error: run as root (sudo)" >&2 exit 1 fi if [ ! -x "$BIN_SRC" ]; then echo "error: ${BIN_SRC} not found. Build it first: make build (native) or make pi (arm64)." >&2 exit 1 fi echo ">> installing binary to /usr/local/bin/rtsp-streamer" install -m 0755 "$BIN_SRC" /usr/local/bin/rtsp-streamer # Installed under the un-suffixed name, which is what `rtsp-streamer tui` looks # for next to itself. if [ -x "$TUI_SRC" ]; then echo ">> installing configurator to /usr/local/bin/rtsp-streamer-tui" install -m 0755 "$TUI_SRC" /usr/local/bin/rtsp-streamer-tui else echo ">> no configurator binary found (build it with 'make tui'); " echo " 'rtsp-streamer tui --legacy' will still work." fi echo ">> installing sway kiosk config to /etc/rtsp-streamer/sway/config" install -d /etc/rtsp-streamer/sway install -m 0644 "${REPO_DIR}/deploy/sway/config" /etc/rtsp-streamer/sway/config if ! id "$KIOSK_USER" >/dev/null 2>&1; then echo ">> creating user ${KIOSK_USER}" useradd --create-home --shell /bin/bash "$KIOSK_USER" fi echo ">> adding ${KIOSK_USER} to video/render/input groups" for grp in video render input seat; do getent group "$grp" >/dev/null 2>&1 && usermod -aG "$grp" "$KIOSK_USER" || true done echo ">> enabling tty1 autologin for ${KIOSK_USER}" install -d /etc/systemd/system/getty@tty1.service.d sed "s/kiosk/${KIOSK_USER}/" "${REPO_DIR}/deploy/systemd/getty@tty1.service.d/autologin.conf" \ > /etc/systemd/system/getty@tty1.service.d/autologin.conf systemctl daemon-reload HOME_DIR="$(getent passwd "$KIOSK_USER" | cut -d: -f6)" PROFILE="${HOME_DIR}/.bash_profile" MARKER="# >>> rtsp-streamer kiosk launcher >>>" if ! grep -qF "$MARKER" "$PROFILE" 2>/dev/null; then echo ">> appending sway launcher to ${PROFILE}" { echo "" echo "$MARKER" cat "${REPO_DIR}/deploy/profile-snippet.sh" echo "# <<< rtsp-streamer kiosk launcher <<<" } >> "$PROFILE" chown "$KIOSK_USER": "$PROFILE" else echo ">> launcher already present in ${PROFILE}, leaving it" fi cat <