Files
ubuntu-based-kiosk/Readme.md
T
2025-11-23 16:57:39 -05:00

239 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
### UBK (Ubuntu Based Kiosk) — Installer README
Built with Claude Sonnet 4/.5 AI assistance
License: GPL v3 - Keep derivatives open sour
Repository: https://github.com/outis1one/ubk/
## TARGET SYSTEMS:
- Ubuntu 24.04+ Server (minimal install recommended)
- Raspberry Pi 4+ (with or without touchscreen) -- untested
- Laptops, desktops, all-in-ones, 2-in-1s
- Touch support optional (works with keyboard/mouse)
# SECURITY NOTICE:
This is NOT suitable for secure locations or public kiosks.
Do NOT use as a replacement for hardened kiosk solutions.
Use entirely at your own risk.
# PURPOSE:
Home/office kiosk for reusing old hardware, displaying:
- Self-hosted services (Immich, MagicMirror2, Home Assistant)
- Web dashboards, digital signage
- Photo slideshows, family calendars
- Any web-based content
## Overview
UBK is a full kiosk environment built on Ubuntu, designed for lockeddown, singlepurpose deployments. This installer (`install_kiosk_0.9.7.sh`) automates setup of the entire system, including:
* Electron-based kiosk application
* Autologin kiosk user environment
* System lockdown (no shell access, no switching TTYs)
* Display configuration and Openbox session
* Audio playback via Squeezelite
* Printing support via CUPS
* Optional networking, WiFi, and hostname configuration
* Systemd services for all kiosk components
The script is intended for fresh installations and can fully provision a kiosk from a clean Ubuntu machine.
## Functionality
- single or multiple sites, with auto rotation, and manual sites not in rotation
- ability to pause a rotational site, auto return to home popup for manual sites
- password protection
- Squeezelite player
- Cups printing
- touch screen controls (two finger swiping between sites, toggable on screen keyboard and pause site)
## Quick Install
```
install ubuntu 24.04 server, config wifi if no ethernet is available and enable ssh
sudo chmod +x install_kiosk_0.9.7.sh
sudo ./install_kiosk_0.9.7.sh
```
The installer will prompt for required configuration values during setup.
---
## What This Script Installs
### Core Components
* **Electron runtime and build toolchain**
* **Node.js / npm** and required modules
* **Chromium** and supporting libraries
* **ChromeDriver** (for Electron builds or testing)
* **ffmpeg** for multimedia support
* **unclutter** to hide the cursor
* **Openbox** for lightweight X session
* **x11-xserver-utils**
### Audio
* **Squeezelite** for audio playback
* ALSA utilities for device enumeration
### Printing
* **CUPS** printing system
* Printer permissions and service configuration
### System Services & Environment
* Kiosk autostart under Openbox
* Systemd units for:
* Kiosk application
* Squeezelite
* Keyboard IPC handler
* Autostart helpers
### Security & Lockdown
* Autologin kiosk user
* Disabled TTY switching
* Suppressed right-click behavior
* Screen blanking disabled
* Config permission hardening
---
## Licensing — ThirdParty Software Attribution
This project bundles or installs several upstream open-source components. Their licenses apply to their respective software. UBK itself does **not** modify these licenses.
Below are SPDX-style license identifiers and project attribution references.
### Electron
* **License:** MIT
* **Project:** [https://github.com/electron/electron](https://github.com/electron/electron)
* **SPDX:** `MIT`
### Chromium
* **License:** BSD-3-Clause, plus multiple third-party components
* **Project:** [https://www.chromium.org/](https://www.chromium.org/)
* **SPDX:** `BSD-3-Clause`
### Node.js
* **License:** MIT
* **Project:** [https://github.com/nodejs/node](https://github.com/nodejs/node)
* **SPDX:** `MIT`
### npm Packages
Most npm modules used by the kiosk app are MIT, Apache-2.0, or similar permissive licenses. Check your apps `package.json` for exact listings.
### CUPS
* **License:** Apache-2.0 (CUPS 2.2+) with GPL2/LGPL2 exceptions on older versions
* **Project:** [https://openprinting.github.io/cups/](https://openprinting.github.io/cups/)
* **SPDX:** `Apache-2.0`
### Squeezelite
* **License:** GPL-3.0-or-later
* **Project:** [https://github.com/ralph-irving/squeezelite](https://github.com/ralph-irving/squeezelite)
* **SPDX:** `GPL-3.0-or-later`
### ffmpeg
* **License:** LGPL-2.1-or-later / GPL-2.0-or-later depending on build
* **Project:** [https://ffmpeg.org/](https://ffmpeg.org/)
* **SPDX:** `LGPL-2.1-or-later` (typical Ubuntu build)
### unclutter
* **License:** Public Domain / MIT (depending on fork)
* **Project:** [https://github.com/Airblader/unclutter-xfixes](https://github.com/Airblader/unclutter-xfixes)
* **SPDX:** `MIT`
---
## Maintenance Guide
### Updating the Electron Kiosk App
1. Switch to the kiosk user or app directory.
2. Pull new code.
3. Rebuild the Electron application.
4. Restart kiosk systemd service:
```
sudo systemctl restart ubk-kiosk.service
```
### Checking Service Status
```
systemctl status ubk-kiosk.service
systemctl status squeezelite.service
systemctl status display-manager
```
### Logs
Logs are stored under:
```
/var/log/ubk/
```
---
## Troubleshooting
### Kiosk app doesnt start
* Check Openbox autostart files.
* Verify `electron` binary is installed.
* View systemd logs:
```
sudo journalctl -u ubk-kiosk.service -f
```
### No audio output
* Use ALSA utilities to list devices.
* Confirm squeezelite is running.
### Printer not detected
* Ensure CUPS is active:
```
sudo systemctl status cups
```
* Verify permissions on `/etc/cups/printers.conf`.
---
## Security Notes
* Autologin is intentionally enabled.
* TTY switching via Ctrl+Alt+Fx is disabled.
* Shell access is restricted for the kiosk user.
* System updates should be applied manually or through automation you trust.
---
## Disclaimer
UBK aggregates open-source software governed by their respective licenses. The authors of UBK make no warranty regarding modifications made by downstream integrators.
---
## Project Status
This installer is part of an evolving kiosk system. Future versions may include intercom functionality, a web base gui configuration screen, all in one iso.
---
# End of README