Spaces:
Runtime error
Runtime error
File size: 7,251 Bytes
86042ad | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 | # π Deployment Guide
This guide covers deploying the LLM API Backend to various platforms.
## π Prerequisites
- Node.js 18+ installed
- Encore CLI installed (`npm install -g encore.dev`)
- Git installed
- API keys for your chosen LLM provider
---
## π Hugging Face Spaces (Recommended for Demos)
### Step 1: Create a Space
1. Go to https://huggingface.co/spaces
2. Click **"Create new Space"**
3. Settings:
- **Space name:** `llm-api-backend` (or your choice)
- **SDK:** Docker
- **Visibility:** Public or Private
4. Click **Create Space**
### Step 2: Clone and Push
```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 project
cp -r /path/to/llm-api-backend/* .
# Commit and push
git add .
git commit -m "Initial deployment"
git push
```
### Step 3: Configure Secrets
1. Go to your Space page
2. Click **Settings** β **Repository secrets**
3. Add the following secrets:
**For Hugging Face Provider:**
```
LLMProvider = huggingface
HuggingFaceAPIKey = hf_your_token_here
DefaultModel = mistralai/Mistral-7B-Instruct-v0.2
```
**For Ollama Provider (requires custom Docker setup):**
```
LLMProvider = ollama
OllamaBaseURL = http://localhost:11434
DefaultModel = llama3
```
### Step 4: Wait for Build
- Hugging Face will automatically build your Docker container
- Watch the build logs in the Space interface
- Once complete, your API is live!
### Step 5: Test Your API
```bash
# Replace with your actual Space URL
export SPACE_URL="https://YOUR_USERNAME-YOUR_SPACE_NAME.hf.space"
# Test chat endpoint
curl -X POST $SPACE_URL/chat \
-H "Content-Type: application/json" \
-d '{"message": "Hello!"}'
# Test health endpoint
curl $SPACE_URL/health
```
---
## βοΈ Encore Cloud (Recommended for Production)
### Step 1: Install Encore
```bash
npm install -g encore.dev
```
### Step 2: Create Encore App
```bash
# If starting fresh
encore app create
# Or link existing app
encore app link
```
### Step 3: Set Secrets
```bash
# For Hugging Face
encore secret set LLMProvider huggingface
encore secret set HuggingFaceAPIKey hf_your_token_here
encore secret set DefaultModel mistralai/Mistral-7B-Instruct-v0.2
# For Ollama (local development)
encore secret set LLMProvider ollama
encore secret set OllamaBaseURL http://localhost:11434
encore secret set DefaultModel llama3
```
### Step 4: Deploy
```bash
# Deploy to staging
encore deploy
# Deploy to production
encore deploy --env production
```
### Step 5: Access Your API
```bash
# Your API will be available at:
# Staging: https://staging-YOUR_APP.encr.app
# Production: https://prod-YOUR_APP.encr.app
# Test it
curl https://staging-YOUR_APP.encr.app/health
```
---
## π³ Docker (Self-Hosted)
### Step 1: Build Image
```bash
docker build -t llm-api-backend .
```
### Step 2: Run Container
**Using Hugging Face:**
```bash
docker run -d \
-p 7860:7860 \
-e LLMProvider=huggingface \
-e HuggingFaceAPIKey=hf_your_token \
-e DefaultModel=mistralai/Mistral-7B-Instruct-v0.2 \
--name llm-api \
llm-api-backend
```
**Using Ollama (with host network):**
```bash
docker run -d \
--network host \
-e LLMProvider=ollama \
-e OllamaBaseURL=http://localhost:11434 \
-e DefaultModel=llama3 \
--name llm-api \
llm-api-backend
```
### Step 3: Test
```bash
curl http://localhost:7860/health
```
---
## π₯οΈ VPS / Bare Metal
### Step 1: Install Dependencies
```bash
# Install Node.js 20
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
# Install Encore CLI
npm install -g encore.dev
```
### Step 2: Clone Repository
```bash
git clone https://github.com/YOUR_USERNAME/llm-api-backend.git
cd llm-api-backend
```
### Step 3: Configure Environment
```bash
# Copy example env file
cp .env.example .env
# Edit with your values
nano .env
```
### Step 4: Set Encore Secrets
```bash
encore secret set LLMProvider huggingface
encore secret set HuggingFaceAPIKey hf_your_token
encore secret set DefaultModel mistralai/Mistral-7B-Instruct-v0.2
```
### Step 5: Run with PM2 (Production)
```bash
# Install PM2
npm install -g pm2
# Start application
pm2 start "encore run --port 8080" --name llm-api
# Save PM2 configuration
pm2 save
# Enable startup on boot
pm2 startup
```
### Step 6: Configure Nginx (Optional)
```nginx
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
```
---
## π Security Checklist
Before deploying to production:
- [ ] All secrets configured properly
- [ ] API keys have appropriate permissions
- [ ] CORS configured for your frontend domains
- [ ] Rate limiting enabled (add middleware)
- [ ] HTTPS enabled (Encore/HF Spaces handle this)
- [ ] Environment variables not committed to git
- [ ] Monitoring and logging set up
- [ ] Error tracking configured
---
## π Monitoring
### Encore Cloud
- Built-in dashboard at https://app.encore.dev
- Real-time traces, logs, and metrics
- Performance monitoring
- Error tracking
### Hugging Face Spaces
- View logs in Space interface
- Use `/health` endpoint for uptime monitoring
- Configure external monitoring tools
### Self-Hosted
- Use `/health` endpoint
- Set up monitoring tools like:
- Prometheus + Grafana
- Datadog
- New Relic
- Sentry for errors
---
## π Troubleshooting
### Build Failures on HF Spaces
**Issue:** Docker build fails
```bash
# Check Dockerfile syntax
# Ensure all required files are committed
# Check Space build logs
```
### "Secret not set" Errors
**Issue:** Application can't access secrets
```bash
# On Encore: Use 'encore secret set' command
# On HF Spaces: Configure in Space settings
# On Docker: Pass as environment variables (-e flag)
```
### Model Loading Timeout
**Issue:** HF models take too long to load
```bash
# Solution: Wait 30-60 seconds for cold start
# Use smaller models for faster loading
# Check model availability on HF
```
### Connection Refused (Ollama)
**Issue:** Can't connect to Ollama
```bash
# Ensure Ollama is running: ollama serve
# Check OllamaBaseURL is correct
# For Docker: Use --network host
```
---
## π Updates and Maintenance
### Updating on Hugging Face Spaces
```bash
git pull origin main
# Make your changes
git add .
git commit -m "Update: description"
git push
```
### Updating on Encore Cloud
```bash
# Make changes
git commit -am "Update: description"
encore deploy
```
### Updating Docker
```bash
# Rebuild image
docker build -t llm-api-backend .
# Stop old container
docker stop llm-api
docker rm llm-api
# Run new container
docker run -d [your flags] llm-api-backend
```
---
## π Additional Resources
- [Encore Documentation](https://encore.dev/docs)
- [Hugging Face Spaces Docs](https://huggingface.co/docs/hub/spaces)
- [Docker Documentation](https://docs.docker.com)
- [Ollama Documentation](https://ollama.ai/docs)
---
**Need help?** Open an issue or check the main README.md for support options.
|