mirror of
https://github.com/ChuckBuilds/LEDMatrix.git
synced 2026-10-04 06:15:09 +00:00
Updates that move HEAD now install changed systemd units through a root-owned helper (/usr/local/sbin/ledmatrix-refresh-units, two literal sudo lines), with a backup restored on rollback; a refresh that fails part-way puts the old units back. Devices without the new sudo rule keep updating and are told to re-run the installer once. The one-shot installer now checks out the newest vX.Y.Z release (LEDMATRIX_CHANNEL=beta keeps main) and never moves an existing checkout backwards. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
53 lines
2.6 KiB
Markdown
53 lines
2.6 KiB
Markdown
# 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 out the newest release (or `main` with
|
|
`LEDMATRIX_CHANNEL=beta`), checks prerequisites, then runs
|
|
`first_time_install.sh`. Invoked via `curl ... | bash` from the project
|
|
root README. Re-running it never moves a checkout to an older version.
|
|
- **`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), and
|
|
installs `/usr/local/sbin/ledmatrix-refresh-units`
|
|
- **`ledmatrix_refresh_units.py`** - Not run from here: `install_service.sh`
|
|
installs a root-owned copy as `/usr/local/sbin/ledmatrix-refresh-units`,
|
|
which updates run through sudo to install changed units (and the
|
|
automatic update's rollback, with `--restore`, to put them back)
|
|
- **`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
|
|
- **`install_dns_fix.sh`** - Optional. Installs `ledmatrix-dns-fix.service`,
|
|
which adds `options single-request` to the resolver when API calls time
|
|
out (see `systemd/README.md`)
|
|
- **`install_mqtt_bridge.sh`** - Optional. Installs the Home Assistant MQTT
|
|
bridge service (see `integrations/mqtt_bridge/README.md`)
|
|
|
|
Libraries (sourced, not run):
|
|
|
|
- **`lib_sudoers.sh`** - The web interface's sudo allow-list
|
|
(`/etc/sudoers.d/ledmatrix_web`), shared by `first_time_install.sh` and
|
|
`configure_web_sudo.sh`
|
|
- **`lib_systemd_render.sh`** - `sed_escape_replacement`, used by every
|
|
script that renders a unit from `systemd/*.service`
|
|
- **`lib_lowmem.sh`** - Build-job sizing and temporary swap for the C++
|
|
build on low-memory Pis (`first_time_install.sh` Step 6)
|
|
|
|
## 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.
|
|
|