# KI-Server Einrichtung - Schritt-für-Schritt Anleitung
*(Hintergrund und Lizenz im [ebildungslabor](https://ebildungslabor.de/blog/so-gestaltest-du-dir-einen-eigenen-ki-server/))*
## Schritt 1: Server mieten und einrichten
**Vorbereitung:**
- Gehe zu https://console.hetzner.cloud/
- Richte einen CPX51-Server ein:
- Standort: z.B. Nürnberg
- Betriebssystem: Ubuntu 24.04
- Rest auf Standard lassen
- SSH und Firewall werden später eingerichtet
- Projekt benennen: z.B. "ki-umgebung"
**Terminal-Befehle (nacheinander eingeben):**
1. Mit Server verbinden (ersetze mit deinen Serverziffern):
```bash
ssh root@DEINE_SERVERZIFFERN
```
*Dann bestätigen, dass du dich einloggen willst. Dann Passwort eingeben und Enter. Es sollte so etwas erscheinen wie: `root@ki-umgebung:~#`. Wenn zunächst 'invalid password' erscheint, versuche es nochmals - oft klappt es erst im dritten Anlauf.*
2. Updates installieren (dauert ein paar Minuten):
```bash
apt update && apt upgrade -y
```
*Es wird viel Text durchlaufen und es braucht ein paar Minuten.*
3. Server neu starten:
```bash
reboot
```
*Das braucht ein paar Minuten.*
4. Nach dem Neustart erneut anmelden (wie in Schritt 1):
```bash
ssh root@DEINE_SERVERZIFFERN
```
## Schritt 2: Docker installieren
1. Docker installieren:
```bash
curl -fsSL https://get.docker.com -o get-docker.sh && sudo sh get-docker.sh
```
2. Installation testen:
```bash
docker --version
```
*Wenn Docker installiert ist, wird dir die Versionsnummer angezeigt (z.B. 28.30)*
## Schritt 3: KI-Umgebung einrichten
1. Docker-Compose Datei erstellen:
```bash
nano docker-compose.yml
```
2. Folgenden Inhalt komplett eingeben (viel Text!):
```yaml
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
ports:
- "11434:11434"
volumes:
- ollama_data:/root/.ollama
restart: unless-stopped
environment:
- OLLAMA_HOST=0.0.0.0:11434
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
ports:
- "3000:8080"
volumes:
- openwebui_data:/app/backend/data
environment:
- OLLAMA_BASE_URL=http://ollama:11434
- WEBUI_AUTH=True
depends_on:
- ollama
restart: unless-stopped
extra_hosts:
- host.docker.internal:host-gateway
volumes:
ollama_data:
openwebui_data:
```
3. Datei speichern und schließen:
- Drücke `Strg+X` zum Beenden
- Dann `Y` zum Speichern
- Dann `Enter`
4. Services starten:
```bash
docker compose up -d
```
*Ollama und Open WebUI werden installiert.*
5. Status prüfen:
```bash
docker compose ps
```
*Hier kannst du schauen, ob alles läuft.*
Danach kannst du deinen Server im Browser öffnen. = http://(deineserverziffern)
Dort kannst du dich dann als Admin bei Ollama registrieren, ein erstes KI-Nodell installieren und dich in einen Chat begeben.
## Schritt 4: Server absichern
1. Firewall aktivieren:
```bash
ufw enable
```
2. SSH-Zugriff erlauben:
```bash
ufw allow ssh
```
3. Open WebUI Port freigeben:
```bash
ufw allow 3000/tcp
```
*Wir erlauben nur den Zugriff über SSH und geben den Port für Open WebUI frei.*
4. Automatische Updates installieren:
```bash
apt install unattended-upgrades -y
```
5. Automatische Updates konfigurieren:
```bash
dpkg-reconfigure -plow unattended-upgrades
```
*Hier festlegen, dass Sicherheitsupdates automatisch installiert werden.*
6. Status prüfen:
```bash
systemctl status unattended-upgrades
```
7. Schutz gegen Angriffe installieren:
```bash
apt install fail2ban -y
```
8. Fail2ban aktivieren:
```bash
systemctl enable fail2ban
systemctl start fail2ban
```
*Falls deine KI-Installation danach langsam läuft, könntest du den Docker-Container mit `docker compose restart` nochmals neu starten.*
## Schritt 5: Verbindung zu proprietären Modellen
**Browser-Schritte:**
1. Account bei https://openrouter.ai erstellen
2. Ca. 5 Euro einzahlen (reichen für den Anfang super gut aus, du kannst dir auch eine Mail-Erinnerung einrichten, wenn der Betrag aufgebraucht ist.)
3. Einen Key erstellen - **und direkt kopieren!**
4. In Open WebUI gehen:
- Admin-Panel suchen
- Nach "Verbindungen" suchen
- Neue Verbindung hinzufügen:
- **Name:** OpenRouter
- **API Base URL:** https://openrouter.ai/api/v1
- **API Key:** [dein zuvor erhaltener OpenRouter API-Key]
## Schritt 6: Domain und SSL einrichten
**Domain registrieren:**
- Bei namecheap.com oder anderem Anbieter Domain **ohne weitere Extras** kaufen
- Zu Advanced DNS gehen, zwei Records einrichten. **Nach der Eingabe speichern!**
**Record 1:**
- Type: A Record
- Host: @
- Value: DEINE_SERVERZIFFERN
- TTL: Automatic (oder 300 oder 1800)
**Record 2:**
- Type: A Record
- Host: www
- Value: DEINE_SERVERZIFFERN
- TTL: Automatic
**Nginx installieren:**
1. Nginx installieren:
```bash
apt install nginx -y
```
2. Nginx aktivieren:
```bash
systemctl enable nginx
```
3. Nginx starten:
```bash
systemctl start nginx
```
4. HTTP-Port freigeben:
```bash
ufw allow 80/tcp
```
5. HTTPS-Port freigeben:
```bash
ufw allow 443/tcp
```
6. Firewall neu laden:
```bash
ufw reload
```
7. Nginx-Konfiguration bearbeiten:
```bash
nano /etc/nginx/sites-available/default
```
8. Inhalt **komplett ersetzen** mit (ersetze deine-domain.de durch deine echte Domain):
```nginx
server {
listen 80;
server_name deine-domain.de www.deine-domain.de;
location / {
proxy_pass http://localhost:3000;
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;
proxy_cache_bypass $http_upgrade;
}
}
```
9. Speichern und schließen:
- Drücke `Strg+X`
- Dann `Y` für Ja
- Dann `Enter`
10. Konfiguration testen:
```bash
nginx -t
```
11. Nginx neu laden:
```bash
systemctl reload nginx
```
12. Certbot installieren:
```bash
apt install certbot python3-certbot-nginx -y
```
13. SSL-Zertifikat besorgen (Domain anpassen!):
```bash
certbot --nginx -d deine-domain.de -d www.deine-domain.de
```
*Du wirst nach einer Mailadresse gefragt, um benachrichtigt zu werden, wenn das Zertifikat abläuft. Certbot wird automatisch deine nginx-Konfiguration für HTTPS erweitern.*
14. Abschließend testen:
```bash
nginx -t
```
15. Nginx neu laden:
```bash
systemctl reload nginx
```
**Wenn du jetzt den Cache im Browser leerst, solltest du über deinen Domainnamen über eine sichere Verbindung zu deinem KI-Server herstellen können.**
## Schritt 7: Wissensdatenbank nutzen
**Browser-Schritte:**
1. In Open WebUI den "Arbeitsbereich" öffnen
2. Unter "Wissen" spezifische Bereiche einrichten
3. Ein oder mehrere Dateien in jeden Bereich hochladen
4. In Prompts mit Hashtag auf Wissensbereiche zugreifen
- Wenn du einen Prompt eingibst und einen Hashtag eingibst, werden dir die Wissensbereiche und auch die einzelnen Dateien angezeigt
- Du kannst also immer gezielt überlegen, auf was du jeweils Bezug nehmen willst bei deinem Prompt
**Viel Freude mit deinem eigenen KI-Server 🙂**