KI lokal hosten: LLM auf eigenem Server

Aktualisiert: 8. Juli 2025

KI lokal hosten: LLM auf eigenem Server

Aufbauend auf dem "n8n selber hosten"-Guide, erweitern wir unsere n8n-Instanz heute um ein lokal gehostetes LLM. Dadurch erhalten wir die Möglichkeit, unsere KI-Agenten in n8n komplett lokal zu betreiben ohne Anbindung externer Dienste wie die GPT-Modelle von OpenAI.

Dazu nutzen wir in diesem Tutorial Ollama und das llama3.2 Modell. Für welches Modell ihr euch entscheidet oder ob ihr sogar mehrere installiert und testet, bleibt euch natürlich frei.

 

 

 

Dazu legen wir zunächst einen neuen User an und fügen ihn der sudo-Gruppe hinzu, um ihm Superuser-Rechte zu geben:

adduser ollama
usermod -aG sudo ollama

 

Wir wechseln auf den neuen User, legen ein Verzeichnis für ollama an und wechseln in selbiges:

su ollama
cd
mkdir ollama
cd ollama

 

Hier legen wir nun die docker-compose.yml wie folgt an:

version: '3.8'

services:
  ollama:
    image: ollama/ollama
    container_name: ollama
    networks:
      - n8n_net
    volumes:
      - ./ollama_data:/home/ollama/.ollama
    ports:
      - "11434:11434"
    command: ["serve"]
    restart: unless-stopped

networks:
  n8n_net:
    external: true

 

Anschließend erstellen wir das n8n_net mit folgendem Befehl:

sudo docker network create n8n_net

 

Nun wechseln wir zurück auf den root user, dann auf unseren im letzten Tutorial erstellten n8n-User und wechseln in das Verzeichnis unserer n8n und Caddy Docker-Installation:

exit
su n8n
cd
cd n8n-docker-caddy

 

In diesem Verzeichnis finden wir die docker-compose.yml vor, die wir zuvor erstellt hatten:

version: "3.7"

services:
  caddy:
    image: caddy:latest
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - caddy_data:/data
      - ${DATA_FOLDER}/caddy_config:/config
      - ${DATA_FOLDER}/caddy_config/Caddyfile:/etc/caddy/Caddyfile

  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: always
    ports:
      - 5678:5678
    environment:
      - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
      - N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
    volumes:
      - n8n_data:/home/node/.n8n
      - ${DATA_FOLDER}/local_files:/files
      
volumes:
  caddy_data:
    external: true
  n8n_data:
    external: true

 

Dieser fügen wir das zuvor erstellte Netzwerk hinzu, damit sich die beiden Dienste ebenfalls im Netzwerk befinden und wir von n8n aus auf die Ollama-API zugreifen können:

version: "3.7"

services:
  caddy:
    image: caddy:latest
    restart: unless-stopped
    networks:
      - n8n_net
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - caddy_data:/data
      - ${DATA_FOLDER}/caddy_config:/config
      - ${DATA_FOLDER}/caddy_config/Caddyfile:/etc/caddy/Caddyfile

  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: always
    networks:
      - n8n_net
    ports:
      - 5678:5678
    environment:
      - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
      - N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
    volumes:
      - n8n_data:/home/node/.n8n
      - ${DATA_FOLDER}/local_files:/files
      
volumes:
  caddy_data:
    external: true
  n8n_data:
    external: true

networks:
  n8n_net:
    external: true

 

Um die Änderungen zu übernehmen, starten wir n8n und Caddy einmal neu:

sudo docker-compose down
sudo docker-compose up -d

 

Wir wechseln wieder auf den User ollama und starten unter diesem ebenfalls den Ollama Docker-Container:

exit
su ollama
cd
cd ollama
sudo docker-compose up -d

 

Wir vergewissern uns noch einmal, dass die Container auch wirklich laufen und kopieren uns die ID unseres Ollama-Containers:

sudo docker container list

 

Wir schalten uns zur Installation unseres gewünschten Modells auf den Ollama-Container:

sudo docker exec -it [ID_DES_OLLAMA_CONTAINERS] /bin/bash

 

Dort installieren wir z.B. das Modell llama3.2 mit folgendem Befehl:

ollama pull llama3.2

 

Nun können wir in n8n final unsere OpenAI-Modell-Node gegen die Ollama-Modell-Node austauschen und die Verbindung zu Ollama mittels folgeder Base-URL herstellen:

http://ollama:11434

 

Nun haben wir die Möglichkeit, in der Ollama-Modell-Node in n8n das installierte Modell auszuwählen, damit dieses fortan für unseren KI-Agenten genutzt wird.

Philip Thomas

Philip Thomas

Indie Hacker & SaaS Gründer. Seit mittlerweile 15+ Jahren entwickle ich Websites, Webanwendungen und betreibe eigene Online-Projekte und SaaS-Lösungen.