Skip to content

Readur Deployment Summary

✅ What's Been Implemented

🐳 Complete Docker Support

  • Multi-stage Docker builds for production
  • Production-ready docker-compose.yml configurations
  • Support for environment-based configuration
  • Health checks and resource limits
  • SSL/HTTPS reverse proxy examples

📁 Advanced Watch Folder System

  • Cross-filesystem compatibility: NFS, SMB, S3, local storage
  • Hybrid watching strategy: Auto-detects filesystem type
  • Smart file processing: Duplicate detection, stability checks
  • Configurable: 5+ environment variables for fine-tuning

⚙️ Comprehensive Configuration

  • 25+ environment variables for complete customization
  • Production examples for all major deployment scenarios
  • Network filesystem optimization settings
  • OCR and performance tuning options

🚀 Quick Deployment

Development

git clone <repo>
cd readur
docker compose up --build -d
# Access: http://localhost:8000

Production

# Generate secure secrets
JWT_SECRET=$(openssl rand -base64 64)
DB_PASSWORD=$(openssl rand -base64 32)

# Create .env file
cat > .env << EOF
JWT_SECRET=${JWT_SECRET}
DB_PASSWORD=${DB_PASSWORD}
EOF

# Deploy with production config
docker compose -f docker-compose.prod.yml --env-file .env up -d

🔧 Key Environment Variables

Essential (Required for Production)

JWT_SECRET=your-secure-random-key
DATABASE_URL=postgresql://user:pass@host:port/db

Watch Folder (Network Mounts)

WATCH_FOLDER=/mnt/nfs/documents
WATCH_INTERVAL_SECONDS=60
FORCE_POLLING_WATCH=1
FILE_STABILITY_CHECK_MS=1000

Performance Optimization

CONCURRENT_OCR_JOBS=8
MAX_FILE_SIZE_MB=200
MEMORY_LIMIT_MB=2048
OCR_TIMEOUT_SECONDS=600

🌐 Network Filesystem Examples

NFS Mount

volumes:
  - /mnt/nfs/docs:/app/watch
environment:
  - WATCH_INTERVAL_SECONDS=60
  - FORCE_POLLING_WATCH=1

SMB/CIFS Mount

volumes:
  - /mnt/smb/shared:/app/watch
environment:
  - WATCH_INTERVAL_SECONDS=30
  - FILE_STABILITY_CHECK_MS=2000

S3 Mount (s3fs)

volumes:
  - /mnt/s3/bucket:/app/watch
environment:
  - WATCH_INTERVAL_SECONDS=120
  - FILE_STABILITY_CHECK_MS=5000
  - FORCE_POLLING_WATCH=1

📊 Configuration Summary

Category Variables Purpose
Core 3 vars Database, auth, server binding
File Storage 2 vars Upload paths and file types
Watch Folder 5 vars Cross-filesystem monitoring
OCR Processing 4 vars Language, jobs, timeouts, limits
Performance 2 vars Memory and CPU optimization
Search & UI 10+ vars Via web interface settings

🔒 Security Features

  • JWT-based authentication with configurable secrets
  • Bcrypt password hashing
  • File type restrictions
  • Size limits and timeouts
  • Non-destructive file processing (originals preserved)
  • Configurable data retention policies

📈 Scalability Features

  • Concurrent OCR processing (configurable)
  • Resource limits and priorities
  • Background job queues
  • Database optimization for full-text search
  • Efficient file storage with optional compression

🛠️ Operations Support

  • Health checks: Built-in endpoint for monitoring
  • Logging: Structured logging with configurable levels
  • Metrics: Queue statistics and processing metrics
  • Backup scripts: Database and file backup examples
  • Monitoring: Docker stats and log analysis commands

📚 Documentation

  • README.md: Complete deployment and usage guide
  • WATCH_FOLDER.md: Detailed watch folder documentation
  • Docker examples: Production-ready configurations
  • API documentation: Complete REST API reference
  • Troubleshooting: Common issues and solutions

All components are production-ready with comprehensive configuration options for enterprise deployment scenarios! 🎉