| # π Hugging Face Spaces Deployment Guide | |
| This repository is **production-ready** for deployment on Hugging Face Spaces using Docker runtime. | |
| ## β Pre-Deployment Checklist | |
| All requirements are already configured: | |
| - β **FastAPI app**: `api_server_extended.py` defines `app = FastAPI(...)` | |
| - β **Health endpoint**: `/health` returns service status | |
| - β **Dockerfile**: Configured with correct CMD for uvicorn | |
| - β **Requirements**: All dependencies listed in `requirements.txt` | |
| - β **Port handling**: Supports `${PORT}` environment variable | |
| - β **Resilient startup**: Runs in degraded mode if some services fail | |
| ## π― Deployment Steps | |
| ### 1. Create a New Space on Hugging Face | |
| 1. Go to https://huggingface.co/spaces | |
| 2. Click **"Create new Space"** | |
| 3. Configure: | |
| - **Space name**: `crypto-monitor-api` (or your choice) | |
| - **License**: Choose appropriate license | |
| - **SDK**: Select **Docker** | |
| - **Hardware**: CPU Basic (minimum) or CPU Upgrade (recommended) | |
| - **Visibility**: Public or Private | |
| ### 2. Push Repository to Space | |
| ```bash | |
| # Clone your new Space | |
| git clone https://huggingface.co/spaces/YOUR_USERNAME/YOUR_SPACE_NAME | |
| cd YOUR_SPACE_NAME | |
| # Copy all files from this repository | |
| cp -r /path/to/crypto-dt-source-main/* . | |
| # Add and commit | |
| git add . | |
| git commit -m "Initial deployment of Crypto Monitor API" | |
| # Push to Hugging Face | |
| git push | |
| ``` | |
| ### 3. Configure Space Settings (Optional) | |
| In your Space settings, you can add these environment variables: | |
| - `PORT` - Port number (default: 7860 for HF, 8000 for local) | |
| - `ENABLE_AUTO_DISCOVERY` - Enable auto-discovery service (default: false) | |
| - Add any API keys as **Repository secrets** (not in code!) | |
| ### 4. Monitor Deployment | |
| 1. Go to your Space page | |
| 2. Check the **Logs** tab for build progress | |
| 3. Wait for "Running" status (usually 2-5 minutes) | |
| 4. Access your API at: `https://YOUR_USERNAME-YOUR_SPACE_NAME.hf.space` | |
| ## π API Endpoints | |
| Once deployed, your API will be available at: | |
| ### Core Endpoints | |
| - **Root**: `https://your-space.hf.space/` | |
| - **API Docs**: `https://your-space.hf.space/docs` (Interactive Swagger UI) | |
| - **Health Check**: `https://your-space.hf.space/health` | |
| - **Status**: `https://your-space.hf.space/api/status` | |
| ### Provider Management | |
| - `GET /api/providers` - List all crypto data providers | |
| - `GET /api/providers/{id}` - Get provider details | |
| - `POST /api/providers/{id}/health-check` - Check provider health | |
| - `GET /api/providers/category/{category}` - Filter by category | |
| ### Pool Management | |
| - `GET /api/pools` - List all provider pools | |
| - `POST /api/pools` - Create new pool | |
| - `POST /api/pools/{id}/members` - Add provider to pool | |
| - `POST /api/pools/{id}/rotate` - Rotate pool providers | |
| ### Real-time Updates | |
| - `WS /ws` - WebSocket connection for live updates | |
| ### Monitoring & Diagnostics | |
| - `GET /api/stats` - System statistics | |
| - `GET /api/logs` - Application logs | |
| - `POST /api/diagnostics/run` - Run diagnostics | |
| See `/docs` for complete API documentation with interactive testing. | |
| ## π§ͺ Local Testing | |
| ### Test with Docker (Recommended) | |
| ```bash | |
| # Build the image | |
| docker build -t crypto-monitor-test . | |
| # Run the container | |
| docker run -p 8000:8000 crypto-monitor-test | |
| # Test health endpoint | |
| curl http://localhost:8000/health | |
| # Access API docs | |
| open http://localhost:8000/docs | |
| ``` | |
| ### Test with Python | |
| ```bash | |
| # Install dependencies | |
| pip install -r requirements.txt | |
| # Run locally | |
| python main.py | |
| # Or with uvicorn directly | |
| uvicorn api_server_extended:app --host 0.0.0.0 --port 8000 --reload | |
| ``` | |
| ## π Troubleshooting | |
| ### Build Fails | |
| **Check logs for specific errors:** | |
| - Missing dependencies? Verify `requirements.txt` | |
| - Import errors? Ensure all local modules exist | |
| - System dependencies? Check Dockerfile `apt-get install` section | |
| **Common fixes:** | |
| ```bash | |
| # Rebuild without cache | |
| docker build --no-cache -t crypto-monitor-test . | |
| # Check for syntax errors | |
| python -m py_compile api_server_extended.py | |
| ``` | |
| ### Container Starts but Health Check Fails | |
| **Increase startup time:** | |
| Edit `Dockerfile` and increase `start-period`: | |
| ```dockerfile | |
| HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \ | |
| CMD curl -f http://localhost:${PORT:-8000}/health || exit 1 | |
| ``` | |
| **Check logs:** | |
| ```bash | |
| docker logs <container_id> | |
| ``` | |
| ### Service Runs in Degraded Mode | |
| This is **normal** if: | |
| - Some external APIs are unavailable | |
| - Network connectivity is limited | |
| - Optional services fail to start | |
| The service will still work with available providers. Check `/health` endpoint for details. | |
| ### WebSocket Connection Issues | |
| If WebSocket connections fail: | |
| 1. Ensure your client uses `wss://` (not `ws://`) for HTTPS spaces | |
| 2. Check CORS settings in `api_server_extended.py` | |
| 3. Verify firewall/proxy settings | |
| ## π Performance Optimization | |
| ### For Better Performance | |
| 1. **Upgrade Hardware**: Use CPU Upgrade or GPU in Space settings | |
| 2. **Disable Auto-Discovery**: Set `ENABLE_AUTO_DISCOVERY=false` (already default) | |
| 3. **Reduce Provider Count**: Edit config files to monitor fewer providers | |
| 4. **Enable Caching**: Already enabled by default | |
| ### Resource Usage | |
| - **Memory**: ~2-4 GB (depends on active providers) | |
| - **CPU**: Low to moderate (spikes during health checks) | |
| - **Storage**: ~500 MB (includes models and data) | |
| ## π Security Best Practices | |
| 1. **Never commit API keys** - Use HF Repository secrets | |
| 2. **Use HTTPS** - Hugging Face provides this automatically | |
| 3. **Rate limiting** - Already implemented via `slowapi` | |
| 4. **CORS** - Configured to allow all origins (adjust if needed) | |
| ## π Configuration Files | |
| ### Required Files (Already Present) | |
| - `Dockerfile` - Container configuration | |
| - `requirements.txt` - Python dependencies | |
| - `api_server_extended.py` - Main FastAPI application | |
| - `.dockerignore` - Files to exclude from image | |
| ### Optional Configuration | |
| - `.env.example` - Environment variable template | |
| - `providers_config_*.json` - Provider configurations | |
| - `crypto_resources_*.json` - Resource definitions | |
| ## π Features | |
| This deployment includes: | |
| β **200+ Crypto Data Providers** - Comprehensive coverage | |
| β **Provider Pools** - Load balancing and failover | |
| β **Real-time WebSocket** - Live updates | |
| β **Health Monitoring** - Automatic health checks | |
| β **Auto-Discovery** - Find new data sources (optional) | |
| β **Diagnostics** - Built-in troubleshooting | |
| β **Logging System** - Comprehensive logging | |
| β **Resource Management** - Import/export configs | |
| β **Rate Limiting** - Prevent abuse | |
| β **CORS Support** - Cross-origin requests | |
| β **API Documentation** - Interactive Swagger UI | |
| ## π Support | |
| ### Check Service Status | |
| ```bash | |
| # Health check | |
| curl https://your-space.hf.space/health | |
| # Detailed status | |
| curl https://your-space.hf.space/api/status | |
| # Run diagnostics | |
| curl -X POST https://your-space.hf.space/api/diagnostics/run | |
| ``` | |
| ### Common Issues | |
| 1. **Space shows "Building"** - Wait 2-5 minutes for first build | |
| 2. **Space shows "Runtime Error"** - Check logs tab for details | |
| 3. **API returns 503** - Service starting up, wait 30-60 seconds | |
| 4. **Slow responses** - Upgrade hardware or reduce provider count | |
| ### Get Help | |
| - Check `/api/diagnostics/run` for automatic issue detection | |
| - Review Space logs for error messages | |
| - Test locally with Docker to isolate issues | |
| - Check Hugging Face Spaces documentation | |
| ## π License | |
| See LICENSE file for details. | |
| --- | |
| **Ready to deploy!** Follow the steps above to get your Crypto Monitor API running on Hugging Face Spaces. | |