Files
homelab-configs/litellm/litellm-api-keys-setup.md
T
jgitta 290aedf82d Add complete homelab documentation and configurations
Documentation:
- OpenCode + LiteLLM integration guide
- LiteLLM complete setup with 16 models
- Gitea centralized configuration guide
- Testing procedures and verification
- API keys setup instructions

Configurations:
- OpenCode config pointing to LiteLLM
- Updated LiteLLM config with all models
- Nextcloud docker-compose template

Scripts:
- Gitea setup automation
- OpenCode testing script

Infrastructure:
- Gitea: 192.168.88.200:3000
- LiteLLM: 192.168.88.27:4000
- Nextcloud: 192.168.88.62
2026-04-25 10:56:21 -05:00

262 lines
6.3 KiB
Markdown

# LiteLLM API Keys Setup - Claude & Gemini Pro Added
## ✅ What's Been Updated
Your LiteLLM gateway now supports **3 major AI platforms**:
### OpenAI (3 models)
- `gpt-4` - Most capable
- `gpt-4-turbo` - Faster
- `gpt-3.5-turbo` - Budget-friendly
### Anthropic Claude (4 models)
- `claude-3-opus` - Most capable Claude
- `claude-3-sonnet` - Best balance
- `claude-3-haiku` - Lightweight
- `claude-2.1` - Previous generation
### Google Gemini (3 models)
- `gemini-pro` - Main model
- `gemini-pro-vision` - With vision
- `gemini-1.5-pro` - Latest
---
## 🔑 Getting Your API Keys
### 1. OpenAI API Key
```
1. Go to: https://platform.openai.com/api-keys
2. Click "Create new secret key"
3. Copy the key (starts with sk-...)
```
### 2. Claude (Anthropic) API Key
```
1. Go to: https://console.anthropic.com/
2. Navigate to "API Keys"
3. Create new key
4. Copy it (starts with sk-ant-...)
```
### 3. Gemini (Google) API Key
```
1. Go to: https://ai.google.dev/
2. Click "Get API Key"
3. Create new key in Google Cloud
4. Copy it
```
---
## 📝 Add Keys to Your Gateway
SSH into docker-server and edit the `.env` file:
```bash
ssh jgitta@192.168.88.27
cd /opt/litellm
nano .env
```
Replace the placeholders with your actual keys:
```bash
# OpenAI API Keys
OPENAI_API_KEY=sk-your-actual-openai-key-here
# Anthropic Claude API Key
ANTHROPIC_API_KEY=sk-ant-your-actual-claude-key-here
# Google Gemini API Key
GOOGLE_API_KEY=your-actual-google-gemini-api-key-here
# Master authentication key (change this in production)
LITELLM_MASTER_KEY=litellm-local-key-change-in-production
```
**To save and exit nano:**
```
Ctrl+X → Y → Enter
```
---
## 🚀 Restart LiteLLM with New Keys
After updating `.env`:
```bash
cd /opt/litellm
docker-compose down
docker-compose up -d
sleep 10
docker logs litellm | tail -20
```
If you see models loading without errors, you're good!
---
## ✅ Test Each Provider
### Test OpenAI (GPT-4)
```bash
curl -X POST http://192.168.88.27:4000/chat/completions \
-H "Authorization: Bearer litellm-local-key-change-in-production" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4",
"messages": [{"role": "user", "content": "Say hello OpenAI!"}]
}' | jq '.choices[0].message'
```
### Test Claude (Anthropic)
```bash
curl -X POST http://192.168.88.27:4000/chat/completions \
-H "Authorization: Bearer litellm-local-key-change-in-production" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-3-opus",
"messages": [{"role": "user", "content": "Say hello Claude!"}]
}' | jq '.choices[0].message'
```
### Test Gemini (Google)
```bash
curl -X POST http://192.168.88.27:4000/chat/completions \
-H "Authorization: Bearer litellm-local-key-change-in-production" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-pro",
"messages": [{"role": "user", "content": "Say hello Gemini!"}]
}' | jq '.choices[0].message'
```
---
## 💻 Use from Your VMs
Now any VM (jellyfin, next, photos, haos, etc.) can use any model:
### Python Example - Switch Between Models
```python
import requests
import json
ENDPOINT = "http://192.168.88.27:4000/chat/completions"
AUTH = "Bearer litellm-local-key-change-in-production"
def ask_model(model, question):
response = requests.post(
ENDPOINT,
headers={"Authorization": AUTH, "Content-Type": "application/json"},
json={
"model": model,
"messages": [{"role": "user", "content": question}]
}
)
return response.json()['choices'][0]['message']['content']
# Use any model:
print("GPT-4:", ask_model("gpt-4", "What is AI?"))
print("Claude:", ask_model("claude-3-opus", "What is AI?"))
print("Gemini:", ask_model("gemini-pro", "What is AI?"))
```
### Bash Example - List All Available Models
```bash
curl http://192.168.88.27:4000/models \
-H "Authorization: Bearer litellm-local-key-change-in-production" | jq '.data[].id'
```
---
## 📋 Configuration Files Updated
All files are in `/opt/litellm/` on docker-server:
| File | Purpose |
|------|---------|
| `.env` | Your API keys (never commit to git) |
| `config/litellm_config.yaml` | Model definitions |
| `config/README.md` | Usage documentation |
| `docker-compose.yml` | Docker service config |
---
## 🔒 Security Reminders
⚠️ **IMPORTANT:**
- ✅ API keys are in `.env` (not in git) - Good practice!
- ✅ Each provider's key is separate - Can rotate independently
- ✅ Master key is configurable - Change from default in production
- 🔄 Git is initialized - Ready for version control when needed
### Never Do This:
```bash
# ❌ DON'T commit .env to git
git add .env
git commit -m "my keys"
# ❌ DON'T put API keys in litellm_config.yaml
# Use ${ENVIRONMENT_VAR} references instead
# ❌ DON'T expose port 4000 to the internet without HTTPS
# Use Caddy (already on your network) as reverse proxy
```
---
## 🎯 What's Ready
**LiteLLM Gateway**: Running on docker-server (192.168.88.27:4000)
**Configuration**: All 3 providers configured
**API Key Placeholders**: Ready for your actual keys
**Documentation**: Complete usage examples
**Git**: Initialized and ready for tracking changes
**Docker**: Compose file handles everything
---
## 📞 Troubleshooting
**"Model not available"**
```bash
# Check what models are actually loaded:
curl http://192.168.88.27:4000/models \
-H "Authorization: Bearer litellm-local-key-change-in-production" | jq
```
**"Invalid API key"**
- Verify key format matches provider (sk-* for OpenAI, sk-ant-* for Claude, etc.)
- Check `.env` file saved correctly
- Restart: `docker-compose down && docker-compose up -d`
**"Connection refused"**
- Ensure container is running: `docker ps | grep litellm`
- Check logs: `docker logs litellm`
- Verify port 4000 is accessible: `curl http://localhost:4000/models`
---
## 📚 Quick Links
- **OpenAI API**: https://platform.openai.com/api-keys
- **Anthropic Console**: https://console.anthropic.com/
- **Google AI Studio**: https://ai.google.dev/
- **LiteLLM Docs**: https://docs.litellm.ai/
- **Your Complete Guide**: See `litellm-complete-setup.md`
---
## ✨ Next Steps
1. **Get API keys** from the three providers
2. **Add keys to `.env`** on docker-server
3. **Restart LiteLLM**
4. **Test each model** with the curl examples above
5. **Update your VMs** to use the gateway endpoint
That's it! All three providers are now available through a single unified endpoint. 🚀