Implement a 'one-liner' installation script for the MPVJ (Modern PocketVJ) ecosystem on Raspbian x64 Lite. - Interactive whiptail UI for Hostname, SSID, and WiFi Password configuration. - Automated system hardening: hostapd, dnsmasq, avahi-daemon, and Node.js. - Memory safety for Pi 3B: temporary 1GB swap and NPM concurrency limits. - Networking failsafe: static AP on wlan0 and DHCP on eth0 with mDNS support. - OpenSpec artifacts (Proposal, Design, Spec, Tasks) included.
1.9 KiB
1.9 KiB
Headless Installer Spec
Interrogation Phase
Hostname Selection
- GIVEN the script is running
- WHEN prompted for a hostname
- THEN the system SHALL validate that the name contains only alphanumeric characters and hyphens
- AND it SHALL default to
mpvjif left blank
WiFi Configuration
- GIVEN the interrogation phase
- WHEN the user enters a WiFi password
- THEN the script SHALL verify it is at least 8 characters long (WPA2 requirement)
- AND it SHALL loop back to the prompt if validation fails
- AND the script SHALL prompt for a 2-letter ISO Country Code (e.g., US, GB) to unblock the WiFi hardware.
Installation Phase
Pre-Flight Checks
- GIVEN the start of the installation
- WHEN checking system resources
- THEN the script SHALL verify that at least 2GB of disk space is available
- AND it SHALL abort with a clear error message if space is insufficient.
System Updates
- GIVEN the start of the script
- WHEN updating packages
- THEN it SHALL use a progress bar (
whiptail --gauge) to show status - AND it SHALL run in non-interactive mode (
-y)
Repository Cloning
- GIVEN a valid <REPO_URL> argument
- WHEN cloning the repository
- THEN it SHALL clone into
/home/pi/mpvj - AND it SHALL ensure the
piuser owns the directory
Summary & Finalization
Information Display
- GIVEN the end of the installation
- WHEN all configurations are staged
- THEN the script SHALL display a "Don't Miss It" summary box containing:
- Hostname (
.localaddress) - Static IP (
192.168.4.1) - WiFi SSID
- WiFi Password
- Hostname (
- AND it SHALL require the user to press "OK" to proceed to the reboot prompt
Reboot Confirmation
- GIVEN the summary has been acknowledged
- WHEN the reboot prompt appears
- THEN the system SHALL ONLY reboot if the user selects "Yes"