Files
LEDMatrix/scripts/install
ChuckandClaude Opus 5.5 fb90349ae3 refactor(install): generate the web sudoers rules in one place
/etc/sudoers.d/ledmatrix_web was written by two copies of the same
allow-list: a heredoc in first_time_install.sh Step 10 and a block of
echo lines in scripts/install/configure_web_sudo.sh. They drifted before
(safe_pip_install.sh was granted by one only), and a test existed just
to catch that.

Both now call web_sudoers_rules() from the new
scripts/install/lib_sudoers.sh and keep their own validate (visudo -c),
install and confirm flows.

- first_time_install.sh output is byte-for-byte unchanged, so a device
  re-running the installer gets "already up to date". If the library is
  missing, Step 10 keeps the installed file and carries on, the same way
  it handles rules that fail visudo (an empty file would pass visudo).
- configure_web_sudo.sh now writes the installer's layout: same 18 rules,
  different comments and order. It still leaves out reboot, poweroff and
  journalctl when they are missing; the library does that for both.

The drift test now pins the generator's grants, checks that neither
installer writes rules of its own, and runs each installer's call line
to check the argument order. Tests that read the rule text now read the
library.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 17:07:48 -04:00
..

Installation Scripts

This directory contains scripts for installing and configuring the LEDMatrix system.

Scripts

  • one-shot-install.sh - Single-command installer; clones the repo, checks prerequisites, then runs first_time_install.sh. Invoked via curl ... | bash from the project root README.
  • install_service.sh - Installs, enables and starts the display service (ledmatrix.service), the web interface service (ledmatrix-web.service) and the update-verify units (systemd)
  • install_web_service.sh - Installs only the web interface service and the update-verify units (systemd)
  • install_wifi_monitor.sh - Installs the WiFi monitor daemon service
  • setup_cache.sh - Sets up persistent cache directory with proper permissions
  • configure_web_sudo.sh - Configures passwordless sudo access for web interface actions
  • configure_wifi_permissions.sh - Grants the web interface's user (the user who runs the script, i.e. the one you installed LEDMatrix as; there is no ledmatrix system user) the passwordless nmcli and related WiFi permissions the web interface needs

Usage

These scripts are typically called by first_time_install.sh in the project root (which itself is invoked by one-shot-install.sh), but can also be run individually if needed.

Note: Most installation scripts require sudo privileges to install systemd services and configure system settings.