AuthorBuddy/INSTALL.md

260 lines
5.8 KiB
Markdown
Raw Normal View History

2026-05-31 19:31:27 +02:00
# AuthorBuddy Installation auf Ubuntu VPS
## Voraussetzungen
- Ubuntu 22.04 oder 24.04 LTS
- Root-Zugriff oder `sudo`
- Mindestens 8 GB RAM, 4 Kerne (empfohlen für lokale LLMs)
- ca. 15 GB freier Speicher für Ollama + Modelle
---
## 1. System aktualisieren & Abhängigkeiten
```bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git ufw
```
## 2. .NET 10 SDK / Runtime installieren
```bash
# Microsoft-Paketquelle registrieren
sudo apt install -y wget
wget https://dot.net/v1/dotnet-install.sh -O /tmp/dotnet-install.sh
chmod +x /tmp/dotnet-install.sh
# .NET 10 SDK (zum Build)
sudo /tmp/dotnet-install.sh --channel 10.0 --install-dir /usr/share/dotnet
# Symlink für globale Nutzung
sudo ln -sf /usr/share/dotnet/dotnet /usr/local/bin/dotnet
# Prüfen
dotnet --version
# => 10.0.xxx
```
> Falls nur Runtime benötigt wird: `--channel 10.0 --runtime aspnetcore`
## 3. Ollama installieren
```bash
curl -fsSL https://ollama.com/install.sh | sh
# Dienst starten
sudo systemctl enable ollama
sudo systemctl start ollama
# Prüfen
ollama --version
# Port prüfen (default 11434)
ss -tlnp | grep 11434
```
### Modelle pullen
Für den Betrieb werden mindestens 2 Modelle empfohlen:
```bash
# Standard-Modell für Lektorat, Assistent, Stilanalyse
ollama pull llama3.2:3b
# Modell für Rechtschreibprüfung (kleiner, schneller)
ollama pull llama3.2:1b
```
Größere Modelle (7B13B) liefern bessere Texte. Beispiele:
```bash
ollama pull llama3.1:8b
ollama pull dolphin-mistral:7b
```
**Übersicht Speicherverbrauch:**
| Modell | RAM/VRAM |
|--------|----------|
| llama3.2:1b | ~1 GB |
| llama3.2:3b | ~2,5 GB |
| llama3.1:8b | ~5,5 GB |
| dolphin-mistral:7b | ~5 GB |
---
## 4. App bauen & deployen
```bash
# Quellcode auf den Server kopieren (z.B. via SCP oder Git)
git clone https://github.com/dein-repo/AuthorBuddy.Web /opt/AuthorBuddy.Web
# ODER: scp -r . ubuntu@deine-vps:/opt/AuthorBuddy.Web
cd /opt/AuthorBuddy.Web
# Restore & Build (Release)
dotnet restore
dotnet publish -c Release -o /opt/AuthorBuddy.Web/publish
# Daten-Verzeichnis für Projekte anlegen
mkdir -p /home/ubuntu/Documents/AuthorBuddy
```
### Datenbankpfad prüfen
LiteDB erzeugt die Datenbank `author_brain.db` standardmäßig im `bin/`-Verzeichnis.
Besser: Ein festes Verzeichnis setzen → Umgebungsvariable oder Code-Anpassung in `Program.cs`:
```csharp
// Program.cs (optional falls gewünscht)
var dbDir = "/opt/AuthorBuddy.Web/data";
Directory.CreateDirectory(dbDir);
var dbPath = Path.Combine(dbDir, "author_brain.db");
```
---
## 5. Systemd-Service einrichten
```bash
sudo nano /etc/systemd/system/authorbuddy.service
```
```ini
[Unit]
Description=AuthorBuddy Web
After=network.target ollama.service
[Service]
WorkingDirectory=/opt/AuthorBuddy.Web/publish
ExecStart=/usr/share/dotnet/dotnet /opt/AuthorBuddy.Web/publish/AuthorBuddy.Web.dll
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=authorbuddy
User=ubuntu
Environment=ASPNETCORE_URLS=http://localhost:5000
Environment=ASPNETCORE_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target
```
```bash
sudo systemctl daemon-reload
sudo systemctl enable authorbuddy
sudo systemctl start authorbuddy
# Status prüfen
sudo systemctl status authorbuddy
# Logs live
sudo journalctl -u authorbuddy -f
```
---
## 6. Reverse Proxy mit Nginx
```bash
sudo apt install -y nginx
```
`/etc/nginx/sites-available/authorbuddy`:
```nginx
server {
listen 80;
server_name deine-domain.de;
# (Optional: später mit Certbot auf HTTPS upgraden)
# return 301 https://$host$request_uri;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Blazor Server benötigt lange Timeouts für Streaming
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
}
}
```
```bash
sudo ln -s /etc/nginx/sites-available/authorbuddy /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
```
### HTTPS (Let's Encrypt)
```bash
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d deine-domain.de
```
---
## 7. Firewall
```bash
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
```
---
## 8. Einrichtung in der App
Nach dem ersten Start:
1. **Im Browser öffnen:** `http://deine-domain.de`
2. **Ersten Benutzer registrieren** (wird automatisch Admin)
3. **Settings → Ollama Server:** `http://localhost:11434`
4. **Test** Verbindung prüfen
5. **Modelle zuweisen:**
- RAG-Modell: `llama3.2:3b` (oder größer)
- Stil-Modell: `llama3.2:3b`
- Rechtschreib-Modell: `llama3.2:1b` (klein = schnell)
6. **Prompts prüfen** Standard-Prompts sind vorbelegt
---
## 9. Nützliche Befehle
| Aktion | Befehl |
|--------|--------|
| App neustarten | `sudo systemctl restart authorbuddy` |
| Logs ansehen | `sudo journalctl -u authorbuddy -f` |
| Ollama neustarten | `sudo systemctl restart ollama` |
| Verfügbare Modelle | `ollama list` |
| Modell laufend testen | `ollama run llama3.2:3b` |
| App stoppen | `sudo systemctl stop authorbuddy` |
---
## 10. Backup
```bash
# Datenbank + Projekte sichern
sudo tar czf /root/backup-authorbuddy-$(date +%Y%m%d).tar.gz \
/opt/AuthorBuddy.Web/data \
/home/ubuntu/Documents/AuthorBuddy
```
---
## Fehlerbehebung
- **502 Bad Gateway** → App-Logs prüfen: `journalctl -u authorbuddy -f`
- **Ollama nicht erreichbar** → `curl http://localhost:11434` testen
- **Port bereits belegt** → `ASPNETCORE_URLS` in der Service-Datei ändern
- **Blazor SignalR disconnect** → `proxy_read_timeout` in Nginx erhöhen (86400s)