Zum Hauptinhalt springen
S-EDV news
← Alle Anleitungen
📘 Anleitung Künstliche Intelligenz 29.08.2026 · 9 min Lesezeit

RAGFlow mit Docker installieren: Enterprise-RAG-Engine für eigene Wissensdatenbanken

RAGFlow ist eine vollständige Open-Source-RAG-Plattform mit 82.000+ GitHub-Stars, die OCR, intelligentes Chunking und visuelle Agenten-Workflows vereint. Per Docker Compose läuft die Enterprise-Engine auf jedem Linux-Server – ohne Programmierkenntnisse, aber mit echter Datensouveränität.

RAGFlow mit Docker installieren: Enterprise-RAG-Engine für eigene Wissensdatenbanken KI-generiert

Wer eigene Dokumente datenschutzkonform mit einem KI-Sprachmodell durchsuchbar machen möchte, braucht mehr als ein einfaches Chat-Interface. RAGFlow von Infiniflow geht hier deutlich weiter: Die Plattform kombiniert Deep-Document-Understanding (PDF, Word, Excel, Bilder mit OCR), template-basiertes Chunking, Hybrid-Search über Elasticsearch und einen grafischen Agenten-Workflow-Editor zu einer vollständigen RAG-Pipeline. Das Ergebnis lässt sich ohne eine einzige Zeile Code per Docker Compose auf einem eigenen Linux-Server deployen – on-premise, DSGVO-konform, und mit einer Web-Oberfläche, die auch Nicht-Entwickler im Team nutzen können. Mit über 82.500 GitHub-Stars gehört RAGFlow zu den meistgenutzten Open-Source-RAG-Projekten überhaupt.

Voraussetzungen

  1. Betriebssystem: Linux x86_64 (AMD64) – empfohlen Ubuntu 22.04/24.04 LTS oder Debian 12. ARM64 (Apple Silicon, Raspberry Pi) wird offiziell nicht unterstützt.
  2. Docker Engine >= 24.0.0 und Docker Compose >= v2.26.1 – Installationsanleitung: Docker und Docker Compose auf Linux installieren.
  3. RAM: mindestens 16 GB, empfohlen 32 GB für den produktiven Betrieb.
  4. CPU: mindestens 4 Kerne, empfohlen 8+ Kerne.
  5. Speicher: mindestens 50 GB frei (SSD empfohlen) – das RAGFlow-Image allein belegt ca. 7 GB entpackt, Elasticsearch und MinIO wachsen je nach Datenmenge erheblich.
  6. Internet: stabiler Zugang für den initialen Download (~7 GB Gesamtgröße).
  7. LLM-API-Key: z. B. von OpenAI, DeepSeek oder ein lokaler Ollama-Server – wird erst nach der Installation benötigt.
  8. Optional: einen Reverse Proxy (z. B. Traefik oder Nginx Proxy Manager) für HTTPS und eine eigene Domain.

Schritt 1: Kernel-Parameter setzen (Linux)

Elasticsearch benötigt einen erhöhten Wert für virtuelle Speicherbereiche. Ohne diese Anpassung bricht der Container beim Start sofort ab.

# Sofort wirksam (bis zum nächsten Reboot):
sudo sysctl -w vm.max_map_count=262144

# Dauerhaft persistent machen:
echo 'vm.max_map_count=262144' | sudo tee -a /etc/sysctl.conf

Verifizieren: sysctl vm.max_map_count muss vm.max_map_count = 262144 zurückgeben. Auf Windows-Hosts mit Docker Desktop ist dieser Schritt nicht nötig – Docker Desktop setzt den Wert automatisch in der internen VM.

Schritt 2: Repo klonen und Projektordner vorbereiten

RAGFlow wird ausschließlich über das offizielle GitHub-Repository bezogen. Die compose-Konfiguration besteht aus zwei verknüpften Dateien (docker-compose.yml + docker-compose-base.yml), daher muss das vollständige Repo geklont werden – einzelne Dateien aus Drittquellen führen zu Konfigurationsdrift.

# Repo klonen (ca. 50 MB, ohne Images):
git clone https://github.com/infiniflow/ragflow.git

# In das Docker-Verzeichnis wechseln:
cd ragflow/docker

# .env-Vorlage kopieren:
cp .env .env.backup

Verifizieren: ls ragflow/docker/ zeigt docker-compose.yml, docker-compose-base.yml, .env und weitere Konfigurationsdateien. Fehlen diese, den Clone wiederholen.

Schritt 3: Umgebungsvariablen in der .env anpassen

Die .env steuert alle sicherheitsrelevanten Einstellungen. Alle Standard-Passwörter lauten infini_rag_flow – wer diese unverändert lässt, öffnet Elasticsearch, MySQL, MinIO und Redis für jeden im Netzwerk. Passwörter vor dem ersten Start ändern.

# --- RAGFlow Version (aktuell stabil: v0.26.0) ---
RAGFLOW_IMAGE=infiniflow/ragflow:v0.26.0

# --- Dokumenten-Engine (Standard: Elasticsearch) ---
DOC_ENGINE=elasticsearch
STACK_VERSION=8.11.3

# --- Recheneinheit: cpu | gpu ---
DEVICE=cpu

# --- Sichere Passwörter setzen (PFLICHT!) ---
ELASTIC_PASSWORD=MeinSicheresESPasswort2026!
MYSQL_PASSWORD=MeinSicheresMySQL2026!
MINIO_USER=ragflow_admin
MINIO_PASSWORD=MeinSicheresMinIO2026!
REDIS_PASSWORD=MeinSicheresRedis2026!

# --- Zeitzone (DACH) ---
TZ=Europe/Berlin

# --- Ports (Standardwerte beibehalten oder anpassen) ---
SVR_HTTP_PORT=80
ES_PORT=1200
MINIO_PORT=9000
MINIO_CONSOLE_PORT=9001

# --- RAM-Limit pro Container (Standard 8 GB) ---
# Bei Parsing-Abbrüchen auf 16 GB erhöhen:
MEM_LIMIT=8073741824

# --- Upload-Limit (Standard 1 GB) ---
MAX_CONTENT_LENGTH=1073741824

# --- Nutzerregistrierung (nach Admin-Setup auf 0 setzen) ---
REGISTER_ENABLED=1

# --- HuggingFace Mirror (bei eingeschränktem Internetzugang) ---
# HF_ENDPOINT=https://hf-mirror.com

Verifizieren: grep -E 'PASSWORD|MINIO_PASSWORD|REDIS' .env darf keinen Wert infini_rag_flow mehr anzeigen. Der Befehl sollte nur die selbst gesetzten Passwörter ausgeben.

Schritt 4: Eckdaten im Überblick

Zur Orientierung: Image, Ports, Volumes und wichtige Umgebungsvariablen in der Zusammenfassung.

ParameterWertHinweis
Imageinfiniflow/ragflow:v0.26.0Nur x86_64; GPU über DEVICE=gpu
Port 80Web-UI + nginx-ProxyHauptzugang Browser
Port 9380REST-API (direkt)Ohne nginx-Proxy
Port 9382MCP-ProtokollKI-Agenten-Integration
Port 1200Elasticsearch HTTPExtern 1200 → intern 9200
Port 9000/9001MinIO S3-API / KonsoleObjektspeicher
Volume mysql_data/var/lib/mysqlNamed volume, PFLICHT persistieren
Volume es_data/usr/share/elasticsearch/dataKann sehr groß werden
Volume minio_data/dataAlle hochgeladenen Dokumente
MEM_LIMIT8073741824 (8 GB)Bei Parsing-Abbrüchen erhöhen
DOC_ENGINEelasticsearch (Standard)Alternativ: infinity, opensearch

Schritt 5: Stack starten

RAGFlow bringt alle abhängigen Dienste (MySQL, Elasticsearch, MinIO, Redis/Valkey) über die compose-Konfiguration direkt mit. Der erste Start dauert länger, weil alle Images heruntergeladen werden (~7 GB gesamt).

# Im Verzeichnis ragflow/docker/ ausführen:
docker compose up -d

# Echtzeit-Logs des RAGFlow-Kerns beobachten:
docker compose logs -f ragflow

RAGFlow wartet intern auf Elasticsearch und MySQL (Health-Checks). Die vollständige Initialisierung dauert typischerweise 2–5 Minuten. Der Stack ist betriebsbereit, wenn in den Logs server is running erscheint.

Verifizieren:

docker compose ps

Erwartete Ausgabe – alle Container müssen im Status Up sein, Elasticsearch und MySQL zusätzlich (healthy):

NAME                IMAGE                           STATUS
ragflow-cpu         infiniflow/ragflow:v0.26.0      Up (healthy)
ragflow-es          elasticsearch:8.11.3            Up (healthy)
ragflow-mysql       mysql:8.0.39                    Up (healthy)
ragflow-minio       minio/minio:latest              Up
ragflow-redis       valkey/valkey:8                 Up

API-Erreichbarkeit prüfen:

curl -s http://localhost:9380/health
# Erwartete Ausgabe: {"code":0} oder {"status":"ok"}

Schritt 6: Erst-Einrichtung im Browser

RAGFlow hat keinen vordefinierten Admin-Account. Beim ersten Öffnen erscheint ein Registrierungsformular – der erste registrierte Nutzer wird automatisch Administrator.

  1. Browser öffnen: http://<SERVER-IP> (Port 80 ist Standard)
  2. Registrierungsformular ausfüllen: E-Mail, Passwort – dieser Account wird Admin
  3. Nach dem Login: Settings › Model Providers aufrufen
  4. LLM-Anbieter wählen (z. B. OpenAI, DeepSeek) und API-Key eingeben
  5. Für lokale Modelle (Ollama, LM Studio): Basis-URL http://host.docker.internal:<PORT> eintragen
  6. Nach der Einrichtung in der .env REGISTER_ENABLED=0 setzen und Stack neu starten

Verifizieren: Nach dem Login ist das RAGFlow-Dashboard sichtbar. Unter Settings › Model Providers sollte der konfigurierte Anbieter mit grünem Status erscheinen. Eine Test-Abfrage in einem leeren Workspace bestätigt die LLM-Verbindung.

Schritt 7: Wissensdatenbank anlegen und Dokumente hochladen

Das Herzstück von RAGFlow sind die Knowledge Bases. Jede Wissensdatenbank hat eine eigene Chunking-Strategie, die auf den Dokumenttyp abgestimmt werden kann.

  1. Im Dashboard Knowledge Base aufrufen und „Create Knowledge Base" klicken
  2. Name, Beschreibung und Chunk Method wählen (z. B. „General", „Q&A", „Paper", „Manual" je nach Dokumenttyp)
  3. Dokumente hochladen (PDF, Word, Excel, PowerPoint, TXT, HTML, Markdown, Bilder mit OCR) – bis zu 1 GB pro Datei, 32 Dateien pro Batch
  4. Parsing starten – RAGFlow verarbeitet die Dokumente mit Deep-Document-Understanding (OCR, Tabellen- und Bildanalyse)
  5. Nach Abschluss des Parsings steht die Wissensdatenbank für Chat und Agenten-Workflows bereit

Verifizieren: Im Dokument-Status wechselt die Anzeige von „Parsing" auf „Done". In den Logs ist kein Fehler zu sehen: docker compose logs ragflow | grep -i error sollte leer bleiben. Eine Testfrage im Chat über die Wissensdatenbank liefert eine Antwort mit Quellangaben.

Schritt 8: Updates und Backup

RAGFlow entwickelt sich schnell. Vor jedem Update eine Datensicherung anlegen – alle kritischen Daten liegen in den Named Volumes.

# Backup der Named Volumes (vor Update empfohlen):
docker run --rm \
  -v ragflow_mysql_data:/source:ro \
  -v $(pwd)/backup:/backup \
  alpine tar czf /backup/mysql_data_$(date +%Y%m%d).tar.gz -C /source .

# Update: neue Image-Version in .env setzen, dann:
docker compose pull
docker compose up -d

# Logs nach Update prüfen:
docker compose logs -f ragflow

Eine systematische Backup-Strategie für Docker-Volumes: Docker Compose absichern: Secrets, Healthchecks und Non-Root.

Verifizieren: Nach dem Update docker compose ps prüfen – alle Container im Status Up (healthy). Die Web-Oberfläche unter Port 80 muss erreichbar sein und die neue Version unter Settings › System anzeigen.

Troubleshooting / Typische Fehler

  1. „max virtual memory areas vm.max_map_count [65530] is too low" (Elasticsearch startet nicht): vm.max_map_count nicht gesetzt oder Reboot hat ihn zurückgesetzt. Fix: sudo sysctl -w vm.max_map_count=262144 – dauerhaft in /etc/sysctl.conf eintragen.
  2. Browser zeigt „network abnormal" direkt nach dem Start: RAGFlow ist noch nicht vollständig initialisiert. Fix: docker compose logs -f ragflow beobachten, bis server is running erscheint – erst dann den Browser öffnen.
  3. Parsing bleibt bei ~90% stehen oder bricht ab: MEM_LIMIT in der .env ist zu niedrig. Fix: auf 16073741824 (16 GB) erhöhen, dann docker compose stop && docker compose up -d.
  4. Elasticsearch-Container Status „unhealthy" trotz laufendem Container: Häufig falsches ELASTIC_PASSWORD oder fehlendes vm.max_map_count. Diagnose: docker compose logs ragflow-es.
  5. „exec format error" beim Starten (ARM64/Apple Silicon): Es gibt keine offiziellen ARM64-Images. Das Image muss aus dem Quellcode selbst gebaut werden (ragflow/docs/dev/build_docker_image).
  6. „address already in use" für Port 80: Ein anderer Webserver belegt Port 80. Fix: SVR_HTTP_PORT=8080 in der .env setzen und docker compose up -d neu starten.
  7. HuggingFace-Embedding-Modelle werden nicht geladen: Eingeschränkter Internetzugang. Fix: HF_ENDPOINT=https://hf-mirror.com in der .env setzen, Dienste neu starten.
  8. nginx-Fehler „ragflow.conf.python not found": Einzelne Dateien wurden kopiert statt das komplette Repo zu klonen. Fix: vollständigen git clone durchführen.
  9. GPU wird nicht erkannt (DEVICE=gpu): nvidia-container-toolkit muss auf dem Host installiert sein und Docker für GPU-Zugriff konfiguriert werden: nvidia-ctk runtime configure --runtime=docker. Das GPU-compose-File wird vom RAGFlow-Team als „use at your own risk" eingestuft.

Häufige Fragen

Wie lautet das Standard-Login nach der Installation?

RAGFlow hat keinen vordefinierten Admin-Account. Beim ersten Aufruf von http://<HOST-IP> erscheint ein Registrierungsformular. Der erste registrierte Nutzer wird automatisch Administrator. Danach empfiehlt sich REGISTER_ENABLED=0 in der .env, um weitere Selbst-Registrierungen zu verhindern.

Wie ändere ich den Web-Port von 80 auf einen anderen Port?

In docker/. env den Wert SVR_HTTP_PORT=8080 (oder einen anderen freien Port) setzen. Anschließend docker compose stop && docker compose up -d. Der Zugriff erfolgt dann über http://<HOST-IP>:8080.

Wie verbinde ich RAGFlow mit einem lokalen Ollama-Modell?

Im Web-UI unter Settings › Model Providers den Anbieter „Ollama" auswählen und die Basis-URL http://host.docker.internal:11434 eintragen (der spezielle DNS-Name host.docker.internal zeigt auf den Docker-Host). Für LM Studio oder andere lokale Server die entsprechende Port-Nummer anpassen. Eine ausführliche Anleitung zu lokalen LLM-Modellen: Ollama und Open WebUI mit Docker – eigenes lokales KI-Sprachmodell ohne Cloud.

Kann ich die Dokumenten-Engine von Elasticsearch auf Infinity wechseln?

Ja: DOC_ENGINE=infinity in der .env setzen, dann docker compose down && docker compose up -d. Achtung: Bestehende Elasticsearch-Dokumente werden dabei nicht migriert. Infinity ist ressourcenschonender, ein offizieller ARM64-Support fehlt aber auch dort.

Wie groß wird die Installation ungefähr?

Das RAGFlow-Image belegt ca. 7 GB entpackt. Elasticsearch-Daten und MinIO-Objekte wachsen je nach Dokumentenmenge. Für eine initiale Installation ohne umfangreiche Dokumente sollten 50 GB freier SSD-Speicher als Minimum eingeplant werden.

Welche Dokumentformate werden unterstützt?

PDF, Word (.docx), Excel (.xlsx), PowerPoint (.pptx), TXT, HTML, Markdown, sowie Bilder mit OCR-Analyse. RAGFlow analysiert dabei Tabellen und Layoutstrukturen mit Deep-Document-Understanding – besonders bei komplexen PDFs ein deutlicher Vorteil gegenüber einfachen Text-Splittern.

Was ist der MCP-Endpunkt auf Port 9382?

RAGFlow implementiert das Model Context Protocol (MCP), über das andere KI-Agenten und Anwendungen die RAGFlow-Wissensdatenbanken als standardisiertes Tool einbinden können. Port 9382 sollte nur intern oder über einen gesicherten Tunnel erreichbar sein.

Fazit

RAGFlow ist derzeit eine der vollständigsten selbstgehosteten RAG-Plattformen: Der visuelle Pipeline-Editor, die MCP-Unterstützung, das Deep-Document-Understanding und die breite LLM-Kompatibilität machen es zu einer ernsthaften Enterprise-Alternative zu proprietären Lösungen. Die Docker-Compose-Installation ist mit dem offiziellen Repo unkompliziert – solange die Voraussetzungen stimmen: x86_64-Linux, mindestens 16 GB RAM, vm.max_map_count korrekt gesetzt und eigene Passwörter in der .env. Der erhöhte Ressourcenverbrauch durch Elasticsearch, MySQL und MinIO ist der Preis für die volle Funktionalität. Wer ein schlankes RAG-System ohne eigenen Vektor-Index sucht, findet in AnythingLLM eine leichtgewichtigere Alternative. Für tiefergehendes Verständnis der RAG-Grundlagen empfiehlt sich ein Blick in RAG produktiv betreiben: Chunking, Hybrid-Search, Reranking und Antwortqualität messen.

Weiterführende Anleitungen und Quellen

  1. Docker und Docker Compose auf Linux installieren (Ubuntu/Debian): die Self-Hosting-Grundlage
  2. Ollama und Open WebUI mit Docker: eigenes lokales KI-Sprachmodell ohne Cloud betreiben
  3. AnythingLLM installieren (Docker): Lokale KI-Zentrale mit RAG-Workspaces und Ollama
  4. RAG produktiv betreiben: Chunking, Hybrid-Search, Reranking und Antwortqualität messen
  5. Docker Compose absichern: Secrets, Healthchecks, Non-Root und Read-Only für den Produktivbetrieb
  6. Traefik als Docker-Reverse-Proxy mit automatischem HTTPS einrichten

Offizielle Quellen: RAGFlow GitHub Repository (infiniflow/ragflow) – README, docker-compose.yml, .env-Referenz. RAGFlow Offizielle Dokumentation – Quickstart, Konfiguration, FAQ. RAGFlow auf Docker Hub – Image-Tags und Versionsübersicht.