Docker Compose ile Dify kurulumu ve VPS barındırma
Dify kurulumu için en az 4 GB RAM gereklidir. Docker Compose ile altı konteyner başlatmadan önce .env dosyasındaki gizli anahtarları güncelleyin ve /install ile yöneticiyi atayın.
Dify nedir ve neyi çalıştırmayı taahhüt ediyorsunuz
Dify, büyük dil modelleri üzerinde uygulamalar geliştirmek için kullanılan, kendi sunucunuzda barındırabileceğiniz bir platformdur. Sohbet uygulamaları, aracı yazılımlar (agent) ve veri getirme (retrieval) süreçleri tasarlamak için bir web arayüzü, bunları kendi kodunuzdan çağırmanız için bir API ve istemleri (prompt), veri setlerini ve model anahtarlarını yönetmek için merkezi bir alan sağlar. Bu, küçük ekiplerin API anahtarlarını farklı betiklere dağıtmak yerine, herkesin ortak ve özel bir temel üzerinde çalışmasını sağlamak için kurduğu türden bir araçtır.
Bunu kendiniz çalıştırmak, birden fazla bileşeni işletmek anlamına gelir. Dify, Docker Compose ile birbirine bağlanan bir dizi Docker container'ı olarak sunulur: bir API sunucusu, bir arka plan worker'ı, bir web frontend'i, bir Postgres veritabanı, bir Redis cache'i ve bir vector database. Bu yapı tek bir binary'den daha kapsamlıdır; ancak bağlantıları Compose yönetir ve birkaç gigabyte boş RAM'e sahip bir VPS bu yükü rahatça çalıştırır. Bu VPS üzerinde başka bir yazılım da çalışacaksa kaynak boyutlandırması, reklamı yapılan değerler yerine ölçülen değerlere göre yapılmalıdır. Çünkü PhotoPrism ve Immich'in gerçek RAM taban gereksinimleri yayımlanan minimum değerlerin belirgin biçimde üzerindedir ve aynı sunucuyu paylaşan bir photo server, önce Dify'ın veritabanını ve vector store'unu kaynak yetersizliğine sürükler. CPU contention da aynı şekilde sorun çıkarır: 90'lar video mağazası görünümü verilmiş bir Jellyfin library, yalnızca artwork taranırken sunuma neredeyse hiç yük getirmez; ancak biri transcode başlattığı anda Dify'ın worker kuyrukları beklemek zorunda kalır. Bunun avantajı, üzerinde kaç uygulama oluşturulursa oluşturulsun Dify'ın container sayısının sabit kalmasıdır. Bu, her AI coworker için ayrı bir container ve ayrı bir browser çalıştıran OpenBot yapısına göre daha öngörülebilir bir maliyet profili sunar; her yeni worker bellek taban gereksinimini yeniden yükseltir.
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 sistemi, gizli verileri barındıran herhangi bir servisi koruyacağınız şekilde güvenli hale getirir.
Ön gereksinimler
Docker ve Docker Compose eklentisi kurulu, Ubuntu 24.04 çalıştıran bir VPS'e ve sudo yetkisine veya docker grubuna dahil bir kullanıcıya ihtiyacınız vardır. Docker sizin için yeniyse, VPS üzerinde Docker Compose temelleri rehberi, kurulumu ve bu kılavuzun temel aldığı ana komutları kapsamaktadır. Dify önünde ham bir IP adresi yerine TLS kullanmak isteyeceğiniz için sunucuya yönlendirilmiş bir alan adına sahip olmanız önerilir.
Adım 1: Dify ve Compose dosyalarını edinme
Dify, Docker kurulumunu ana deposunda tutar. Depoyu klonlayın ve docker dizinine geçin:
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env.env dosyası tüm yapılandırmayı içerir. Herhangi bir işleme başlamadan önce bu dosyayı okuyun. İlk aşamada önemli olan değerler; parolaları ve gizli anahtarları belirleyen SECRET_KEY, Postgres parolası ve Redis parolasıdır. Örnek dosya, yer tutucu değerlerle gelir; bu değerleri olduğu gibi bırakmak, self-hosted Dify kurulumlarının ele geçirilmesinin en yaygın nedenidir. Gerçek bir gizli anahtar oluşturun:
openssl rand -base64 42Bu anahtarı SECRET_KEY içine yapıştırın ve dosyadaki her parola alanı için güçlü, benzersiz bir değer belirleyin.
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ı olduğunu doğrulayın:
docker compose psHer servis running durumunu göstermelidir. Dify, web arayüzünü varsayılan olarak 80 numaralı port üzerinde paketlenmiş bir nginx container'ı aracılığıyla sunar. http://YOUR_SERVER/install adresine ilk ziyaretinizde yönetici hesabını oluşturursunuz. Bunu hemen yapın; başka herhangi birinin porta erişmesine izin vermeden önce bu işlemi tamamlayın, çünkü hesap oluşturulana kadar sayfayı yükleyen herkes hesabı sahiplenebilir ve instance'ınızın kontrolünü ele geçirebilir.
Adım 3: Ham halde dış dünyaya açmayın. Önüne TLS ve güvenlik duvarı yerleştirin
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 ve şifrelenmemiş şekilde 80 numaralı portu dinler. Yönetici giriş bilgilerinizin ve model anahtarlarınızın düz HTTP üzerinden iletilmesini istemezsiniz; ayrıca dahili servislerin dışarıdan erişilebilir olmasını da istemezsiniz.
Sunucuyu, yalnızca SSH ve web trafiğine izin veren varsayılan olarak reddeden (default-deny) 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 enableYalnızca IPv4 trafiğini kapsayan bir güvenlik duvarının, IPv6 üzerinde aynı portları 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.
TLS için en temiz yöntem, Dify'ın web portunu loopback adresine bağlamak ve önünde Let's Encrypt sertifikası kullanan bir reverse proxy çalıştırmaktır. Böylece public internette yalnızca HTTPS konuşan proxy bulunur. Dify'ın .env ayarı, dışarıya açılan portu değiştirmenizi sağlar; bu ayarı 127.0.0.1 adresine bağlanacak şekilde yapılandırın ve proxy'yi bu adrese yönlendirin. VPS üzerinde bir AI agent'ı güvenli biçimde çalıştırma bölümündeki agent güvenliğini artırma ilkeleri burada da geçerlidir: değişken bileşenleri loopback üzerinde tutun, yalnızca public olması gerekenleri dışarı açın ve TLS bağlantısını tek bir güvenliği güçlendirilmiş giriş noktası üzerinden sonlandırın. Bir aracın arayüzü yalnızca sizin kullanımınızdaysa ve hiçbir zaman sertifika gerektirmiyorsa proxy kullanmayın; bunun yerine SSH tüneli üzerinden erişin. open-kritt güvenlik tarayıcısını self-host etme bölümünde olduğu gibi dashboard'u loopback'e bağlayıp laptop'a yönlendirin, internete doğrudan açmayın. Dify'a bütün ekibin erişmesi gerekiyor ancak public internet üzerinden erişim gerekmiyorsa overlay network bu yaklaşımı tek bir laptop'ın ötesine taşır: sunucunun özel subnet'ini tailnet'e duyurma sayesinde yetkilendirilmiş her cihaz builder'a özel bir adres üzerinden erişebilir; firewall ise SSH dışındaki tüm bağlantılara kapalı kalır. Bu sunucuyu elle değil bir coding agent üzerinden yönetiyorsanız, erişim yetkilerini vermeden önce agent'ın denetimsiz olarak ne kadar işlem yapabileceğini netleştirin; çünkü Claude Code'u bıraktığınız permission mode, .env dosyasını yeniden yazmadan veya stack'i yeniden başlatmadan önce durup onay isteyip istemeyeceğini belirler. Bir oturum container loglarını izlerken başka bir oturum proxy yapılandırmasını düzenliyorsa, bu iki oturum aynı sunucuda birbirine metin aktarabilir; böylece stack'i her yeniden başlattığınızda çıktıyı terminaller arasında elle kopyalamanız gerekmez.
Adım 4: Güncellemeleri takip edin
Dify hızlı gelişen bir projedir ve güncellemeler güvenlik yamaları içerir. Güncelleme işlemi, docker dizini içerisinde bir pull ve yeniden başlatma komutu ile gerçekleştirilir:
git pull
docker compose pull
docker compose up -dBüyük bir sürüm değişikliği yapmadan önce sürüm notlarını okuyun. Dify, sürümler arasında zaman zaman .env şemasında değişiklikler yapar; yapılandırmanızda eksik olan yeni bir değişken, 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) belirli bir takvime göre alın ve kopyalarını sunucu dışına aktarın. Bir model API anahtarı yeniden oluşturulabilir; ancak bir hafta boyunca üzerinde çalıştığınız uygulamayı geri getiremezsiniz. Aynı mantık, durumu üzerinde çalıştığı makinenin ömründen daha uzun sürmesi gereken tüm ajanlar için geçerlidir: KiroCrew'u her zaman çalışan bir container olarak tutmak, aksi takdirde bir sonraki yeniden başlatmada kaybolacak bellek ve zamanlama verilerinin 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ı kendi kendine barındırılan bir SearXNG örneğine yönlendirmek, sorgu akışını kontrolünüz altındaki donanımda tutmanızı sağlar; ancak bu özelliği açmadan önce oluşturduğu prompt injection yüzeyi hakkında bilgi edinmenizde fayda vardır. Daha otonom ve kod çalıştırabilen bir ajan için Agent Zero'yu kendi sunucunuzda barındırma konusuna göz atabilir, bir VPS üzerinde kendi yapay zeka ajanınızı oluşturma rehberinden ise tüm bu yapıların temelini öğrenebilirsiniz.
FAQ
Dify'ı kendi sunucunuzda barındırmak için sistem gereksinimleri nelerdir?
Dify, yaklaşık yarım düzine container içeren bir Docker Compose yığını olarak çalışır. Bu nedenle, en az 2 GB boş RAM (ideal olarak 4 GB), birkaç CPU çekirdeği ve yüklenen belgeler ile vektör dizini için yeterli disk alanına sahip bir VPS planlayın. Bellek üzerindeki yük, Dify'ın kendisinden değil, veritabanı ve vektör deposundan kaynaklanır.
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'a bağlayın ve internete yalnızca HTTPS proxy'sinin açılmasını sağlayın. Bunu, hem IPv4 hem de IPv6 trafiğini kapsayan ve varsayılan olarak tüm bağlantıları reddeden bir güvenlik duvarı (firewall) ile destekleyin.
Kendi sunucumda barındırdığım Dify'ı nasıl güncellerim?
docker dizininden git pull komutunu çalıştırın, ardından yeni imajları çekmek ve yeniden başlatmak için docker compose pull ve docker compose up -d komutlarını kullanın. Güncelleme notlarını önceden okuyun; çünkü Dify sürümler arasında bazen yeni .env değişkenleri ekler ve 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. Container'lar sağlıklı bir şekilde çalışmaya başladığı anda ve güvenlik duvarını dış dünyaya açmadan önce bu kurulumu tamamlayın.