KI-Station im Homelab: Chat & Bilder in einer WebUI (Ollama + Open WebUI auf Proxmox, mit sicherem Remote-Zugriff über WireGuard)

Inhaltsverzeichnis

Immer mehr Menschen betreiben Künstliche Intelligenz im eigenen Homelab – lokal, datenschutzfreundlich und unabhängig von Cloud-Diensten. In diesem Beitrag zeige ich dir, wie du mit Proxmox, Docker, Ollama und Open WebUI eine leistungsfähige, lokal betriebene KI-Plattform für Chat und Bildgenerierung aufsetzt. Zusätzlich binden wir WireGuard ein, um von unterwegs sicher zugreifen zu können.

Was du brauchst und warum: Hardware, VM, Netzwerk, Sicherheit

Die virtuelle Maschine basiert auf Debian oder Ubuntu, läuft auf einer separaten SSD und nutzt Docker + Compose für Ollama und Open WebUI. Warum das? Weil wir maximale Kontrolle, einfache Updates und Isolierung der Dienste wollen. WireGuard ergänzt das Ganze als VPN-Lösung für sicheren Remote-Zugriff.

Grob-Architektur des AI-Setups

Glossar: Begriffe wie VM, Container, Image, Volume, Port, Docker, Compose, VPN und WireGuard werden im Beitrag erklärt und praxisnah eingesetzt.

Wahl des Betriebssystems: Debian 12 und Ubuntu 22.04 LTS sind stabil, beliebt und gut dokumentiert. Fedora Server und Rocky Linux sind Alternativen, aber für unser Setup weniger verbreitet. Debian ist hier der Favorit.

VM oder LXC? KI-Anwendungen laufen stabiler in VMs, da sie volle Isolierung und eigenen Kernel benötigen. LXC ist ressourcenschonender, aber bei Docker + KI-Workloads nicht immer kompatibel. Für dieses Projekt setzen wir bewusst auf eine VM.

Ressourcenwahl:

  • CPU: 4–6 Kerne – für schnelle Verarbeitung von Text & Bild
  • RAM: 16 GB – Docker, Ollama und Stable Diffusion brauchen Reserven
  • Disk: 120 GB auf 500-GB-SSD – Modelle + Bilder füllen schnell Speicher
  • Netzwerk: vmbr0 – eigene IP für die VM

Die 500-GB-SSD richtig einbinden

1. Laufwerk identifizieren:

lsblk

2. Proxmox UI: Disks → Directory → „Create: Directory“, Filesystem ext4, z. B. local-500gb

3. Bei VM-Erstellung: Speicherziel auf local-500gb setzen, 120 GB Disk zuweisen

Docker-Setup Schritt für Schritt

1. VM erstellen: ai-webui, 4–6 Kerne, 16 GB RAM, Netzwerk vmbr0

2. Basis-Setup:

# Paketlisten aktualisieren und Systempakete upgraden
sudo apt update && sudo apt upgrade -y

# Docker, Docker Compose und Git installieren
sudo apt install -y docker.io docker-compose git

# Docker-Dienst aktivieren und sofort starten
sudo systemctl enable --now docker

3. Projektverzeichnis anlegen:

# Projektverzeichnis erstellen und hinein wechseln
mkdir ~/ai-webui && cd ~/ai-webui

4. docker-compose.yml erstellen:

# Version des Docker-Compose-Formats
version: "3.9"

services:
  ollama:
    # Text-KI-Container (Ollama) starten
    image: ollama/ollama:latest

    # Container automatisch neu starten, außer bei manuellem Stopp
    restart: unless-stopped

    # Portweiterleitung: Host-Port 11434 → Container-Port 11434
    ports:
      - "11434:11434"

    # Persistenter Speicherort für heruntergeladene Modelle
    volumes:
      - ollama:/root/.ollama

  open-webui:
    # WebUI-Container (Text & Bild) starten
    image: ghcr.io/open-webui/open-webui:main

    # Auch hier automatischer Neustart
    restart: unless-stopped

    # Portweiterleitung: Host-Port 3000 → Container-Port 8080
    ports:
      - "3000:8080"

    # Umgebungsvariablen für Open WebUI
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434   # Verbindung zu Ollama
      - ENABLE_IMAGE_GENERATION=true          # Bildgenerierung aktivieren

    # Persistente Einstellungen der Weboberfläche speichern
    volumes:
      - webui:/app/backend/data

    # Abhängigkeit: erst starten, wenn Ollama läuft
    depends_on:
      - ollama

# Definition der Volumes
volumes:
  ollama:
  webui:

5. Container starten:

# Alle Container im Hintergrund starten
docker compose up -d

6. Modelle laden:

# Modell "mistral" in laufendem Ollama-Container laden
docker exec -it $(docker ps -qf "name=ollama") ollama pull mistral

# Modell "llama3" ebenfalls laden
docker exec -it $(docker ps -qf "name=ollama") ollama pull llama3

WireGuard für sicheren Remote-Zugriff

WireGuard verschlüsselt den Datenverkehr zwischen deinem Gerät und der Fritzbox. Der Vorteil: Du kannst von unterwegs auf das Webinterface (`http://<VM-IP>:3000`) zugreifen, als wärst du daheim. Dein Handy bekommt quasi eine LAN-IP.

Sicherheitsvorteile:

  • Moderne Verschlüsselung (Curve25519)
  • Minimale Angriffsfläche
  • Kein Port-Forwarding nötig

Typisches Setup: WireGuard auf Fritzbox aktivieren → Config exportieren → App auf Smartphone importieren → Verbindung testen → fertig.

Fazit

Mit Ollama, Open WebUI, Docker und WireGuard baust du dir eine leistungsfähige, datenschutzfreundliche KI-Station im Homelab. Proxmox und deine 500-GB-SSD sorgen für Stabilität und Skalierbarkeit. So hast du jederzeit und von überall Zugriff auf deine eigenen KI-Modelle – ganz ohne Cloud.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Andreas Moor
Andreas Moor
@blog@andreas-moor.de

Hallo Fediverse, ich bin Andy!

Hier und auf meiner Website findest du mein akkumuliertes Linux-Sysadmin-Wissen, meine kleinen und größeren Projekte und die Tools, die ich nutze.

Viel Spaß beim stöbern, lesen und lernen! 🧑‍💻

236 Beiträge
16 Folgende