Dify zelf hosten met Docker Compose op een VPS
Dify draait op zes containers en vereist minimaal 4 GB RAM. Vervang alle standaard secrets in het .env bestand en voltooi de installatie direct om ongeautoriseerde toegang te voorkomen.
Wat Dify is en waar u zich voor aanmeldt om te draaien
Dify is een zelf te hosten platform voor het bouwen van applicaties op basis van large language models. U krijgt een webinterface voor het ontwerpen van chat-apps, agents en retrieval-pipelines, een API om deze vanuit uw eigen code aan te roepen, en één centrale plek voor het beheer van prompts, datasets en modelsleutels. Het is het type tool dat een klein team opzet zodat iedereen op één gedeelde privébasis bouwt, in plaats van API-sleutels te verspreiden over verschillende scripts.
Zelfbeheer betekent dat u meerdere onderdelen moet uitvoeren. Dify wordt geleverd als een set Docker-containers: een API-server, een achtergrondworker, een webfrontend, een Postgres-database, een Redis-cache en een vectordatabase. Docker Compose verbindt deze onderdelen met elkaar. Dat zijn meer onderdelen dan één binair bestand, maar Compose handelt de verbindingen af. Een VPS met enkele gigabytes vrije RAM draait dit doorgaans probleemloos. Als die VPS ook andere software moet uitvoeren, dimensioneer deze dan op basis van gemeten waarden en niet op basis van opgegeven waarden. De werkelijke RAM-minima van PhotoPrism en Immich liggen namelijk ruim boven hun gepubliceerde minimumvereisten. Een fot server die dezelfde server gebruikt, zorgt er als eerste voor dat de database en vectoropslag van Dify te weinig resources krijgen. CPU-concurrentie werkt hetzelfde. Een Jellyfin-bibliotheek die is vormgegeven als een videotheek uit de jaren 90 kost vrijwel geen resources wanneer iemand alleen door afbeeldingen bladert. Zodra iemand echter een transcodering start, moet de worker van Dify wachten. Het voordeel is dat het aantal containers van Dify gelijk blijft, ongeacht hoeveel apps u ermee bouwt. Dat leidt tot een voorspelbaarder kostenprofiel dan OpenBot, waarbij elke AI-collega zijn eigen container en browser krijgt en elke nieuwe medewerker de minimale geheugencapaciteit opnieuw verhoogt.
Omdat Dify uw model-API-sleutels en vaak ook privédocumenten bevat die u heeft geladen voor retrieval, moet u de server waarop het draait vanaf de eerste minuut als gevoelig beschouwen. Deze handleiding installeert de software en beveiligt deze vervolgens op de manier waarop u elke service die geheimen bevat, zou beveiligen.
Vereisten
U heeft een VPS nodig met Ubuntu 24.04 waarop Docker en de Docker Compose plugin zijn geïnstalleerd, evenals een gebruiker met sudo-rechten of lidmaatschap van de docker-groep. Als Docker nieuw voor u is, behandelt de basis van Docker Compose op een VPS de installatie en de kerncommando's waarvan deze handleiding uitgaat. Het is aanbevolen om een domeinnaam naar de server te laten wijzen, aangezien u TLS voor Dify wilt gebruiken in plaats van een kaal IP-adres.
Stap 1: Dify en de bijbehorende Compose-bestanden ophalen
Dify bewaart de Docker-configuratie in de hoofdrepository. Kloon deze repository en ga naar de map docker:
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .envHet bestand .env bevat de volledige configuratie. Lees dit bestand door voordat u actie onderneemt. De waarden die als eerste van belang zijn, zijn de instellingen voor wachtwoorden en secrets: SECRET_KEY, het Postgres-wachtwoord en het Redis-wachtwoord. Het voorbeeldbestand wordt geleverd met standaardwaarden; het ongewijzigd laten hiervan is de meest voorkomende oorzaak waardoor een zelfgehoste Dify-installatie wordt gecompromitteerd. Genereer een echte secret key:
openssl rand -base64 42Plak deze in SECRET_KEY en stel voor elk wachtwoordveld in het bestand een sterke, unieke waarde in.
Stap 2: Starten
Start de stack:
docker compose up -dDe eerste keer dat u dit uitvoert, worden er diverse images gedownload en de database geïnitialiseerd. Wacht daarom een minuut. Controleer of de containers correct functioneren:
docker compose psElke service hoort de status running te tonen. Dify stelt de webinterface standaard beschikbaar via een meegeleverde nginx-container op poort 80. Bij uw eerste bezoek aan http://YOUR_SERVER/install maakt u het beheerdersaccount aan. Doe dit direct, voordat iemand anders de poort kan bereiken. Zolang dit account niet bestaat, kan iedereen die de pagina laadt het account claimen en de eigenaar van uw instantie worden.
Stap 3: Stel het niet onbeveiligd bloot. Plaats TLS en een firewall voor de service
Dit is het punt waar de meeste snelle installaties stoppen en de meeste incidenten beginnen. De eigen nginx van Dify luistert op poort 80, in platte tekst, op elke interface. U wilt niet dat uw inloggegevens voor de beheeromgeving en uw modelsleutels via onversleuteld HTTP worden verstuurd, en u wilt niet dat de interne services vanaf het internet bereikbaar zijn.
Beveilig de server met een firewall die standaard alles blokkeert en alleen SSH- en webverkeer toestaat:
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enableHoud er rekening mee dat een firewall die alleen IPv4 dekt, dezelfde poorten open kan laten staan op IPv6; dit is het IPv6 firewall-gat waar veel zelf-hosters in trappen. Controleer of beide stacks worden gefilterd.
Voor TLS is de meest overzichtelijke aanpak om de webpoort van Dify aan loopback te binden en daarvoor een reverse proxy met een Let’s Encrypt-certificaat te plaatsen. Op het openbare internet is dan alleen de proxy zichtbaar, die HTTPS-verkeer afhandelt. Met Dify’s .env kunt u de blootgestelde poort wijzigen. Stel deze zo in dat de service op 127.0.0.1 luistert en configureer uw proxy om het verkeer daarheen door te sturen. De ideeën voor het beveiligen van agents in een AI-agent veilig uitvoeren op een VPS zijn hier ook van toepassing: houd de afzonderlijke onderdelen op loopback, stel alleen beschikbaar wat openbaar moet zijn en laat één geharde ingang TLS-verkeer afhandelen. Als de interface van een tool alleen voor uzelf bedoeld is en helemaal geen certificaat nodig heeft, kunt u de proxy overslaan en de tool via een SSH-tunnel bereiken. Dat is ook de aanpak in de open-kritt-beveiligingsscanner zelf hosten, waarbij het dashboard aan loopback gebonden blijft en naar uw laptop wordt doorgestuurd in plaats van openbaar beschikbaar te zijn. Als een volledig team Dify nodig heeft, maar niet het openbare internet, kunt u dit principe uitbreiden met een overlaynetwerk: het privénetwerk van de server beschikbaar maken in uw tailnet geeft elk goedgekeurd apparaat toegang tot de builder via een privé-adres, terwijl de firewall al het verkeer behalve SSH blijft blokkeren. Als u deze server beheert via een coding agent in plaats van handmatig, bepaal dan vooraf hoeveel deze zonder toezicht mag doen voordat u hem toegang geeft. De permissiemodus waarin u Claude Code achterlaat bepaalt namelijk of de agent eerst om bevestiging vraagt voordat deze .env herschrijft of de stack opnieuw start. Als u één sessie containerlogs volgt terwijl een andere de proxyconfiguratie bewerkt, kunnen die twee sessies op dezelfde server tekst aan elkaar doorgeven. Dat is efficiënter dan na elke herstart van de stack uitvoer tussen terminals te kopiëren.
Stap 4: Houd de software bijgewerkt
Dify ontwikkelt zich snel en updates bevatten vaak beveiligingspatches. Het bijwerken gebeurt door middel van een pull en een herstart vanuit de docker-directory:
git pull
docker compose pull
docker compose up -dLees de release notes voordat u een grote versie-upgrade uitvoert. Dify wijzigt soms het .env-schema tussen releases, waardoor een nieuwe variabele die u nog niet heeft ingesteld, kan voorkomen dat een container start.
Stap 5: Maak back-ups van wat u niet opnieuw kunt genereren
Twee zaken op een Dify-server zijn onvervangbaar: de Postgres-database, die uw apps, gebruikers en instellingen bevat, en het volume waarin geüploade documenten en de vectorindex worden opgeslagen. Beide bevinden zich in Docker-volumes in de map docker. Maak volgens een vast schema snapshots en kopieer deze snapshots naar een locatie buiten de server. Een API-sleutel voor een model kan opnieuw worden aangevraagd; de app waar u een week aan heeft gebouwd niet. Dezelfde logica geldt voor elke agent waarvan de status langer moet meegaan dan de machine waarop deze draait: het draaiende houden van KiroCrew als een always-on container komt neer op het maken van snapshots van het geheugen en de planningen die anders bij de volgende herstart zouden verdwijnen.
Wanneer u wilt dat de agents die u hier bouwt verder kijken dan uw eigen datasets en het live web doorzoeken, zorgt het koppelen aan een zelfgehoste SearXNG-instantie ervoor dat de zoekopdrachten op hardware blijven die u beheert. Het is echter raadzaam om u in te lezen in het risico op prompt-injectie voordat u dit inschakelt. Voor een meer autonome agent die code kan uitvoeren, zie het zelf hosten van Agent Zero, en het bouwen van uw eigen AI-agent op een VPS behandelt de fundamenten die aan al deze oplossingen ten grondslag liggen.
FAQ
Wat zijn de systeemvereisten om Dify zelf te hosten?
Dify draait als een Docker Compose-stack van ongeveer een half dozijn containers. Houd rekening met een VPS met minimaal 2 GB vrij RAM-geheugen, bij voorkeur 4 GB, aangevuld met een paar CPU-cores en voldoende schijfruimte voor uw geüploade documenten en de vector-index. De geheugenbelasting wordt veroorzaakt door de database en de vector store, niet door Dify zelf.
Is het veilig om Dify rechtstreeks op poort 80 bloot te stellen?
Nee. De meegeleverde webserver van Dify luistert op onversleuteld HTTP en fungeert als toegangspunt voor uw beheerdersaccount en uw model-API-keys. Plaats een reverse proxy met een Let’s Encrypt-certificaat voor de applicatie, bind de poort van Dify aan localhost en zorg dat alleen de HTTPS-proxy bereikbaar is vanaf het internet. Combineer dit met een firewall die standaard al het verkeer blokkeert (default-deny) voor zowel IPv4 als IPv6.
Hoe update ik een zelfgehoste Dify-installatie?
Voer vanuit de map docker het commando git pull uit, gevolgd door docker compose pull en docker compose up -d om nieuwe images op te halen en de containers te herstarten. Lees eerst de release notes, aangezien Dify soms nieuwe .env-variabelen toevoegt tussen versies; een ontbrekende variabele kan voorkomen dat een container opstart.
Wat is het eerste dat ik moet doen na het installeren van Dify?
Bezoek /install en maak direct het beheerdersaccount aan. Totdat dit account bestaat, kan iedereen die de pagina bereikt het account claimen. Configureer dit zodra de containers gezond zijn en voordat u de firewall openstelt voor de buitenwereld.