SSD Nodes Learn Hosting plans →
Anleitungen Matt ConnorVon Matt Connor · Aktualisiert 2026-08-28

Dify mit Docker Compose auf einem VPS selbst hosten

Dify startet mit sechs Containern: Planen Sie 4 GB RAM ein, ersetzen Sie alle Secrets in .env und erstellen Sie /install, bevor es ein Fremder tut.

Was Dify ist und wofür Sie sich zum Betrieb anmelden

Dify ist eine selbst hostbare Plattform zum Erstellen von Anwendungen auf Basis großer Sprachmodelle. Sie erhalten eine Weboberfläche zum Entwickeln von Chat-Anwendungen, Agenten und Retrieval-Pipelines, eine API für den Aufruf aus Ihrem eigenen Code sowie eine zentrale Verwaltung für Prompts, Datasets und Model Keys. Das ist ein Werkzeug, das ein kleines Team aufsetzt, damit alle auf einer gemeinsamen privaten Basis arbeiten, anstatt API Keys über verschiedene Skripte zu verteilen. Wenn Begriffe wie Agent, Tool Call und Retrieval-Pipeline noch unklar sind, hilft es, diese Konzepte zunächst von Grund auf durchzuarbeiten. Danach wirken die Builder-Oberflächen von Dify wie vertraute Bedienelemente und nicht wie eine Wand aus unbeschrifteten Schaltern.

Wenn Sie den Dienst selbst betreiben, müssen mehrere Komponenten zusammenarbeiten. Dify wird als Gruppe von Docker-Containern bereitgestellt: einem API-Server, einem Hintergrund-Worker, einem Web-Frontend, einer Postgres-Datenbank, einem Redis-Cache und einer Vektordatenbank. Docker Compose verbindet diese Komponenten miteinander. Das ist mehr als eine einzelne Binärdatei, aber Compose übernimmt die Verbindungen. Ein VPS mit ein paar Gigabyte zusätzlichem Arbeitsspeicher kann Dify problemlos ausführen. Wenn auf diesem VPS zusätzlich andere Dienste laufen sollen, dimensionieren Sie ihn anhand gemessener Werte und nicht anhand beworbener Mindestanforderungen. Der tatsächliche RAM-Bedarf von PhotoPrism und Immich liegt deutlich über den veröffentlichten Mindestwerten. Ein gemeinsam betriebener Fotoserver kann zuerst Dify die Ressourcen für Datenbank und Vektorspeicher entziehen. CPU-Konkurrenz wirkt sich ähnlich aus: Eine als Videothek der 90er-Jahre gestaltete Jellyfin-Bibliothek benötigt beim bloßen Durchsuchen von Bildern kaum Rechenleistung. Sobald jedoch jemand eine Transkodierung startet, muss Dify mit seinen Worker-Warteschlangen warten. Die Anzahl der Dify-Container bleibt unabhängig von der Zahl der darauf erstellten Anwendungen gleich. Das führt zu einer besser kalkulierbaren Kostenentwicklung als bei OpenBot, bei dem jeder KI-Mitarbeiter einen eigenen Container und einen eigenen Browser erhält und jede neue Instanz den erforderlichen Arbeitsspeicher weiter erhöht.

Da Dify Ihre Model API Keys und häufig auch private Dokumente enthält, die Sie für Retrieval geladen haben, sollten Sie den Server vom ersten Moment an als schützenswert behandeln. Diese Anleitung installiert Dify und härtet es anschließend so ab, wie jeden Dienst, der Geheimnisse enthält.

Voraussetzungen

Sie benötigen einen VPS mit Ubuntu 24.04, installiertem Docker und Docker-Compose-Plugin sowie einen Benutzer mit sudo oder Mitgliedschaft in der Gruppe docker. Wenn Docker für Sie neu ist, behandelt die Grundlagen von Docker Compose auf einem VPS die Installation und die grundlegenden Befehle, die diese Anleitung voraussetzt. Ein auf den Server zeigender Domainname ist empfehlenswert, weil Sie TLS vor Dify statt einer reinen IP-Adresse verwenden sollten.

Schritt 1: Dify und die Compose-Dateien abrufen

Dify enthält seine Docker-Konfiguration im Hauptrepository. Klonen Sie das Repository und wechseln Sie in das Docker-Verzeichnis:

git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env

Die Datei .env enthält die vollständige Konfiguration. Lesen Sie sie, bevor Sie etwas starten. Prüfen Sie zuerst die Werte für Passwörter und Secrets: SECRET_KEY, das Postgres-Passwort und das Redis-Passwort. Die Beispieldatei enthält Platzhalterwerte. Wenn Sie diese unverändert übernehmen, ist das der häufigste Grund dafür, dass eine selbst gehostete Dify-Instanz kompromittiert wird. Erzeugen Sie einen echten Secret Key:

openssl rand -base64 42

Tragen Sie diesen in SECRET_KEY ein. Verwenden Sie für jedes Passwortfeld in der Datei einen starken, eindeutigen Wert.

Schritt 2: Starten

Starten Sie den Stack:

docker compose up -d

Beim ersten Start werden mehrere Images abgerufen und die Datenbank initialisiert. Warten Sie daher eine Minute. Prüfen Sie, ob die Container fehlerfrei laufen:

docker compose ps

Jeder Dienst sollte running ausgeben. Dify stellt seine Weboberfläche standardmäßig über einen gebündelten nginx-Container auf Port 80 bereit. Beim ersten Aufruf von http://YOUR_SERVER/install erstellen Sie das Administratorkonto. Führen Sie diesen Schritt sofort aus, bevor jemand anderes den Port erreichen kann. Solange dieses Konto nicht existiert, kann jede Person, die die Seite lädt, das Konto für sich beanspruchen und Ihre Instanz übernehmen.

Schritt 3: Nicht ungeschützt veröffentlichen. TLS und eine Firewall vorschalten

Hier enden die meisten Schnellinstallationen und hier beginnen die meisten Sicherheitsvorfälle. Der eigene nginx von Dify lauscht auf Port 80 unverschlüsselt auf jeder Schnittstelle. Ihre Admin-Anmeldedaten und Modellschlüssel sollen nicht über unverschlüsseltes HTTP übertragen werden. Außerdem sollen die internen Dienste nicht von außen erreichbar sein.

Sichern Sie das System mit einer standardmäßig sperrenden Firewall ab, die nur SSH- und Webverkehr zulässt:

sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

Beachten Sie, dass eine Firewall, die nur IPv4 abdeckt, dieselben Ports unter IPv6 offen lassen kann. Diese IPv6-Firewall-Lücke betrifft viele Betreiber selbst gehosteter Dienste. Bestätigen Sie, dass beide Protokollstacks gefiltert werden.

Für TLS ist es am saubersten, Dify's Webport an das Loopback-Interface zu binden und einen Reverse Proxy mit einem Let's-Encrypt-Zertifikat davorzuschalten. Im öffentlichen Internet ist dann nur der Proxy erreichbar, der HTTPS spricht. Mit Dify's .env können Sie den veröffentlichten Port ändern. Konfigurieren Sie ihn so, dass er an 127.0.0.1 gebunden ist, und richten Sie den Proxy darauf aus. Die Maßnahmen zur Absicherung von Agenten aus einen KI-Agenten sicher auf einem VPS betreiben gelten auch hier: Halten Sie die beteiligten Komponenten am Loopback-Interface, veröffentlichen Sie nur zwingend erforderliche Dienste und lassen Sie eine gehärtete zentrale Schnittstelle TLS bereitstellen. Wenn Sie eine Tool-Oberfläche ausschließlich selbst verwenden und dafür überhaupt kein Zertifikat benötigen, verzichten Sie auf den Proxy und greifen Sie über einen SSH-Tunnel darauf zu. Genau so bleibt bei den Open-Kritt-Sicherheitsscanner selbst hosten das Dashboard an das Loopback-Interface gebunden und wird stattdessen an Ihren Laptop weitergeleitet, anstatt veröffentlicht zu werden. Wenn ein ganzes Team Dify benötigt, der öffentliche Internetzugriff aber nicht erforderlich ist, lässt sich dieses Prinzip mit einem Overlay-Netzwerk über einen einzelnen Laptop hinaus skalieren: das private Subnetz des Servers für Ihr Tailnet bekanntgeben ermöglicht jedem freigegebenen Gerät, den Builder über eine private Adresse zu erreichen, während die Firewall für alles außer SSH geschlossen bleibt. Wenn Sie diesen Server über einen Coding-Agenten statt manuell verwalten, legen Sie fest, wie viele Aktionen er unbeaufsichtigt ausführen darf, bevor Sie ihm die Zugangsdaten geben. der Berechtigungsmodus, den Sie für Claude Code festlegen bestimmt, ob der Agent vor dem Überschreiben von .env oder dem Neustart des Stacks nachfragt. Wenn Sie schließlich in einer Sitzung die Container-Logs verfolgen, während eine andere die Proxy-Konfiguration bearbeitet, können diese beiden Sitzungen auf demselben Server Text austauschen. Dadurch müssen Sie die Ausgabe beim Neustart des Stacks nicht jedes Mal zwischen Terminals kopieren.

Schritt 4: Halten Sie die Installation aktuell

Dify entwickelt sich schnell weiter, und Updates enthalten Sicherheitskorrekturen. Für ein Update wechseln Sie in das Verzeichnis docker, führen einen Pull aus und starten den Stack neu:

git pull
docker compose pull
docker compose up -d

Lesen Sie vor einem Sprung auf eine neue Hauptversion die Release Notes. Dify ändert das .env-Schema zwischen Releases gelegentlich. Eine neue Variable, die Sie nicht gesetzt haben, kann den Start eines Containers verhindern.

Schritt 5: Sichern Sie, was sich nicht neu erzeugen lässt

Zwei Dinge auf einem Dify-Server sind nicht ersetzbar: die Postgres-Datenbank mit Ihren Apps, Benutzern und Einstellungen sowie das Volume mit den hochgeladenen Dokumenten und dem Vektorindex. Beide liegen in Docker-Volumes im Verzeichnis docker. Erstellen Sie nach einem Zeitplan Snapshots und kopieren Sie diese vom Server weg. Die Snapshots enthalten jeden Model-Key und jedes hochgeladene Dokument in einer einzigen Datei. Verschlüsseln Sie sie daher, bevor sie den Server verlassen. Der Grund ist derselbe wie bei einem Vaultwarden-Backup, das sich als Schwachstelle eines ansonsten sicheren Passwortservers erweist. Einen Model-API-Key können Sie neu ausstellen lassen. Die Anwendung, in die Sie eine Woche Arbeit investiert haben, nicht. Dieselbe Überlegung gilt für jeden Agenten, dessen Zustand die Maschine überdauern muss, auf der er ausgeführt wird: KiroCrew als permanent laufenden Container weiterzubetreiben bedeutet, den Speicher und die Zeitpläne zu sichern, die andernfalls beim nächsten Reboot verschwinden würden.

Wenn die Agenten, die Sie hier erstellen, über Ihre eigenen Datensätze hinaus auf das Live-Web zugreifen und darin suchen sollen, hält die Anbindung an eine selbst gehostete SearXNG-Instanz den Abfragestrom auf Hardware, die Sie kontrollieren. Lesen Sie sich jedoch zunächst in die Angriffsfläche durch Prompt Injection ein, die dadurch entsteht. Für einen autonomeren Agenten, der Code ausführt, siehe Self-Hosting von Agent Zero. Den eigenen AI-Agenten auf einem VPS zu erstellen behandelt die Grundlagen, auf denen alle diese Lösungen aufbauen.

FAQ

Welche Systemanforderungen gelten für das Self-Hosting von Dify?

Dify läuft als Docker-Compose-Stack mit etwa einem halben Dutzend Containern. Planen Sie daher einen VPS mit mindestens 2 GB freiem RAM, idealerweise 4 GB, sowie ein paar CPU-Kernen und ausreichend Speicherplatz für Ihre hochgeladenen Dokumente und den Vektorindex ein. Die Speicherauslastung entsteht durch die Datenbank und den Vektorspeicher, nicht durch Dify selbst.

Ist es sicher, Dify direkt auf Port 80 bereitzustellen?

Nein. Der mitgelieferte Webserver von Dify lauscht auf unverschlüsseltem HTTP und stellt sowohl Ihre Admin-Anmeldung als auch Ihre Model-API-Schlüssel bereit. Schalten Sie einen Reverse Proxy mit einem Let’s-Encrypt-Zertifikat davor, binden Sie den eigenen Port von Dify an das Loopback-Interface und lassen Sie nur den HTTPS-Proxy aus dem Internet erreichbar sein. Kombinieren Sie das mit einer standardmäßig sperrenden Firewall, die sowohl IPv4 als auch IPv6 abdeckt.

Wie aktualisiere ich ein selbst gehostetes Dify?

Führen Sie im Verzeichnis docker zunächst git pull und anschließend docker compose pull sowie docker compose up -d aus, um neue Images abzurufen und die Container neu zu starten. Lesen Sie vorher die Release Notes, da Dify zwischen Versionen gelegentlich neue .env-Variablen hinzufügt. Fehlt eine davon, kann ein Container nicht gestartet werden.

Was sollte ich unmittelbar nach der Installation von Dify tun?

Rufen Sie /install auf und erstellen Sie sofort das Admin-Konto. Solange dieses Konto nicht existiert, kann es jeder übernehmen, der die Seite erreicht. Richten Sie das Konto ein, sobald die Container fehlerfrei laufen, und bevor Sie die Firewall für das Internet öffnen.