feat: add custom Debian ISO build for automated silent installation
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
# SeniorNet Kiosk — Custom Debian ISO
|
||||
|
||||
Build a bootable ISO that installs and auto-configures the kiosk app on any machine.
|
||||
|
||||
## On Your Workstation (192.168.88.41)
|
||||
|
||||
### 1. Clone the repo (if not already done)
|
||||
```bash
|
||||
git clone https://gitea.jgitta.com/jgitta/senior-kiosk.git
|
||||
cd senior-kiosk
|
||||
```
|
||||
|
||||
### 2. Build the ISO
|
||||
```bash
|
||||
sudo ./build-iso.sh
|
||||
```
|
||||
|
||||
This creates: `iso-output/seniornet-kiosk.iso` (~1-2 GB, takes 5-10 min)
|
||||
|
||||
## Testing on Production Kiosk (192.168.88.44)
|
||||
|
||||
### 1. Write ISO to bootable USB
|
||||
On your workstation with USB connected:
|
||||
```bash
|
||||
# List devices to find your USB
|
||||
lsblk
|
||||
|
||||
# Write ISO (replace sdX with your USB device, e.g., sdb)
|
||||
sudo dd if=iso-output/seniornet-kiosk.iso of=/dev/sdX bs=4M status=progress && sync
|
||||
```
|
||||
|
||||
### 2. Boot from USB
|
||||
- Plug USB into production kiosk
|
||||
- Power on and select USB boot (usually F12, ESC, or DEL during startup)
|
||||
- Installation starts silently (no prompts)
|
||||
|
||||
### 3. Wait for installation
|
||||
- Silent Debian installation: ~5-10 minutes
|
||||
- Clones repo, installs dependencies
|
||||
- System reboots automatically
|
||||
|
||||
### 4. Verify kiosk is running
|
||||
After reboot, you should see the kiosk home screen with buttons.
|
||||
|
||||
To check status via SSH:
|
||||
```bash
|
||||
ssh jgitta@192.168.88.44
|
||||
journalctl -u kiosk.service -f
|
||||
```
|
||||
|
||||
## What the ISO Contains
|
||||
|
||||
- **Debian 13 Trixie** (minimal base)
|
||||
- **Chromium** (system package, not snap)
|
||||
- **Python 3, PyQt5, websocket-client**
|
||||
- **Openbox** (window manager)
|
||||
- **Xvfb** (virtual display)
|
||||
- **Your kiosk app** (cloned from Gitea at install time)
|
||||
- **Auto-boot to kiosk mode** (no desktop login)
|
||||
|
||||
## Files
|
||||
|
||||
- `preseed.cfg` — Debian unattended installer config
|
||||
- `install-kiosk.sh` — Post-install script (runs after Debian install)
|
||||
- `build-iso.sh` — Build script (creates the ISO)
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
**If installation hangs:**
|
||||
- Check network connectivity during install
|
||||
- Gitea must be reachable (or install will use git clone fallback)
|
||||
|
||||
**If kiosk doesn't start:**
|
||||
```bash
|
||||
ssh jgitta@192.168.88.44
|
||||
journalctl -u kiosk.service -20 # View last 20 lines of logs
|
||||
sudo systemctl restart kiosk.service
|
||||
```
|
||||
|
||||
**To access terminal:**
|
||||
- Press Alt+F2 during boot
|
||||
- Log in as `root` (password: `kiosk`)
|
||||
- Run: `/usr/local/bin/kiosk-restart` to restart
|
||||
|
||||
## Customization
|
||||
|
||||
To modify the ISO:
|
||||
1. Edit `preseed.cfg` (installer config)
|
||||
2. Edit `install-kiosk.sh` (post-install)
|
||||
3. Edit `build-iso.sh` (ISO build options)
|
||||
4. Rebuild: `sudo ./build-iso.sh`
|
||||
|
||||
## Distribution
|
||||
|
||||
Once tested, you can:
|
||||
- Copy `seniornet-kiosk.iso` to USB drives for deployment
|
||||
- Host on web server for download
|
||||
- Share with end users
|
||||
- Any machine can boot and auto-install (no Proxmox needed)
|
||||
Reference in New Issue
Block a user