Add comprehensive Raspberry Pi installation instructions
- Step-by-step guide for Pi 4/5 deployment - pyenv setup for Python 3.12 (Pi OS ships with 3.13) - jpegio ARM build patch (sed one-liner for -m64 flag) - Full verification steps 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
115
INSTALL.md
115
INSTALL.md
@@ -435,24 +435,85 @@ pip install stegasoo[all]
|
|||||||
|
|
||||||
### Raspberry Pi
|
### Raspberry Pi
|
||||||
|
|
||||||
Stegasoo works on Raspberry Pi 4 (2GB+ RAM recommended):
|
Stegasoo works on Raspberry Pi 4/5 (4GB+ RAM recommended for Web UI).
|
||||||
|
|
||||||
|
#### Step 1: Install System Dependencies
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# System dependencies
|
sudo apt-get update
|
||||||
sudo apt-get install python3-dev libzbar0 libjpeg-dev
|
sudo apt-get install -y \
|
||||||
|
build-essential \
|
||||||
# Create venv with Python 3.12 (if available, or 3.11)
|
git \
|
||||||
python3 -m venv venv
|
libssl-dev \
|
||||||
source venv/bin/activate
|
zlib1g-dev \
|
||||||
|
libbz2-dev \
|
||||||
# Install (may take a while to compile)
|
libreadline-dev \
|
||||||
pip install stegasoo[cli]
|
libsqlite3-dev \
|
||||||
|
libncursesw5-dev \
|
||||||
# For web/api, ensure enough RAM
|
xz-utils \
|
||||||
pip install stegasoo[web] # Needs ~768MB free
|
tk-dev \
|
||||||
|
libxml2-dev \
|
||||||
|
libxmlsec1-dev \
|
||||||
|
libffi-dev \
|
||||||
|
liblzma-dev \
|
||||||
|
libzbar0 \
|
||||||
|
libjpeg-dev
|
||||||
```
|
```
|
||||||
|
|
||||||
**Running the Web UI on Pi:**
|
#### Step 2: Install Python 3.12 via pyenv
|
||||||
|
|
||||||
|
Raspberry Pi OS ships with Python 3.13, which is **not compatible** with jpegio. Install Python 3.12:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Install pyenv
|
||||||
|
curl https://pyenv.run | bash
|
||||||
|
|
||||||
|
# Add to ~/.bashrc
|
||||||
|
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
|
||||||
|
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
|
||||||
|
echo 'eval "$(pyenv init - bash)"' >> ~/.bashrc
|
||||||
|
source ~/.bashrc
|
||||||
|
|
||||||
|
# Install Python 3.12 (takes ~10 minutes on Pi 5)
|
||||||
|
pyenv install 3.12
|
||||||
|
pyenv global 3.12
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Step 3: Build jpegio for ARM
|
||||||
|
|
||||||
|
The upstream jpegio has x86-specific build flags. Patch and build from source:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Clone jpegio
|
||||||
|
git clone https://github.com/dwgoon/jpegio.git
|
||||||
|
cd jpegio
|
||||||
|
|
||||||
|
# Patch for ARM (removes x86-specific -m64 flag)
|
||||||
|
sed -i "s/cargs.append('-m64')/pass # ARM fix/" setup.py
|
||||||
|
|
||||||
|
# Build and install
|
||||||
|
pip install .
|
||||||
|
cd ..
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Step 4: Install Stegasoo
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Clone Stegasoo
|
||||||
|
git clone https://github.com/adlee-was-taken/stegasoo.git
|
||||||
|
cd stegasoo
|
||||||
|
|
||||||
|
# Create venv with Python 3.12
|
||||||
|
~/.pyenv/versions/3.12.*/bin/python -m venv venv
|
||||||
|
source venv/bin/activate
|
||||||
|
|
||||||
|
# Install (jpegio already installed, skip it)
|
||||||
|
pip install -e ".[web]" --no-deps
|
||||||
|
pip install argon2-cffi cryptography pillow flask gunicorn scipy numpy pyzbar qrcode
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Step 5: Run the Web UI
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd frontends/web
|
cd frontends/web
|
||||||
|
|
||||||
@@ -465,12 +526,30 @@ export STEGASOO_HOSTNAME=raspberrypi.local
|
|||||||
|
|
||||||
# Start server
|
# Start server
|
||||||
python app.py
|
python app.py
|
||||||
|
# Access at http://<pi-ip>:5000
|
||||||
```
|
```
|
||||||
|
|
||||||
**Notes:**
|
#### Verify Installation
|
||||||
- Argon2 operations will be slower on Pi due to memory-hardness
|
|
||||||
- First run will prompt you to create an admin account
|
```bash
|
||||||
- HTTPS generates a self-signed certificate (browsers will warn)
|
python -c "
|
||||||
|
import stegasoo
|
||||||
|
from stegasoo.dct_steganography import has_jpegio_support
|
||||||
|
print(f'Stegasoo: {stegasoo.__version__}')
|
||||||
|
print(f'Argon2: {stegasoo.has_argon2()}')
|
||||||
|
print(f'DCT: {stegasoo.has_dct_support()}')
|
||||||
|
print(f'jpegio: {has_jpegio_support()}')
|
||||||
|
"
|
||||||
|
# Expected: All True
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Notes
|
||||||
|
|
||||||
|
- **RAM**: Web UI needs ~768MB free for Argon2 + scipy operations
|
||||||
|
- **Performance**: Argon2 operations take 3-5 seconds on Pi 5 (vs ~2s on desktop)
|
||||||
|
- **Python 3.13**: Not supported due to jpegio C extension incompatibility
|
||||||
|
- **First run**: Will prompt you to create an admin account
|
||||||
|
- **HTTPS**: Generates self-signed certificate (browsers will warn)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user