# 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 (7B–13B) 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)