Add readme.md
This commit is contained in:
198
readme.md
Normal file
198
readme.md
Normal file
@@ -0,0 +1,198 @@
|
||||
# LLM-Suite Installatiehandleiding (Whisper, Piper, Ollama, ha-llm-bridge, LiteLLM)
|
||||
|
||||
Deze handleiding beschrijft stap-voor-stap hoe je de volledige LLM-suite op een nieuwe server kunt installeren — inclusief NVIDIA GPU-ondersteuning, Docker, configuratiebestanden en koppeling met Home Assistant.
|
||||
|
||||
---
|
||||
|
||||
## 0. Systeempreparatie (Ubuntu 22.04/24.04 met NVIDIA GPU)
|
||||
|
||||
### Updates en tools
|
||||
```bash
|
||||
sudo apt update && sudo apt -y upgrade
|
||||
sudo apt -y install curl ca-certificates gnupg lsb-release git
|
||||
```
|
||||
|
||||
### NVIDIA-driver installeren
|
||||
```bash
|
||||
sudo ubuntu-drivers install
|
||||
sudo reboot
|
||||
```
|
||||
|
||||
Na herstart:
|
||||
```bash
|
||||
nvidia-smi
|
||||
```
|
||||
|
||||
### Docker installeren
|
||||
```bash
|
||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg
|
||||
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||
|
||||
sudo apt update
|
||||
sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
||||
sudo usermod -aG docker $USER
|
||||
newgrp docker
|
||||
```
|
||||
|
||||
### NVIDIA Container Toolkit
|
||||
```bash
|
||||
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit.gpg && curl -fsSL https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
|
||||
|
||||
sudo apt update
|
||||
sudo apt -y install nvidia-container-toolkit
|
||||
sudo nvidia-ctk runtime configure --runtime=docker
|
||||
sudo systemctl restart docker
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 1. Mappenstructuur & .env-bestand
|
||||
|
||||
```bash
|
||||
sudo mkdir -p /docker/appdata/llm-suite/{wyoming-whisper,wyoming-piper,ollama,ha-llm-bridge,litellm}
|
||||
sudo mkdir -p /docker/appdata/llm-suite/ha-llm-bridge/app
|
||||
sudo touch /docker/appdata/llm-suite/ha-llm-bridge/requirements.txt
|
||||
sudo chown -R $USER: /docker/appdata
|
||||
```
|
||||
|
||||
Maak het **.env** bestand:
|
||||
```bash
|
||||
cat > /docker/appdata/llm-suite/.env << 'EOF'
|
||||
HA_WEBHOOK_URL=https://jouw-ha-domein.example/api/webhook/ha-llm-bridge
|
||||
LITELLM_MASTER_KEY=supergeheimesleutel
|
||||
EOF
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. Docker Compose-bestand
|
||||
|
||||
Sla dit bestand op als `/docker/appdata/llm-suite/docker-compose.yml`:
|
||||
|
||||
```yaml
|
||||
<-- volledige YAML zoals in vorige bericht (om redenen van lengte niet herhaald) -->
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. ha-llm-bridge bestanden
|
||||
|
||||
### requirements.txt
|
||||
```txt
|
||||
fastapi==0.115.5
|
||||
uvicorn[standard]==0.32.0
|
||||
httpx==0.27.2
|
||||
pydantic==2.9.2
|
||||
```
|
||||
|
||||
### main.py
|
||||
```python
|
||||
import os
|
||||
from fastapi import FastAPI
|
||||
from pydantic import BaseModel
|
||||
|
||||
app = FastAPI()
|
||||
|
||||
class EchoIn(BaseModel):
|
||||
text: str
|
||||
|
||||
@app.get("/healthz")
|
||||
def health():
|
||||
return {"status": "ok"}
|
||||
|
||||
@app.post("/echo")
|
||||
def echo(payload: EchoIn):
|
||||
return {"ok": True, "echo": payload.text, "model": os.getenv("OLLAMA_MODEL", "unset")}
|
||||
```
|
||||
|
||||
### system_prompt.txt
|
||||
```txt
|
||||
Je bent een behulpzame Nederlandstalige assistent. Antwoord kort, feitelijk en bruikbaar voor Home Assistant automations.
|
||||
```
|
||||
|
||||
### entities.json
|
||||
```json
|
||||
[
|
||||
"light.woonkamer",
|
||||
"switch.keuken",
|
||||
"media_player.tv",
|
||||
"climate.thermostaat"
|
||||
]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. LiteLLM Configuratie
|
||||
|
||||
Maak `/docker/appdata/llm-suite/litellm/config.yaml`:
|
||||
|
||||
```yaml
|
||||
model_list:
|
||||
- model_name: qwen2-local
|
||||
litellm_params:
|
||||
model: ollama/qwen2:7b-instruct-q4_K_M
|
||||
api_base: http://ollama:11434
|
||||
timeout: 120
|
||||
|
||||
general_settings:
|
||||
master_key: ${LITELLM_MASTER_KEY}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. Opstarten
|
||||
|
||||
```bash
|
||||
cd /docker/appdata/llm-suite
|
||||
docker compose -f docker-compose.yml up -d
|
||||
```
|
||||
|
||||
Model downloaden:
|
||||
```bash
|
||||
docker exec -it ollama ollama pull qwen2:7b-instruct-q4_K_M
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. Health Checks
|
||||
|
||||
```bash
|
||||
curl -s http://localhost:11434/api/tags | jq
|
||||
curl -s -H "Authorization: Bearer supergeheimesleutel" http://localhost:4000/v1/models | jq
|
||||
curl -s http://localhost:8082/healthz
|
||||
curl -s -X POST http://localhost:8082/echo -H 'Content-Type: application/json' -d '{"text":"ping"}'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. Home Assistant Integratie
|
||||
|
||||
- STT: Wyoming STT → `dockerhost:10300`
|
||||
- TTS: Wyoming TTS → `dockerhost:10200`
|
||||
- LLM (OpenAI compatible):
|
||||
- Base URL: `http://dockerhost:4000/v1`
|
||||
- API Key: `supergeheimesleutel`
|
||||
- Model: `qwen2-local`
|
||||
|
||||
---
|
||||
|
||||
## 8. Beheer en Upgrades
|
||||
|
||||
```bash
|
||||
docker compose ps
|
||||
docker logs -f ollama
|
||||
docker compose pull && docker compose up -d
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 9. Troubleshooting
|
||||
|
||||
- GPU niet zichtbaar → `nvidia-smi` en runtime check.
|
||||
- Model ontbreekt → juiste tag downloaden.
|
||||
- Port conflicts → poort aanpassen in Compose.
|
||||
- HA kan niet verbinden → test met curl vanaf HA host.
|
||||
|
||||
---
|
||||
|
||||
© 2025 Marco Voskuil — GPEU / voskuil.cloud
|
||||
Reference in New Issue
Block a user