Dify zelf hosten op VPS met Docker Compose
Installeer Dify via Docker Compose op een VPS met minimaal 4 GB RAM. Vergeet niet alle secrets in het .env bestand aan te passen voor een veilige installatie.
Wat Dify is, en wat u gaat draaien
Dify is een platform voor zelf-hosting om applicaties te bouwen 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 beheren van prompts, datasets en model keys. Het is een tool die kleine teams gebruiken zodat iedereen op één gedeelde private basis bouwt, in plaats van API keys te verspreiden over verschillende scripts.
Het zelf draaien van Dify betekent dat u meerdere onderdelen tegelijkertijd draait. Dify wordt geleverd als een set Docker containers: een API server, een background worker, een web frontend, een Postgres database, een Redis cache, en een vector database, die allemaal via Docker Compose met elkaar verbonden zijn. Dit is complexer dan een enkele binary, maar Compose regelt de verbindingen. Een VPS met enkele gigabytes aan vrije RAM is voldoende om dit comfortabel te draaien.
Omdat Dify uw model API keys en vaak ook private documenten bevat die u heeft geüpload voor retrieval, moet u de server waarop het draait vanaf het eerste moment als gevoelig beschouwen. Deze handleiding installeert de software en verhardt de server op dezelfde manier als u elke andere service die geheimen beheert zou verharden.
Prerequisites
U heeft een VPS nodig met Ubuntu 24.04 waarop Docker en de Docker Compose plugin zijn geïnstalleerd, en een gebruiker met sudo of lidmaatschap van de docker groep. Als Docker nieuw voor u is, behandelt de basisprincipes van Docker Compose op een VPS de installatie en de kerncommando's die deze handleiding veronderstelt. Een domeinnaam die naar de server wijst is aanbevolen, omdat u TLS wilt gebruiken in plaats van een onbeveiligd IP-adres.
Step 1: Get Dify and its Compose files
Dify bewaart de Docker-setup in de hoofdrepository. Clone deze en ga naar de docker directory:
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .envHet .env bestand bevat de volledige configuratie. Lees dit voordat u begint. De belangrijkste waarden zijn de instellingen voor wachtwoorden en geheimen: SECRET_KEY, het Postgres wachtwoord, en het Redis wachtwoord. Het voorbeeldbestand bevat placeholder-waarden; het laten staan van deze waarden is de meest voorkomende reden waarom een zelf-gehoste Dify wordt gecompromitteerd. Genereer een echte secret key:
openssl rand -base64 42Plak deze in SECRET_KEY en stel een sterk, uniek waard voor elk wachtwoordveld in het bestand in.
Step 2: Start it
Start de stack:
docker compose up -dDe eerste run downloadt verschillende images en initialiseert de database; dit duurt een minuut. Controleer of de containers een gezonde status hebben:
docker compose psElke service moet running kunnen bereiken. Dify levert standaard een webinterface via een ingebouwde nginx container op poort 80. Maak bij uw eerste bezoek aan http://YOUR_SERVER/install het admin-account aan. Doe dit onmiddellijk, voordat andere processen de poort bereiken. Zolang dit account niet bestaat, kan iedereen die de pagina laadt het account claimen en uw instantie overnemen.
Step 3: Do not expose it raw. Put TLS and a firewall in front
Dit is het punt waar de meeste snelle installaties stoppen en de meeste incidenten beginnen. De eigen nginx van Dify luistert op poort 80 via onbeveiligde HTTP op elke interface. U wilt niet dat uw admin-login en uw model keys via plain HTTP worden verzonden, en u wilt niet dat de interne services van buitenaf bereikbaar zijn.
Beveilig de server met een default-deny firewall die 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 de IPv6 firewall gap waar veel zelf-hosters tegenaan lopen. Controleer of beide stacks gefilterd zijn.
Voor TLS is de beste methode om het webport van Dify te binden aan loopback en een reverse proxy met een Let's Encrypt certificaat ervoor te draaien. Hierdoor is de proxy de enige component die via HTTPS op het publieke internet communiceert. Met de .env van Dify kunt u het poortnummer wijzigen; stel dit in op 127.0.0.1 en wijs uw proxy naar dit adres. De principes voor het beveiligen van agents uit running an AI agent safely on a VPS zijn hier ook van toepassing: houd de onderdelen op loopback, exposeer alleen wat publiek moet zijn, en gebruik één beveiligde voordeur voor TLS.
Step 4: Keep it patched
Dify ontwikkelt zich snel en updates bevatten beveiligingspatches. Updaten gebeurt via een pull en een restart vanuit de docker directory:
git pull
docker compose pull
docker compose up -dLees de release notes voordat u naar een nieuwe major versie gaat. Dify verandert soms het .env schema tussen releases. Een nieuwe variabele die u niet heeft ingesteld, kan ervoor zorgen dat een container niet start.
Step 5: Back up what you cannot regenerate
Twee zaken op een Dify-server zijn onvervangbaar: de Postgres database, die uw apps, gebruikers en instellingen bevat, en de volume die de geüploade documenten en de vector index opslaat. Beide bevinden zich in Docker volumes in de docker directory. Maak volgens een schema snapshots en kopieer deze snapshots naar een andere locatie dan de server. Een model API key kan opnieuw worden uitgegeven; de app die u een week lang heeft gebouwd niet.
Voor een meer autonome agent die code uitvoert, zie self-hosting Agent Zero. building your own AI agent on a VPS behandelt de fundamenten voor alle dergelijke systemen.
FAQ
What are the system requirements to self-host Dify?
Dify draait als een Docker Compose stack van ongeveer een half dozijn containers. Plan voor een VPS met minimaal 2 GB vrije RAM, idealiter 4 GB, plus enkele CPU-cores en voldoende schijfruimte voor uw geüploade documenten en de vector index. De grootste geheugenbelasting komt van de database en de vector store, niet van Dify zelf.
Is it safe to expose Dify directly on port 80?
Nee. De ingebouwde webserver van Dify luistert via plain HTTP en beheert uw admin-login en model API keys. Gebruik een reverse proxy met een Let's Encrypt certificaat, bind het eigen poortnummer van Dify aan loopback, en laat alleen de HTTPS-proxy contact maken met het internet. Combineer dit met een default-deny firewall voor zowel IPv4 als IPv6.
How do I update a self-hosted Dify?
Voer vanuit de docker directory git pull uit, gevolgd door docker compose pull en docker compose up -d om nieuwe images op te halen en te herstarten. Lees eerst de release notes, omdat Dify soms nieuwe .env variabelen toevoegt tussen versies. Een ontbrekende variabele kan voorkomen dat een container start.
What is the first thing to do after installing Dify?
Bezoek /install en maak direct het admin-account aan. Zolang dit account niet bestaat, kan iedereen die de pagina bereikt het account claimen. Richt dit in zodra de containers een gezonde status hebben, en voordat u de firewall voor het internet opent.