Add reedsolo to Docker, update docs for docker/ paths
- Add reedsolo>=1.7.0 to Dockerfile and Dockerfile.base for DCT error correction (fixes DCT decode failures in container) - Update all documentation to use docker/docker-compose.yml paths Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
4
API.md
4
API.md
@@ -88,7 +88,7 @@ uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4
|
|||||||
|
|
||||||
**Docker with channel key:**
|
**Docker with channel key:**
|
||||||
```bash
|
```bash
|
||||||
STEGASOO_CHANNEL_KEY=XXXX-XXXX-... docker-compose up api
|
STEGASOO_CHANNEL_KEY=XXXX-XXXX-... docker-compose -f docker/docker-compose.yml up api
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -843,7 +843,7 @@ curl -s -X POST "$BASE_URL/decode/multipart" \
|
|||||||
|
|
||||||
## Docker Configuration
|
## Docker Configuration
|
||||||
|
|
||||||
### docker-compose.yml
|
### docker/docker-compose.yml
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
x-common-env: &common-env
|
x-common-env: &common-env
|
||||||
|
|||||||
2
CLI.md
2
CLI.md
@@ -810,7 +810,7 @@ stegasoo decode -r ref.jpg -s stego.png -p "phrase" --pin 123456
|
|||||||
|
|
||||||
### Docker Deployment
|
### Docker Deployment
|
||||||
|
|
||||||
**docker-compose.yml:**
|
**docker/docker-compose.yml:**
|
||||||
```yaml
|
```yaml
|
||||||
x-common-env: &common-env
|
x-common-env: &common-env
|
||||||
STEGASOO_CHANNEL_KEY: ${STEGASOO_CHANNEL_KEY:-}
|
STEGASOO_CHANNEL_KEY: ${STEGASOO_CHANNEL_KEY:-}
|
||||||
|
|||||||
30
DOCKER.md
30
DOCKER.md
@@ -6,10 +6,10 @@ Stegasoo provides Docker images for both the Web UI and REST API.
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Build and start all services
|
# Build and start all services
|
||||||
docker-compose up -d
|
docker-compose -f docker/docker-compose.yml up -d
|
||||||
|
|
||||||
# Check status
|
# Check status
|
||||||
docker-compose ps
|
docker-compose -f docker/docker-compose.yml ps
|
||||||
```
|
```
|
||||||
|
|
||||||
Access:
|
Access:
|
||||||
@@ -61,10 +61,10 @@ Uses a pre-built base image with all dependencies:
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# First time only: build the base image
|
# First time only: build the base image
|
||||||
docker build -f Dockerfile.base -t stegasoo-base:latest .
|
docker build -f docker/Dockerfile.base -t stegasoo-base:latest .
|
||||||
|
|
||||||
# Build services (fast - only copies app code)
|
# Build services (fast - only copies app code)
|
||||||
docker-compose build
|
docker-compose -f docker/docker-compose.yml build
|
||||||
```
|
```
|
||||||
|
|
||||||
### Full Build (No Base Image)
|
### Full Build (No Base Image)
|
||||||
@@ -72,26 +72,26 @@ docker-compose build
|
|||||||
If you don't have the base image, the Dockerfile will build all dependencies (slower):
|
If you don't have the base image, the Dockerfile will build all dependencies (slower):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker-compose build
|
docker-compose -f docker/docker-compose.yml build
|
||||||
```
|
```
|
||||||
|
|
||||||
## Commands
|
## Commands
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Start services
|
# Start services
|
||||||
docker-compose up -d
|
docker-compose -f docker/docker-compose.yml up -d
|
||||||
|
|
||||||
# View logs
|
# View logs
|
||||||
docker-compose logs -f
|
docker-compose -f docker/docker-compose.yml logs -f
|
||||||
|
|
||||||
# Stop services
|
# Stop services
|
||||||
docker-compose down
|
docker-compose -f docker/docker-compose.yml down
|
||||||
|
|
||||||
# Rebuild after code changes
|
# Rebuild after code changes
|
||||||
docker-compose build && docker-compose up -d
|
docker-compose -f docker/docker-compose.yml build && docker-compose -f docker/docker-compose.yml up -d
|
||||||
|
|
||||||
# Full rebuild (no cache)
|
# Full rebuild (no cache)
|
||||||
docker-compose build --no-cache
|
docker-compose -f docker/docker-compose.yml build --no-cache
|
||||||
```
|
```
|
||||||
|
|
||||||
## Resource Limits
|
## Resource Limits
|
||||||
@@ -112,7 +112,7 @@ Both services include health checks:
|
|||||||
|
|
||||||
Check health status:
|
Check health status:
|
||||||
```bash
|
```bash
|
||||||
docker-compose ps
|
docker-compose -f docker/docker-compose.yml ps
|
||||||
```
|
```
|
||||||
|
|
||||||
## Production Deployment
|
## Production Deployment
|
||||||
@@ -129,7 +129,7 @@ For production, consider:
|
|||||||
```bash
|
```bash
|
||||||
# Don't commit .env files with secrets
|
# Don't commit .env files with secrets
|
||||||
export STEGASOO_CHANNEL_KEY=your-key
|
export STEGASOO_CHANNEL_KEY=your-key
|
||||||
docker-compose up -d
|
docker-compose -f docker/docker-compose.yml up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
3. **Reverse proxy**: Put behind nginx/traefik for TLS termination
|
3. **Reverse proxy**: Put behind nginx/traefik for TLS termination
|
||||||
@@ -145,12 +145,12 @@ For production, consider:
|
|||||||
### Container won't start
|
### Container won't start
|
||||||
```bash
|
```bash
|
||||||
# Check logs
|
# Check logs
|
||||||
docker-compose logs web
|
docker-compose -f docker/docker-compose.yml logs web
|
||||||
docker-compose logs api
|
docker-compose -f docker/docker-compose.yml logs api
|
||||||
```
|
```
|
||||||
|
|
||||||
### Out of memory
|
### Out of memory
|
||||||
Increase Docker's memory allocation or reduce worker count in Dockerfile.
|
Increase Docker's memory allocation or reduce worker count in `docker/Dockerfile`.
|
||||||
|
|
||||||
### Permission errors
|
### Permission errors
|
||||||
The containers run as non-root user `stego` (UID 1000). Ensure volume permissions match.
|
The containers run as non-root user `stego` (UID 1000). Ensure volume permissions match.
|
||||||
|
|||||||
30
INSTALL.md
30
INSTALL.md
@@ -154,10 +154,10 @@ Build and run individual containers.
|
|||||||
#### Build Images
|
#### Build Images
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Build all targets
|
# From project root - build all targets
|
||||||
docker build -t stegasoo-web --target web .
|
docker build -t stegasoo-web --target web -f docker/Dockerfile .
|
||||||
docker build -t stegasoo-api --target api .
|
docker build -t stegasoo-api --target api -f docker/Dockerfile .
|
||||||
docker build -t stegasoo-cli --target cli .
|
docker build -t stegasoo-cli --target cli -f docker/Dockerfile .
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Run Web UI
|
#### Run Web UI
|
||||||
@@ -214,17 +214,17 @@ The easiest way to run all services.
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Start in background
|
# Start in background
|
||||||
docker-compose up -d
|
docker-compose -f docker/docker-compose.yml up -d
|
||||||
|
|
||||||
# Start specific service
|
# Start specific service
|
||||||
docker-compose up -d web
|
docker-compose -f docker/docker-compose.yml up -d web
|
||||||
docker-compose up -d api
|
docker-compose -f docker/docker-compose.yml up -d api
|
||||||
|
|
||||||
# View logs
|
# View logs
|
||||||
docker-compose logs -f
|
docker-compose -f docker/docker-compose.yml logs -f
|
||||||
|
|
||||||
# Stop all
|
# Stop all
|
||||||
docker-compose down
|
docker-compose -f docker/docker-compose.yml down
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Authentication Configuration (v4.0.2)
|
#### Authentication Configuration (v4.0.2)
|
||||||
@@ -239,7 +239,7 @@ STEGASOO_HOSTNAME=localhost # Hostname for SSL cert
|
|||||||
STEGASOO_CHANNEL_KEY= # Optional channel key
|
STEGASOO_CHANNEL_KEY= # Optional channel key
|
||||||
|
|
||||||
# Then run
|
# Then run
|
||||||
docker-compose up -d web
|
docker-compose -f docker/docker-compose.yml up -d web
|
||||||
```
|
```
|
||||||
|
|
||||||
On first access, you'll be prompted to create an admin account. The database and SSL certs are persisted in Docker volumes.
|
On first access, you'll be prompted to create an admin account. The database and SSL certs are persisted in Docker volumes.
|
||||||
@@ -255,16 +255,16 @@ On first access, you'll be prompted to create an admin account. The database and
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Build images and start
|
# Build images and start
|
||||||
docker-compose up -d --build
|
docker-compose -f docker/docker-compose.yml up -d --build
|
||||||
|
|
||||||
# Force rebuild (no cache)
|
# Force rebuild (no cache)
|
||||||
docker-compose build --no-cache
|
docker-compose -f docker/docker-compose.yml build --no-cache
|
||||||
docker-compose up -d
|
docker-compose -f docker/docker-compose.yml up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Resource Configuration
|
#### Resource Configuration
|
||||||
|
|
||||||
The `docker-compose.yml` includes resource limits:
|
The `docker/docker-compose.yml` includes resource limits:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
services:
|
services:
|
||||||
@@ -852,7 +852,7 @@ Argon2 needs 256MB per operation. Increase container memory:
|
|||||||
# Docker run
|
# Docker run
|
||||||
docker run --memory=768m ...
|
docker run --memory=768m ...
|
||||||
|
|
||||||
# Docker Compose - edit docker-compose.yml
|
# Docker Compose - edit docker/docker-compose.yml
|
||||||
deploy:
|
deploy:
|
||||||
resources:
|
resources:
|
||||||
limits:
|
limits:
|
||||||
|
|||||||
@@ -106,17 +106,17 @@ ruff check src/ tests/ frontends/
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Quick start (HTTPS enabled by default)
|
# Quick start (HTTPS enabled by default)
|
||||||
docker-compose up -d
|
docker-compose -f docker/docker-compose.yml up -d
|
||||||
|
|
||||||
# Access
|
# Access
|
||||||
# Web UI: https://localhost:5000 (self-signed cert)
|
# Web UI: https://localhost:5000 (self-signed cert)
|
||||||
# REST API: http://localhost:8000
|
# REST API: http://localhost:8000
|
||||||
|
|
||||||
# Disable HTTPS if needed:
|
# Disable HTTPS if needed:
|
||||||
STEGASOO_HTTPS_ENABLED=false docker-compose up -d
|
STEGASOO_HTTPS_ENABLED=false docker-compose -f docker/docker-compose.yml up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
See [DOCKER.md](DOCKER.md) for full documentation.
|
See [DOCKER.md](DOCKER.md) and [docs/DOCKER_QUICKSTART.md](docs/DOCKER_QUICKSTART.md) for full documentation.
|
||||||
|
|
||||||
## Raspberry Pi
|
## Raspberry Pi
|
||||||
|
|
||||||
|
|||||||
@@ -21,12 +21,12 @@ Pre-release validation checklist. Complete all items before tagging a release.
|
|||||||
|
|
||||||
## Docker Validation
|
## Docker Validation
|
||||||
|
|
||||||
- [ ] Base image builds: `docker build -f Dockerfile.base -t stegasoo-base:latest .`
|
- [ ] Base image builds: `docker build -f docker/Dockerfile.base -t stegasoo-base:latest .`
|
||||||
- [ ] Web image builds: `docker-compose build web`
|
- [ ] Web image builds: `docker-compose -f docker/docker-compose.yml build web`
|
||||||
- [ ] Container starts: `docker-compose up -d web`
|
- [ ] Container starts: `docker-compose -f docker/docker-compose.yml up -d web`
|
||||||
- [ ] Web UI accessible at http://localhost:5000
|
- [ ] Web UI accessible at http://localhost:5000
|
||||||
- [ ] Encode/decode works in container
|
- [ ] Encode/decode works in container
|
||||||
- [ ] Container stops cleanly: `docker-compose down`
|
- [ ] Container stops cleanly: `docker-compose -f docker/docker-compose.yml down`
|
||||||
|
|
||||||
## Release Process
|
## Release Process
|
||||||
|
|
||||||
|
|||||||
@@ -39,8 +39,8 @@ First boot runs the setup wizard for WiFi, HTTPS, and channel key configuration.
|
|||||||
|
|
||||||
### Docker
|
### Docker
|
||||||
```bash
|
```bash
|
||||||
docker-compose up -d web # Web UI on :5000
|
docker-compose -f docker/docker-compose.yml up -d web # Web UI on :5000
|
||||||
docker-compose up -d api # REST API on :8000
|
docker-compose -f docker/docker-compose.yml up -d api # REST API on :8000
|
||||||
```
|
```
|
||||||
|
|
||||||
### Full Changelog
|
### Full Changelog
|
||||||
|
|||||||
@@ -177,7 +177,7 @@ python app.py
|
|||||||
### Docker Configuration
|
### Docker Configuration
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
# docker-compose.yml
|
# docker/docker-compose.yml
|
||||||
services:
|
services:
|
||||||
web:
|
web:
|
||||||
environment:
|
environment:
|
||||||
@@ -360,7 +360,7 @@ gunicorn --bind 0.0.0.0:5000 --workers 2 --threads 4 --timeout 60 app:app
|
|||||||
|
|
||||||
**Docker:**
|
**Docker:**
|
||||||
```bash
|
```bash
|
||||||
docker-compose up web
|
docker-compose -f docker/docker-compose.yml up web
|
||||||
```
|
```
|
||||||
|
|
||||||
### First-Time Setup
|
### First-Time Setup
|
||||||
@@ -1245,7 +1245,7 @@ volumes:
|
|||||||
```bash
|
```bash
|
||||||
pip install scipy
|
pip install scipy
|
||||||
# Or rebuild Docker image
|
# Or rebuild Docker image
|
||||||
docker-compose build --no-cache
|
docker-compose -f docker/docker-compose.yml build --no-cache
|
||||||
```
|
```
|
||||||
|
|
||||||
### Browser Compatibility
|
### Browser Compatibility
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|||||||
RUN pip install --no-cache-dir \
|
RUN pip install --no-cache-dir \
|
||||||
cython numpy scipy>=1.10.0 jpegio>=0.2.0 \
|
cython numpy scipy>=1.10.0 jpegio>=0.2.0 \
|
||||||
argon2-cffi>=23.0.0 pillow>=10.0.0 cryptography>=41.0.0 \
|
argon2-cffi>=23.0.0 pillow>=10.0.0 cryptography>=41.0.0 \
|
||||||
|
reedsolo>=1.7.0 \
|
||||||
flask>=3.0.0 gunicorn>=21.0.0 \
|
flask>=3.0.0 gunicorn>=21.0.0 \
|
||||||
fastapi>=0.100.0 "uvicorn[standard]>=0.20.0" python-multipart>=0.0.6 \
|
fastapi>=0.100.0 "uvicorn[standard]>=0.20.0" python-multipart>=0.0.6 \
|
||||||
qrcode>=7.3.0 pyzbar>=0.1.9 click>=8.0.0 lz4>=4.0.0
|
qrcode>=7.3.0 pyzbar>=0.1.9 click>=8.0.0 lz4>=4.0.0
|
||||||
|
|||||||
@@ -32,7 +32,8 @@ RUN pip install --no-cache-dir \
|
|||||||
jpegio>=0.2.0 \
|
jpegio>=0.2.0 \
|
||||||
argon2-cffi>=23.0.0 \
|
argon2-cffi>=23.0.0 \
|
||||||
pillow>=10.0.0 \
|
pillow>=10.0.0 \
|
||||||
cryptography>=41.0.0
|
cryptography>=41.0.0 \
|
||||||
|
reedsolo>=1.7.0
|
||||||
|
|
||||||
# Install web/api framework packages (also stable)
|
# Install web/api framework packages (also stable)
|
||||||
RUN pip install --no-cache-dir \
|
RUN pip install --no-cache-dir \
|
||||||
|
|||||||
Reference in New Issue
Block a user