Files
stegasoo/DOCKER.md
Aaron D. Lee 65a663fe3b Add Docker deployment documentation
- New DOCKER.md with comprehensive Docker setup guide
- Added Docker quick start section to README.md
- Documents environment variables, volumes, build process
- Includes production deployment and troubleshooting tips

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-05 22:00:01 -05:00

3.0 KiB

Docker Deployment

Stegasoo provides Docker images for both the Web UI and REST API.

Quick Start

# Build and start all services
docker-compose up -d

# Check status
docker-compose ps

Access:

Services

Service Port Description
web 5000 Flask Web UI with authentication
api 8000 FastAPI REST API

Configuration

Environment Variables

Create a .env file or set these variables:

# Channel key for private group communication (optional)
STEGASOO_CHANNEL_KEY=XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX

# Web UI authentication (default: enabled)
STEGASOO_AUTH_ENABLED=true

# HTTPS support (default: disabled)
STEGASOO_HTTPS_ENABLED=false
STEGASOO_HOSTNAME=localhost

Volume Mounts

Persistent data is stored in Docker volumes:

Volume Purpose
stegasoo-web-data User database, session data
stegasoo-web-certs SSL certificates (if HTTPS enabled)

Building

Uses a pre-built base image with all dependencies:

# First time only: build the base image
docker build -f Dockerfile.base -t stegasoo-base:latest .

# Build services (fast - only copies app code)
docker-compose build

Full Build (No Base Image)

If you don't have the base image, the Dockerfile will build all dependencies (slower):

docker-compose build

Commands

# Start services
docker-compose up -d

# View logs
docker-compose logs -f

# Stop services
docker-compose down

# Rebuild after code changes
docker-compose build && docker-compose up -d

# Full rebuild (no cache)
docker-compose build --no-cache

Resource Limits

Each container is configured with:

  • Memory limit: 768 MB
  • Memory reservation: 384 MB

This accounts for Argon2id's 256 MB RAM requirement during key derivation.

Health Checks

Both services include health checks:

  • Interval: 30 seconds
  • Timeout: 10 seconds
  • Start period: 5 seconds
  • Retries: 3

Check health status:

docker-compose ps

Production Deployment

For production, consider:

  1. Enable HTTPS:

    STEGASOO_HTTPS_ENABLED=true
    STEGASOO_HOSTNAME=your-domain.com
    
  2. Use secrets for channel key:

    # Don't commit .env files with secrets
    export STEGASOO_CHANNEL_KEY=your-key
    docker-compose up -d
    
  3. Reverse proxy: Put behind nginx/traefik for TLS termination

  4. Backup volumes:

    docker run --rm -v stegasoo-web-data:/data -v $(pwd):/backup \
      alpine tar czf /backup/stegasoo-backup.tar.gz /data
    

Troubleshooting

Container won't start

# Check logs
docker-compose logs web
docker-compose logs api

Out of memory

Increase Docker's memory allocation or reduce worker count in Dockerfile.

Permission errors

The containers run as non-root user stego (UID 1000). Ensure volume permissions match.