Repo hygiene: - Remove dead scripts (.wait-for-display, .display-keepalive, .keep-screen-alive) - Remove stale backup/scratch (install.sh.bak, New.txt, stale .pyc) - Stop tracking machine-specific/generated state (config/app_config.json, playlists/server_playlist.json, src/player_auth.json, generated launchers) - Prune duplicate wheel versions (one per package) - Reorganize working_files -> dev/, dev/tests/, documentation/dev-notes/, scripts/ - Extend .gitignore; fix no-op rules in repo/.gitignore Offline install (install.sh): - Non-fatal system-dep step; per-package apt retry; .deb bundle install - Skip pip self-upgrade offline; guard online fallbacks behind connectivity probe - Dependency-free fetch_url (curl/wget/urllib); --no-reboot flag - Fix corrupted literal backslash-bang escapes (shebangs, test -f, banner) - Idempotent cron install (no more stacked @reboot lines) Autostart / watchdog: - start.sh: single-instance flock lock (.player_watchdog.lock) acquired only after a display is confirmed, preventing parallel watchdogs - Set XDG_RUNTIME_DIR when missing; exit early if headless - run_player.sh: activate .venv; stop_player.sh: clear lock file
3.8 KiB
Offline Installation Guide
This guide explains how to set up and use offline installation for the Kiwy Signage Player.
Overview
The offline installation system allows you to install the signage player on devices without internet access by pre-downloading all necessary packages.
Directory Structure
Kiwy-Signage/
├── repo/ # Offline packages repository
│ ├── python-wheels/ # Python packages (.whl files)
│ ├── system-packages/ # System package information
│ │ ├── apt-packages.txt # List of required apt packages
│ │ └── debs/ # Downloaded .deb files (optional)
│ └── README.md
├── scripts/
│ ├── download_offline_packages.sh # Download Python packages
│ └── download_deb_packages.sh # Download system .deb packages
└── install.sh # Smart installer (online/offline)
Setup for Offline Installation
Step 1: Prepare on a Connected System
On a system with internet access (preferably Raspberry Pi OS):
# Clone the repository
git clone <repository-url>
cd Kiwy-Signage
# Download Python packages
bash scripts/download_offline_packages.sh
# (Optional) Download system .deb packages
bash scripts/download_deb_packages.sh
This will populate the repo/ folder with all necessary packages.
Step 2: Transfer to Offline System
Copy the entire Kiwy-Signage directory to your offline system:
# Using USB drive
cp -r Kiwy-Signage /media/usb/
# Or create a tarball
tar -czf kiwy-signage-offline.tar.gz Kiwy-Signage/
# On target system, extract:
tar -xzf kiwy-signage-offline.tar.gz
cd Kiwy-Signage
Step 3: Install on Offline System
The installer automatically detects offline packages:
# Automatic detection
bash install.sh
# Or explicitly specify offline mode
bash install.sh --offline
Package Information
Python Packages (requirements.txt)
- kivy==2.1.0 - UI framework
- requests==2.32.4 - HTTP library
- bcrypt==4.2.1 - Password hashing
- aiohttp==3.9.1 - Async HTTP client
- asyncio==3.4.3 - Async I/O framework
System Packages (APT)
See repo/system-packages/apt-packages.txt for complete list:
- Python development tools
- SDL2 libraries (video/audio)
- FFmpeg and codecs
- GStreamer plugins
- Build dependencies
Online Installation
If you have internet access, simply run:
bash install.sh
The installer will automatically download and install all packages from the internet.
Updating Offline Packages
To update the offline package cache:
# On a connected system
bash scripts/download_offline_packages.sh
This will download the latest versions of all packages.
Troubleshooting
Problem: Missing Dependencies
If installation fails due to missing dependencies:
# Download .deb packages with dependencies
bash scripts/download_deb_packages.sh
# Install with dependency resolution
sudo apt install -f
Problem: Wheel Not Found
If a specific Python package wheel is not found:
# Download specific package
pip3 download <package-name> -d repo/python-wheels/
Problem: Architecture Mismatch
Ensure packages are downloaded on the same architecture (ARM for Raspberry Pi):
# Verify architecture
uname -m # Should show: armv7l or aarch64
# Force ARM downloads
pip3 download -r requirements.txt -d repo/python-wheels/ --platform linux_armv7l
Storage Requirements
- Python wheels: ~50-100 MB
- System .deb packages: ~200-500 MB (if downloaded)
- Total: ~250-600 MB
Notes
- The
repo/folder is designed to be portable - Downloaded packages are excluded from git (see
.gitignore) - The installer supports both online and offline modes seamlessly
- System packages list is maintained in
repo/system-packages/apt-packages.txt