Spaces:
Sleeping
Sleeping
| # Deploying to HuggingFace Spaces | |
| This guide will help you deploy the Enflow backend to HuggingFace Spaces securely by setting up environment variables. | |
| ## 1. Create a HuggingFace Space | |
| 1. Go to [HuggingFace Spaces](https://huggingface.co/spaces) | |
| 2. Click on "Create a Space" | |
| 3. Choose a name for your space | |
| 4. Select "Docker" as the Space SDK | |
| 5. Choose public or private visibility as needed | |
| 6. Create the space | |
| ## 2. Set Up Environment Variables in HuggingFace | |
| To securely manage credentials, add them as secrets in HuggingFace Spaces: | |
| 1. Navigate to your space's page | |
| 2. Go to the "Settings" tab | |
| 3. Scroll down to the "Repository secrets" section | |
| 4. Add each of the following secrets (matching your .env file): | |
| - `MONGO_URI` | |
| - `JWT_SECRET` | |
| - `CLOUDINARY_CLOUD_NAME` | |
| - `CLOUDINARY_API_KEY` | |
| - `CLOUDINARY_API_SECRET` | |
| - `REDIS_URL` | |
| - `OPENAI_API_KEY` | |
| - `FLASK_ENV` (set to "production" for deployment) | |
| ## 3. Update the Dockerfile | |
| Create a Dockerfile in your backend directory with the following content: | |
| ```dockerfile | |
| FROM python:3.9-slim | |
| WORKDIR /app | |
| # Install system dependencies for tesseract | |
| RUN apt-get update && apt-get install -y \ | |
| tesseract-ocr \ | |
| poppler-utils \ | |
| && apt-get clean \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # Copy requirements and install dependencies | |
| COPY requirements.txt . | |
| RUN pip install --no-cache-dir -r requirements.txt | |
| # Copy application code | |
| COPY . . | |
| # Set environment variables from HuggingFace secrets | |
| ENV MONGO_URI=${MONGO_URI} | |
| ENV JWT_SECRET=${JWT_SECRET} | |
| ENV CLOUDINARY_CLOUD_NAME=${CLOUDINARY_CLOUD_NAME} | |
| ENV CLOUDINARY_API_KEY=${CLOUDINARY_API_KEY} | |
| ENV CLOUDINARY_API_SECRET=${CLOUDINARY_API_SECRET} | |
| ENV REDIS_URL=${REDIS_URL} | |
| ENV OPENAI_API_KEY=${OPENAI_API_KEY} | |
| ENV FLASK_ENV=${FLASK_ENV} | |
| # Expose port for the Flask application | |
| EXPOSE 7860 | |
| # Start the application | |
| CMD ["gunicorn", "--bind", "0.0.0.0:7860", "app:app"] | |
| ``` | |
| ## 4. Push to HuggingFace | |
| 1. Clone your HuggingFace space repository: | |
| ```bash | |
| git clone https://huggingface.co/spaces/YOUR_USERNAME/YOUR_SPACE_NAME | |
| ``` | |
| 2. Copy your backend files to the cloned repository: | |
| ```bash | |
| cp -r backend/* path/to/cloned/repo/ | |
| ``` | |
| 3. Commit and push the changes: | |
| ```bash | |
| cd path/to/cloned/repo | |
| git add . | |
| git commit -m "Deploy Enflow backend" | |
| git push | |
| ``` | |
| ## 5. Verify Deployment | |
| 1. Wait for the build to complete on HuggingFace Spaces | |
| 2. Visit your space URL | |
| 3. Check that the health check endpoint `/health` returns a successful response | |
| ## Important Security Notes | |
| - NEVER commit sensitive credentials to the repository | |
| - Always use environment variables for secrets | |
| - Review your code for hardcoded credentials before pushing | |
| - For local development, continue using the .env file |