SSD Nodes Learn Hosting plans →
Rehberler Matt ConnorYazan Matt Connor

Docker Compose ile Dify Kurulumu ve VPS Yapılandırması

Dify kurulumu için en az 4 GiB RAM gereklidir. İlk çalıştırmadan önce .env dosyasındaki varsayılan şifreleri değiştirin ve yönetici hesabını /install üzerinden hemen tanımlayın.

Dify nedir ve neyi çalıştırmak için kayıt oluyorsunuz

Dify, büyük dil modelleri üzerinde uygulamalar geliştirmek için kendi sunucunuzda barındırabileceğiniz bir platformdur. Sohbet uygulamaları, aracı yazılımlar (agent) ve veri getirme (retrieval) hatları tasarlamak için bir web arayüzüne, bunları kendi kodunuzdan çağırmak için bir API'ye ve istemleri (prompt), veri kümelerini ve model anahtarlarını yönetmek için tek bir merkeze sahip olursunuz. Bu, küçük bir ekibin API anahtarlarını farklı betiklere dağıtmak yerine, herkesin tek bir paylaşımlı özel altyapı üzerinde çalışmasını sağlamak için kurduğu türden bir araçtır. Eğer aracı yazılım, araç çağrısı ve veri getirme hattı gibi terimler henüz net değilse, bu kavramları sıfırdan çalışmak, Dify'ın oluşturucu ekranlarının anlamsız düğmeler yığını yerine tanıdık kontroller gibi görünmesini sağlayacaktır.

Dify'ı kendi sunucunuzda çalıştırmak, çok sayıda hareketli parçayı yönetmek anlamına gelir. Ekim 2026 itibarıyla, Dify'ın belgelenmiş varsayılan yığını, 15 adet sürekli çalışan container ve dosya izinlerini ayarlayıp sonlanan tek seferlik bir görevle başlar. Bunlardan yedisi Dify'ın kendi servisleridir: API sunucusu, websocket sunucusu, arka plan işçisi (worker), zamanlayıcı, web arayüzü, eklenti daemon'ı ve aracı yazılım arka ucu. Diğer sekizi ise bağımlılıklardır: bir Postgres veritabanı, bir Redis önbelleği, bir Weaviate vektör veritabanı, bir nginx giriş kapısı, iki kod korumalı alanı (sandbox) ve iki SSRF proxy'si. Docker Compose bunların hepsini birbirine bağlar; ancak bu gerçek bir yığındır ve Dify'ın belgelenmiş minimum gereksinimi 4 GiB RAM ve iki CPU çekirdeğidir. Eğer bu VPS üzerinde başka uygulamalar da çalışacaksa, sunucu boyutunu reklamı yapılan değerlere göre değil, ölçülen değerlere göre belirleyin; çünkü PhotoPrism ve Immich'in gerçek RAM taban değerleri, yayınlanan minimum değerlerin oldukça üzerindedir ve aynı sunucuyu paylaşan bir fotoğraf sunucusu, ilk olarak Dify'ın veritabanını ve vektör deposunu aç bırakacaktır. CPU çekişmesi de benzer şekilde etki eder: 90'ların video mağazası gibi tasarlanmış bir Jellyfin kütüphanesi, sadece görsel taraması yaparken neredeyse hiç kaynak tüketmez, ancak biri kod dönüştürme (transcode) işlemini başlattığı anda Dify'ın işçi kuyrukları onun arkasında beklemeye başlar. Tek teselli, Dify'ın container sayısının, üzerinde kaç uygulama oluşturursanız oluşturun sabit kalmasıdır; bu, her yapay zeka iş arkadaşının kendi container'ına ve tarayıcısına sahip olduğu ve her yeni işe alımın bellek tabanını yükselttiği OpenBot modeline göre daha öngörülebilir bir maliyet yapısı sunar.

Dify, model API anahtarlarınızı ve genellikle veri getirme işlemleri için yüklediğiniz özel belgeleri barındırdığından, üzerinde çalıştığı sunucuyu ilk dakikadan itibaren hassas bir sistem olarak değerlendirin. Bu kılavuz, kurulumu gerçekleştirir ve ardından sunucuyu, gizli verileri barındıran herhangi bir servisi güçlendireceğiniz şekilde güvenli hale getirir.

Ön gereksinimler

En az 4 GiB RAM ve iki CPU çekirdeğine sahip, Ubuntu 24.04 çalıştıran bir VPS'e, Docker ve Docker Compose eklentisine (Dify, Compose 2.24.0 veya daha yeni bir sürüm gerektirir) ve sudo yetkisine veya docker grubuna üyeliği olan bir kullanıcıya ihtiyacınız vardır. Aşağıdaki klonlama komutu ayrıca git, curl ve jq kullanır. Docker sizin için yeniyse, VPS üzerinde Docker Compose temelleri rehberi, kurulumu ve bu kılavuzun varsaydığı temel komutları kapsar. Sunucuya yönlendirilmiş bir alan adı kullanmanız önerilir; çünkü Dify'ın önünde çıplak bir IP adresi yerine TLS kullanmak isteyeceksiniz.

Adım 1: Dify ve Compose dosyalarını edinme

Dify, Docker kurulumunu ana deposunda tutar. Geliştirme dalını değil, en son sürümü klonlayın ve docker dizinine geçin:

git clone --branch "$(curl -s https://api.github.com/repos/langgenius/dify/releases/latest | jq -r .tag_name)" https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env

Klonlama işlemi "Remote branch null" hatasıyla başarısız olursa, GitHub API sorgusu sonuç döndürmemiş demektir; sürümler sayfasından bir sürüm seçin ve bunu manuel olarak --branch komutuna iletin.

.env dosyası temel yapılandırmayı içerir. Herhangi bir işleme başlamadan önce bu dosyayı okuyun. İlk etapta önem taşıyan değerler, parolaları ve gizli anahtarları belirleyenlerdir: SECRET_KEY, Postgres parolası ve Redis parolası. SECRET_KEY boş olarak gelir; bu şekilde bırakırsanız Dify bir anahtar oluşturur ve bunu kendi depolama dizininde tutar. Parolalar ise farklı bir konudur: örnek dosya hem Postgres hem de Redis için aynı difyai123456 değerini ve kod korumalı alanı (sandbox), eklenti daemon'ı ve Weaviate için sabit, herkesçe bilinen anahtarları ayarlar. Bunları varsayılan halleriyle bırakmak, self-hosted bir Dify kurulumunun ele geçirilmesinin en yaygın nedenidir. Kendi gizli anahtarınızı belirlemek isterseniz, bir tane oluşturun:

openssl rand -base64 42

Bunu SECRET_KEY içine yapıştırın ve dosyadaki her parola ve anahtar alanı için güçlü, benzersiz bir değer atayın. Redis parolası CELERY_BROKER_URL içinde de yer alır, bu yüzden değişikliği orada da yapın; aksi takdirde worker Redis'e erişemez.

Adım 2: Başlatma

Yığını ayağa kaldırın:

docker compose up -d

İlk çalıştırma birkaç imajı çeker ve veritabanını başlatır, bu yüzden bir dakika bekleyin. Container'ların sağlıklı olup olmadığını kontrol edin:

docker compose ps

Uzun süre çalışan her servis running değerini okumalıdır; tek seferlik izin görevi işini bitirdiğinde sonlanır. Dify, web arayüzünü varsayılan olarak 80 numaralı port üzerindeki paketlenmiş bir nginx container'ı aracılığıyla sunar. http://YOUR_SERVER/install adresini ilk ziyaretinizde yönetici hesabını oluşturursunuz. Başka herhangi birinin porta erişebilmesinden önce bunu hemen yapın; çünkü hesap oluşturulana kadar sayfayı yükleyen herkes hak iddia edebilir ve instance'ınızın sahibi olabilir.

Adım 3: Ham halde dış dünyaya açmayın. Önüne TLS ve güvenlik duvarı koyun

Hızlı kurulumların çoğu burada durur ve çoğu güvenlik olayı burada başlar. Dify'ın kendi nginx servisi, her arayüzde 80 numaralı portu şifrelenmemiş olarak dinler ve 443 numaralı portu da dışarıya açar. Yönetici giriş bilgilerinizin ve model anahtarlarınızın düz HTTP üzerinden iletilmesini ve dahili servislerinizin dışarıdan erişilebilir olmasını istemezsiniz.

Sunucuyu, yalnızca SSH ve web trafiğine izin veren "varsayılan olarak reddet" (default-deny) kuralına sahip bir güvenlik duvarı ile kilitleyin:

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

Yalnızca IPv4 trafiğini kapsayan bir güvenlik duvarının, aynı portları IPv6 üzerinde açık bırakabileceğini unutmayın; bu, birçok self-host kullanıcısını gafil avlayan IPv6 güvenlik duvarı açığı durumudur. Her iki yığının da filtrelendiğinden emin olun. Ayrıca Docker tarafından yayınlanan portların ufw kuralları tarafından değil, Docker'ın kendi güvenlik duvarı kuralları tarafından yönetildiğini bilin. Varsayılan kurulum, eklenti daemon'unun hata ayıklama portu olan 5003'ü tüm arayüzlerde yayınlar. Başka bir makineden eklentilerde hata ayıklamanız gerekmediği sürece EXPOSE_PLUGIN_DEBUGGING_PORT değerini .env içerisinde 127.0.0.1:5003 olarak ayarlayın.

TLS için en temiz yöntem, Dify'ın web portunu localhost'a bağlamak ve önüne Let's Encrypt sertifikası ile bir reverse proxy kurmaktır. Böylece internete açık olan tek şey, HTTPS üzerinden konuşan proxy olur. Dify'ın .env ayarı, dışa açılan portu değiştirmenize olanak tanır; bunu 127.0.0.1 adresine bağlanacak şekilde ayarlayın ve proxy'nizi bu adrese yönlendirin. Aynı işlemi EXPOSE_NGINX_SSL_PORT için de yapın, çünkü Dify'ın nginx servisi varsayılan olarak 443 numaralı ana bilgisayar portunu kullanır ve proxy'nizin bu porta ihtiyacı vardır. Bir yapay zeka ajanını VPS üzerinde güvenli çalıştırma rehberindeki ajan sıkılaştırma fikirleri burada da geçerlidir: hareketli parçaları localhost üzerinde tutun, yalnızca herkese açık olması gerekenleri dışarıya açın ve tek bir sıkılaştırılmış giriş kapısının TLS ile konuşmasını sağlayın. Bir aracın arayüzü yalnızca size özelse ve hiçbir şekilde sertifikaya ihtiyaç duymuyorsa, proxy'yi atlayın ve ona bir SSH tüneli üzerinden erişin; tıpkı open-kritt güvenlik tarayıcısını self-host etme rehberinde olduğu gibi, gösterge panelini localhost'a bağlı tutun ve yayınlamak yerine dizüstü bilgisayarınıza yönlendirin. Eğer Dify'a tüm ekibin erişmesi gerekiyor ancak internetin erişmesi gerekmiyorsa, bir overlay ağı bu fikri tek bir dizüstü bilgisayarın ötesine taşır: sunucunun özel alt ağını tailnet'inize tanıtmak, güvenlik duvarı SSH dışındaki her şeye kapalıyken onaylı her cihazın oluşturucuya özel bir adres üzerinden ulaşmasını sağlar. Bu sunucuyu manuel olarak değil de bir kodlama ajanı aracılığıyla yönetiyorsanız, ona anahtarları teslim etmeden önce ne kadar denetimsiz işlem yapabileceğine karar verin; çünkü Claude Code'u bıraktığınız izin modu, .env dosyasını yeniden yazmadan veya yığını yeniden başlatmadan önce onay isteyip istemeyeceğini belirler. Eğer bir oturumda container günlüklerini izlerken diğerinde proxy yapılandırmasını düzenliyorsanız, bu iki oturum aynı sunucu üzerinde birbirine metin aktarabilir; bu yöntem, yığını her yeniden başlattığınızda terminaller arasında çıktı kopyalamaktan daha pratiktir.

Adım 4: Güncellemeleri takip edin

Dify hızlı gelişen bir projedir ve güncellemeler güvenlik yamaları içerir. Bir sürüm etiketini (release tag) klonladığınız için güncelleme yapmak, bir dalı (branch) çekmek yerine bir sonraki etikete geçiş yapmayı gerektirir. Öncelikle veritabanını yedekleyin, ardından docker dizininden şu işlemleri gerçekleştirin:

docker compose down
git fetch --tags
git checkout NEW_VERSION
docker compose pull
docker compose up -d

Veritabanı migrasyonları başlangıçta otomatik olarak çalışır ve bazıları geri alınamaz; bu nedenle yedekleme işlemi ilk sırada yer almalıdır. Sadece ana sürümler için değil, her yükseltme öncesinde sürüm notlarını okuyun: Dify, yükseltme adımlarının sürümler arasında farklılık gösterdiğini belirtmektedir. Örneğin, 1.17.1 notları (Eylül 2026), mevcut verilerle birlikte gelen Weaviate sürümünü kullananların doğrudan bu sürüme geçmek yerine her ara sürümü sırayla geçmeleri gerektiğini ifade eder. Dify ayrıca sürümler arasında .env şemasını da değiştirebilir. Bu nedenle, yeni bir etikete geçiş yaptıktan sonra .env.example dosyasını .env dosyanızla karşılaştırın ve değişikliklerinizi aktarın; çünkü tanımlanmamış yeni bir değişken, bir container'ın başlatılmasını engelleyebilir.

Adım 5: Yeniden oluşturamayacağınız verileri yedekleyin

Bir Dify sunucusunda yeri doldurulamaz iki unsur vardır: uygulamalarınızı, kullanıcılarınızı ve ayarlarınızı barındıran Postgres veritabanı ile yüklenen belgeleri ve vektör dizinini depolayan birim (volume). Her ikisi de docker dizini altındaki Docker birimlerinde bulunur. Bunların anlık görüntülerini (snapshot) düzenli bir takvimle alın ve bu görüntüleri sunucu dışına kopyalayın. Bu anlık görüntüler, tüm model anahtarlarını ve yüklenen belgeleri tek bir dosyada taşıdığından, sunucudan çıkarmadan önce onları şifreleyin; bunun nedeni bir Vaultwarden yedeğinin, aksi takdirde sağlam olan bir parola sunucusunun zayıf noktası haline gelmesidir. Bir model API anahtarı yeniden oluşturulabilir, ancak bir hafta boyunca üzerinde çalıştığınız uygulama oluşturulamaz. Aynı mantık, durumu üzerinde çalıştığı makineden daha uzun süre yaşaması gereken tüm ajanlar için de geçerlidir: KiroCrew'u her zaman çalışan bir container olarak tutmak, bir sonraki yeniden başlatmada kaybolacak bellek ve zamanlanmış görevlerin anlık görüntüsünü almaya dayanır.

Burada oluşturduğunuz ajanların kendi veri kümelerinizin ötesine geçip canlı web üzerinde arama yapmasını istediğinizde, onları self-hosted bir SearXNG örneğine yönlendirmek, sorgu akışını kontrolünüz altındaki donanımda tutmanızı sağlar; ancak bunu etkinleştirmeden önce açtığı prompt injection yüzeyi hakkında bilgi edinmenizde fayda vardır. Daha otonom ve kod çalıştıran bir ajan için Agent Zero'yu self-host etme konusuna bakın; kendi yapay zeka ajanınızı bir VPS üzerinde oluşturma rehberi ise tüm bunların temelini kapsamaktadır.

FAQ

Dify'ı kendi sunucunuzda barındırmak için sistem gereksinimleri nelerdir?

Dify, en az 4 GiB RAM ve iki CPU çekirdeği ile Docker Compose 2.24.0 veya daha yeni bir sürüm gerektirir. Bu alt sınır, Ekim 2026 itibarıyla varsayılan yığının boyutunu yansıtır: 15 adet sürekli çalışan container ve bir adet tek seferlik başlatma görevi. Yüklediğiniz belgeler ve vektör dizini için yeterli disk alanı ayırın; sunucuda başka servisler de çalışıyorsa daha fazla bellek ekleyin.

Dify'ı doğrudan 80 numaralı port üzerinden dış dünyaya açmak güvenli midir?

Hayır. Dify ile birlikte gelen web sunucusu düz HTTP üzerinden dinleme yapar; bu sunucu, yönetici girişinizi ve model API anahtarlarınızı barındırır. Önüne Let's Encrypt sertifikasına sahip bir reverse proxy yerleştirin, Dify'ın kendi portunu localhost adresine bağlayın ve internete yalnızca HTTPS proxy'nin çıkış yapmasına izin verin. Bu yapıyı, hem IPv4 hem de IPv6 trafiğini kapsayan ve varsayılan olarak tüm bağlantıları reddeden bir güvenlik duvarı ile destekleyin.

Kendi sunucumda barındırdığım Dify'ı nasıl güncellerim?

Veritabanını yedekleyin, ardından docker dizini içerisinden sırasıyla docker compose down, git fetch --tags, yeni sürüm etiketini içeren git checkout, docker compose pull ve docker compose up -d komutlarını çalıştırın. Güncelleme adımları sürümler arasında farklılık gösterebildiği, veritabanı geçişleri geri alınamaz olabildiği ve Dify bazen yeni .env değişkenleri eklediği için önce sürüm notlarını okuyun; eksik bir değişken container'ın ayağa kalkmasını engelleyebilir.

Dify kurulumundan sonra yapılması gereken ilk şey nedir?

/install adresini ziyaret edin ve yönetici hesabını hemen oluşturun. Bu hesap oluşturulana kadar, sayfaya erişebilen herkes hesabı kendi üzerine alabilir. Hesabı, container'lar sağlıklı bir şekilde çalışmaya başladığı anda ve güvenlik duvarını dış dünyaya açmadan önce yapılandırın.