Bir web ya da mobil projede çoğu zaman iki ayrı ihtiyaç aynı anda masaya gelir. Geliştirici tarafı, verilere kod içinden erişebileceği düzenli bir API ister. İçerik tarafı — editörler, pazarlamacılar, operasyon ekibi — ise veritabanının nasıl çalıştığını hiç bilmeden kayıt ekleyip düzenleyebileceği bir arayüz bekler. Bu iki isteği ayrı ayrı çözmek genellikle iki ayrı yazılım, iki ayrı bakım yükü demektir. Directus işte tam bu noktada devreye girer: bir SQL veritabanının üzerine oturup ona hem anlık REST ve GraphQL API hem de teknik bilgi gerektirmeyen bir görsel yönetim paneli ekler.
Bu yazıda Directus'un ne olduğunu, "headless CMS" tanımının neye karşılık geldiğini, rol/izin ve dosya yönetimi gibi öne çıkan özelliklerini, hangi projelerde işe yaradığını ve WordPress, Strapi, Supabase gibi seçeneklerden nerede ayrıştığını sırayla ele alacağız. Ayrıca Directus'u kendi sunucunuzda barındırmanın somut getirilerine ve kurulum için gereken temel şartlara da değineceğiz.
Directus Nedir, Ne İşe Yarar#
Directus, kendisini "veri platformu" olarak konumlandıran açık kaynaklı bir yazılımdır; en yaygın kullanımı ise headless CMS olmasıdır. Klasik içerik yönetim sistemlerinden ayrıldığı en temel nokta, verilerinizi kendine özel, dışarıdan okunması güç bir yapıda tutmamasıdır. Bunun yerine standart bir SQL veritabanına — PostgreSQL, MySQL, MariaDB, SQLite ya da Microsoft SQL Server gibi — doğrudan bağlanır ve o veritabanındaki tabloları oldukları haliyle tanır.
Bu tercihin iki pratik sonucu var. Birincisi, halihazırda çalışan bir veritabanının üzerine Directus'u kurabilirsiniz. Directus tabloları kendi biçimine çevirmez; sizin tablo ve alan yapınızı olduğu gibi kullanır. İkincisi, tanıdığı her tablo için otomatik olarak bir REST uç noktası ve bir GraphQL şeması üretir. Yani yeni bir tablo eklediğinizde ya da bir alan tanımladığınızda, o veri ek bir kod yazmanıza gerek kalmadan API üzerinden erişilebilir hale gelir.
Panel tarafında editörlerin karşısına çıkan ekran ise tablo ve form odaklı, sade bir arayüzdür. İçerik ekibi arka plandaki veritabanını hiç görmeden kayıt ekler, düzenler, dosya yükler ve içerik durumunu takip eder. Özetle Directus, geliştirici için API, editör için panel cümlesiyle anlatılabilecek çift taraflı bir köprü kurar.
Headless CMS Kavramı#
"Headless" (başsız) sözcüğü ilk duyulduğunda kafa karıştırabilir. Geleneksel bir CMS — mesela klasik kurulumuyla WordPress — hem içeriği saklar hem de o içeriği ziyaretçiye gösteren siteyi (temayı, şablonları) kendi üretir. Yani içerik ile görünüm aynı sistemin içinde birbirine bağlıdır. Headless CMS bu iki katmanı ayırır: yalnızca içeriği saklayıp API üzerinden sunar, içeriğin nasıl gösterileceğine hiç karışmaz.
Görünüm katmanı — yani "head" — artık bağımsız bir uygulamadır. Bu, React ya da Vue ile yazılmış bir web sitesi olabilir; bir mobil uygulama, bir masaüstü programı, hatta mağazadaki bir dijital ekran da olabilir. Hepsi aynı Directus API'sinden aynı içeriği çeker.
Bu ayrımın en pratik faydası tek kaynaktan çok kanala yayın yapabilmenizdir. Bir ürün açıklamasını Directus'a bir kez girersiniz; onu hem web sitenizde, hem mobil uygulamanızda, hem de bir e-posta bülteninde aynı API'den okursunuz. İçerik ile sunum ayrıldığı için, ileride ön yüz teknolojinizi değiştirmeye karar verseniz bile içeriğe dokunmanız gerekmez; yalnızca yeni "head" aynı API'ye bağlanır.
Temel Özellikler#
Directus'u yalnızca "otomatik API üreten bir araç" diye görmek onu eksik anlatır; çevresinde epey olgunlaşmış bir yönetim katmanı vardır:
- Anlık REST ve GraphQL API: Her koleksiyon (tablo) için otomatik oluşur; filtreleme, sıralama, sayfalama ve ilişkili kayıtları birlikte çekme desteğiyle gelir.
- Görsel veri modelleme: Panelden yeni tablolar, alanlar ve tablolar arası ilişkiler tanımlarsınız; bu değişiklikler arka planda gerçek veritabanı şemasına yansır.
- Rol ve izin sistemi: Hangi rolün hangi koleksiyonda hangi kaydı okuyabileceğini, düzenleyebileceğini veya silebileceğini alan düzeyine kadar inen kurallarla belirlersiniz.
- Dosya ve medya yönetimi: Yüklenen görseller, PDF'ler ve diğer dosyalar tek bir kütüphanede toplanır; görsellerde istenen boyuta göre kırpma ve dönüştürme yapılabilir. Depolama olarak yerel disk ya da S3 uyumlu bir servis kullanılabilir.
- Kullanıcı yönetimi: Panele giren editörler ile API'yi tüketen uygulama kullanıcıları aynı sistem üzerinden yönetilir.
- Akışlar (Flows) ve webhook'lar: Yeni kayıt veya güncelleme gibi olaylara tepki veren otomasyonlar kurabilir, dış servislere bildirim gönderebilirsiniz.
- Genişletilebilirlik: Kendi arayüz bileşenlerinizi, panel modüllerinizi ve özel API uç noktalarınızı eklentiler (extensions) aracılığıyla ekleyebilirsiniz.
Bu parçalar bir araya geldiğinde Directus, basit bir içerik deposunun ötesine geçip gerçek bir uygulama arka ucu (backend) işini görür.
Kullanım Senaryoları#
Directus'un esnekliği, onu oldukça farklı projelerde kullanışlı kılar. En sık karşılaşılan senaryolar şunlar:
- Web ve mobil uygulama backend'i: React, Next.js, Flutter ya da native bir mobil uygulama için içerik ve veri katmanı olarak Directus'u kullanır, ön yüzü veriyi API'den beslersiniz.
- İçerik altyapısı (headless CMS): Blog yazıları, ürün kataloğu, kampanya sayfaları veya çok dilli içerikleri editörlerin rahatça yönettiği bir panelden girer, siteye API ile taşırsınız.
- Mevcut bir veritabanına arayüz eklemek: Elinizde zaten dönen bir SQL veritabanı varsa, üstüne Directus kurarak teknik olmayan ekibinize hazır bir yönetim paneli, dış sistemlere de kullanıma hazır bir API kazandırırsınız.
- İç kurumsal araçlar: Sipariş takibi, envanter ya da müşteri kaydı gibi iç operasyon araçlarını sıfırdan yazmak yerine Directus'un paneli üzerinden hızlıca kurgularsınız.
- Çok kanallı yayın: Aynı içeriği web, mobil ve dijital ekran gibi farklı kanallara tek kaynaktan dağıtırsınız.
Directus'u başka araçlarla birlikte kullanmak da yaygın bir yaklaşımdır. Örneğin bir otomasyon aracıyla — n8n hakkındaki yazımızda anlattığımıza benzer biçimde — Directus'ta yeni bir kayıt oluştuğunda tetiklenen bir akış kurup gelen veriyi başka servislere aktarabilirsiniz.
Avantajları ve Dikkat Edilmesi Gerekenler#
Directus'un en belirgin avantajı, veriyi kendi standart SQL veritabanınızda tutmasıdır. Kayıtlar herkesin okuyabildiği bir tablo yapısında durduğu için, ileride Directus'u tümden bıraksanız bile veritabanınız kendi başına anlamlı ve taşınabilir kalır. Bu da sizi büyük ölçüde ürüne bağımlılıktan (vendor lock-in) korur. Buna ek olarak, kod yazmadan API çıkarması geliştirme süresini gözle görülür biçimde kısaltır; rol ve izin sistemi de kurumsal ihtiyaçlara rahatça uyar.
Yine de her aracı olduğu gibi Directus'u da dengeli değerlendirmek gerekir:
- Ön yüzü siz geliştirirsiniz. Directus headless olduğu için hazır bir tema sistemi sunmaz. Ziyaretçinin göreceği arayüzü ayrı bir uygulamayla kurmanız gerekir. Amacınız yalnızca basit bir blog açmaksa bu ek iş yükü gereksiz gelebilir.
- Belli bir öğrenme eğrisi var. Roller, ilişkiler ve akışlar güçlü araçlar olsa da ilk kurulumda kavranması zaman ister; klasik bir CMS'e kıyasla daha "geliştirici odaklı" bir düşünce biçimi vardır.
- Sürüm ve lisans takibi. Directus açık kaynaklıdır, ancak son yıllarda lisansı değişti: güncel sürümler artık klasik açık kaynak lisansları yerine kaynak-erişimli bir lisans (Business Source License) altında dağıtılıyor ve belirli bir gelir eşiğini aşan ticari kullanım için ayrı koşullar getirebiliyor. Bu yüzden ticari bir projede kullanmadan önce kullandığınız sürümün güncel lisans metnini kontrol etmenizde fayda var.
Bu maddeler Directus'u kötü bir seçim yapmaz; yalnızca doğru projede, doğru beklentiyle kullanılması gerektiğini hatırlatır.
Neden Kendi Sunucunuzda Barındırmalısınız#
Directus'un bir bulut (hosted) sürümü de bulunuyor; yine de onu kendi sunucunuzda barındırmanın (self-host) somut getirileri var — özellikle Türkiye'de faaliyet gösteren bir işletmeyseniz.
Veri sahipliği ve KVKK. Directus çoğu zaman müşteri kayıtları, sipariş bilgileri ya da diğer kişisel veriler içeren tabloları yönetir. Bu verilerin nerede saklandığı ve nasıl işlendiği KVKK kapsamında doğrudan sizin sorumluluğunuzdadır. Directus'u kendi sunucunuzda çalıştırdığınızda hem veritabanı hem de yüklenen dosyalar sizin denetiminizde kalır; veriyi üçüncü taraf bir platforma emanet etmek zorunda kalmazsınız. Sunucunun Türkiye'de olması da, verinin yurt içinde tutulması açısından ek bir kolaylık sağlar.
Maliyet öngörülebilirliği. Bulut tabanlı CMS ve backend hizmetleri genellikle kullanıcı sayısı, API çağrı adedi veya kayıt hacmi üzerinden ücretlendirir; proje büyüdükçe bu kalemler hızla kabarır. Kendi sunucunuzda çalıştırdığınızda Directus'un yazılımı ücretsizdir (yukarıda değinilen lisans eşikleri saklı kalmak üzere); yalnızca sunucu kaynağınızın bedelini ödersiniz ve maliyetiniz büyük ölçüde sabit kalır.
Tam kontrol. Sürüm yükseltmelerini ne zaman yapacağınıza siz karar verir, yedekleme düzenini kendinize göre kurar, gerektiğinde özel eklentiler ekler ve performansı doğrudan yönetirsiniz.
Kendi altyapınızı yönetmeyi düşünüyorsanız bir VDS sunucu ya da sanal sunucu bu tür uygulamalar için sağlam bir zemin sunar. Directus'un merkezinde veritabanı olduğundan, daha ilk günden düzenli bir yedekleme planı kurmanızı özellikle öneririz; ileride başka bir sunucuya taşınmanız gerekirse site taşıma sürecini de bu yedekler kolaylaştırır.
Kurulum ve Gereksinimler#
Directus, Node.js tabanlı bir uygulamadır ve genelde iki yolla kurulur: doğrudan npm paketiyle ya da Docker ile. Üretim ortamlarının çoğunda Docker tercih edilir, çünkü bağımlılıkları izole eder ve kurulumu bir makineden diğerine taşımayı kolaylaştırır. Directus çalışmak için mutlaka bir SQL veritabanına ihtiyaç duyar; küçük denemelerde SQLite yeterli olsa da gerçek projelerde çoğunlukla PostgreSQL veya MySQL kullanılır.
Kaynak gereksinimi projenin büyüklüğüne göre değişir; makul bir başlangıç noktası aşağıdaki gibi düşünülebilir:
| Kullanım | Önerilen CPU | RAM | Not |
|---|---|---|---|
| Deneme / küçük proje | 1 vCPU | 1–2 GB | SQLite veya küçük DB ile |
| Küçük–orta üretim | 2 vCPU | 2–4 GB | PostgreSQL/MySQL önerilir |
| Yoğun trafik | 4+ vCPU | 8+ GB | Veritabanını ayrı ölçeklemek gerekebilir |
Docker ile temel bir kurulum kabaca şöyle görünür:
docker run -d \
--name directus \
-p 8055:8055 \
-e KEY="cok-gizli-bir-anahtar" \
-e SECRET="cok-gizli-bir-secret" \
-e ADMIN_EMAIL="[email protected]" \
-e ADMIN_PASSWORD="guclu-bir-parola" \
-v ./data:/directus \
directus/directus
Bu komut Directus'u 8055 portunda başlatır ve verileri kalıcı bir birimde tutar. Üretimde bunun önüne bir ters proxy (Nginx ya da Caddy), geçerli bir HTTPS sertifikası ve gerçek bir veritabanı bağlantısı eklemeniz; ayrıca KEY ve SECRET değerlerini güçlü ve rastgele değerlerle doldurmanız gerekir. Bu değerler oturum ve şifreleme işlemlerinde kullanıldığı için basit bırakılmamalıdır.
Bu adımlarla tek tek uğraşmak istemiyorsanız, Clou.TR App Center işi belirgin biçimde sadeleştirir: Directus'u App Center üzerinden tek tıkla kurabilir, Docker komutları, port yönlendirmesi, veritabanı ve sertifika ayarlarıyla ayrı ayrı ilgilenmek yerine çalışır durumda bir kurulumla başlayabilirsiniz. Tek tıkla kurulabilen diğer uygulamalara App Center ana sayfasından göz atabilirsiniz.
Benzer Araçlarla Karşılaştırma#
Directus tek seçenek değildir; doğru araç projenizin ihtiyacına göre değişir. En sık kıyaslandığı araçlarla arasındaki temel farklar şöyle özetlenebilir:
| Araç | Türü | Ne zaman tercih edilir |
|---|---|---|
| Directus | SQL üzerine headless CMS + API | Standart veritabanı ve hazır API isteyene; mevcut DB'yi sarmak için |
| WordPress | Geleneksel (tam) CMS | Hazır tema ve eklentiyle hızlı bir site/blog kuranlar için |
| Strapi | Node tabanlı headless CMS | Çok özelleştirilebilir, kod odaklı bir headless çözüm arayanlar için |
| Supabase | Backend platformu (PostgreSQL) | Kimlik doğrulama, gerçek zamanlı akış ve DB'yi bir arada isteyene |
Kısaca toparlarsak: Hazır bir temayla hemen yayına geçmek istediğiniz klasik bir site için WordPress ya da yalın bir blog için Ghost daha kestirme bir yol sunar. Buna karşılık ön yüzü kendiniz geliştirip içeriği API'den beslemek istiyorsanız Directus çok daha yerinde bir seçimdir. Directus'u benzerlerinden ayıran en net özellik, veriyi kendi standart SQL şemanızda tutması ve mevcut bir veritabanının üzerine kurulabilmesidir. Kimlik doğrulama ve gerçek zamanlı özellikleri de kapsayan daha geniş bir backend platformu arıyorsanız Supabase gibi bir çözümü değerlendirebilir; blog odaklı bir alternatif için ise Ghost blog kurulumu yazımıza bakabilirsiniz.
Sıkça Sorulan Sorular#
Directus'u kullanmak için programlama bilmem gerekir mi?#
İçerik girmek ve paneli kullanmak için kod bilmenize gerek yoktur; editörler her işlemi görsel arayüzden yürütür. Ancak Directus bir backend olduğundan, ürettiği API'yi kendi web ya da mobil uygulamanıza bağlamak isteyen tarafta geliştirici bilgisi gerekir. Kısacası içerik ekibi kodsuz çalışır, ön yüzü kuran ekip ise API ile ilgilenir.
Directus mevcut veritabanımla çalışır mı?#
Evet, bu Directus'un en güçlü yanlarından biridir. Elinizdeki PostgreSQL, MySQL, MariaDB, SQLite ya da SQL Server veritabanının üzerine kurabilir, hâlihazırdaki tablolarınızı olduğu gibi tanıtabilirsiniz. Directus verilerinizi kendine özel bir biçime çevirmez; kayıtlarınız standart şemada kalmayı sürdürür.
Directus ile WordPress arasındaki temel fark nedir?#
WordPress geleneksel bir CMS'tir; içeriği saklamanın yanında ziyaretçinin gördüğü web sitesini de temalar aracılığıyla kendisi üretir. Directus ise headless'tir: yalnızca içeriği ve veriyi API üzerinden sunar, görünümü hiç üretmez. Ön yüzü ayrı bir uygulamayla siz geliştirirsiniz. Hazır bir tema arıyorsanız WordPress, esnek bir API katmanı arıyorsanız Directus daha uygundur.
Directus ücretsiz mi?#
Directus'un açık kaynaklı sürümünü kendi sunucunuzda ücretsiz çalıştırabilirsiniz; bu senaryoda maliyetiniz yalnızca sunucu kaynağınızdan oluşur. Bunun yanında şirketin sunduğu bir bulut (hosted) plan da vardır. Ayrıca son sürümlerin lisansı belirli bir gelir eşiğinin üzerindeki ticari kullanım için ek koşullar içerebildiğinden, kurumsal bir projede kullanmadan önce güncel lisans metnini kontrol etmeniz iyi olur.
REST mi yoksa GraphQL mi kullanmalıyım?#
Directus her koleksiyon için ikisini de otomatik sunar, tercih tamamen sizin projenize kalmıştır. REST daha basit ve tanıdıktır, hızlı entegrasyonlarda pratiktir. GraphQL ise tek istekte tam olarak ihtiyacınız olan alanları ve ilişkili verileri çekmenize izin verdiği için, iç içe ve karmaşık veri yapılarında daha verimli olabilir. Küçük bir projede REST çoğu zaman fazlasıyla yeter; veri modeliniz büyüdükçe GraphQL'in esnekliği belirginleşir.
Directus bir CDN veya tema mağazası içerir mi?#
Hayır. Directus içeriği yönetir ve API olarak sunar; ziyaretçinin gördüğü arayüzü, temayı ya da içerik dağıtım ağını (CDN) sağlamaz. Bunları ön yüz uygulamanızda ve barındırma altyapınızda ayrıca kurgularsınız. Directus'un işi veri katmanıdır; sunum ve dağıtım katmanı sizde kalır.
Directus, içerik yönetimi ile veri altyapısını tek araçta buluşturarak hem geliştiricinin hem de içerik ekibinin işini hafifletir. Standart bir SQL veritabanının üzerine anlık API ve görsel bir panel eklemek istiyorsanız, kurulum ayrıntılarında boğulmadan hızlıca başlayabilirsiniz. Çalışır durumda bir kurulumla denemek isterseniz, Directus'u Clou.TR App Center'da tek tıkla kurabilir ve ilk koleksiyonunuzu dakikalar içinde oluşturmaya başlayabilirsiniz.