SSD Nodes Learn Hosting plans →
Rehberler Matt ConnorYazan Matt Connor · Güncellendi 2026-08-13

En iyi self-hosted wiki yazılımları karşılaştırması

BookStack, Wiki.js ve Outline yazılımlarını kurulum, editör yapısı ve kimlik doğrulama seçenekleri açısından inceleyin. Ekibiniz veya kişisel kullanımınız için en uygun aracı seçin.

Hangi self-hosted wiki kullanılmalı

Self-hosted bir wiki, ekibinizin belgelerini kontrolünüz altındaki bir sunucuda, aranabilir tek bir yerde toplar. BookStack, Wiki.js ve Outline bu işi yapar. Bu araçlar arasındaki temel fark, ilk sayfa yüklenmeden önce ne kadar kurulum yapmanız gerektiği ve kimlerin giriş yapabileceği konusundadır.

BookStack, kurulumu en hafif olan ve yapı konusunda en belirgin kurallara sahip olan araçtır. Wiki.js, tek bir sayfa ağacı üzerinde en geniş editör seçeneğini sunar. Outline, bu üçü arasında en iyi yazma deneyimini sağlar ve siz harici bir kimlik sağlayıcısı bağlamadan kimsenin giriş yapmasına izin vermez.

Aşağıdaki tüm bilgiler, projelerin kendi dokümantasyonlarından ve yayınlanmış yapılandırma dosyalarından alınmıştır. Bu bir yetenek karşılaştırmasıdır, performans testi değildir. Sürüm numaraları ve gereksinimler bir tarihle damgalanmıştır çünkü her üç proje de sürekli güncellenmektedir.

Yapı gerçek tercihtir

BookStack, içeriğinizin biçimini sabitler. Bir sayfa bir kitabın içinde yer alır, bir kitap bölümleri barındırabilir ve raflar kitapları gruplandırır. Beşinci bir seviye oluşturamazsınız. Bu sınırlama ürünün kendisidir: yeni bir yazar, bir sayfanın nereye gideceğini bilir çünkü gidebileceği tek bir yer vardır. Bunun bedeli, bu biçime uymayan içeriğin zorla dahil edilmesidir.

Wiki.js, disk üzerindeki klasörler gibi bir yol ağacı kullanır. ops/backup/restic adresindeki bir sayfa, onu nereye koyarsanız orada durur ve derinliği siz belirlersiniz. İki kişinin aynı konuyu iki farklı dal altına dosyalamasını engelleyen bir şey yoktur, bu nedenle bir Wiki.js örneği, ağacın sorumluluğunu üstlenen bir kişiye ihtiyaç duyar.

Outline, içinde belgeler iç içe geçmiş koleksiyonlar kullanır. Bir belgeyi taşımak fare ile sürükleyip bırakmaktan ibarettir. Bu üçü arasında en esnek olanıdır, bu nedenle kontrolden çıkması da en kolay olanıdır.

BookStack: en küçük kurulum

BookStack, MySQL destekli bir PHP uygulamasıdır. Temmuz 2026 itibarıyla belgelenen gereksinimler PHP 8.2 veya daha yeni bir sürüm ile MySQL 8.0 ya da MariaDB 10.6 veya daha yeni bir sürümdür; kaynaktan kurulum yapıyorsanız bunlara ek olarak Composer 2.2 veya daha yeni bir sürüm gereklidir. Mevcut sürüm serisi 26.05'tir.

Proje, her Ubuntu sürümü için bir kurulum betiği yayınlar. 24.04 betiği sizin için Apache, MySQL 8.0 ve PHP 8.3 kurulumunu gerçekleştirir.

wget https://codeberg.org/bookstack/devops/raw/branch/main/scripts/installation-ubuntu-24.04.sh
chmod a+x installation-ubuntu-24.04.sh
sudo ./installation-ubuntu-24.04.sh

Bu betiği çalıştırmadan önce üzerindeki uyarıyı okuyun. Belgeler, betiğin "SADECE TEMİZ BİR İŞLETİM SİSTEMİ İÇİN OLDUĞUNU, Apache, MySQL 8.0 ve PHP 8.3 kuracağını ve makinedeki mevcut web yapılandırmasının üzerine YAZABİLECEĞİNİ" belirtir. 80 numaralı portta halihazırda yanıt veren bir sunucuda, betik bu portu devralır ve Apache yapılandırmasını yeniden yazar. Bu tür durumlarda container kullanın veya BookStack'i Ubuntu 24.04 üzerinde mevcut bir LAMP yığını üzerine manuel olarak kurun.

Container yöntemi, BookStack belgelerinin de işaret ettiği LinuxServer.io imajını kullanır. BookStack bir oturum şifreleme anahtarına ihtiyaç duyar ve bu anahtar olmadan sayfaları sunmaz; bu yüzden önce anahtarı oluşturun.

docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkey

Ekrana yazdırılan değeri APP_KEY içine kopyalayın, ardından servisi yazın:

services:
  bookstack:
    image: lscr.io/linuxserver/bookstack:latest
    container_name: bookstack
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
      - APP_URL=https://wiki.example.com
      - APP_KEY=paste_the_generated_key_here
      - DB_HOST=bookstack_db
      - DB_PORT=3306
      - DB_USERNAME=bookstack
      - DB_PASSWORD=change_me
      - DB_DATABASE=bookstackapp
    volumes:
      - ./config:/config
    ports:
      - 6875:80
    restart: unless-stopped

APP_URL, okuyucuların gerçekte yazdığı adresle, şema ve varsa port dahil olmak üzere eşleşmelidir. Bu değeri http://localhost olarak ayarlayın; aksi takdirde site HTTPS üzerinden sunulur ancak oluşturulan bağlantılar ve yönlendirmeler yanlış ana makineye işaret eder, bu da okuyucuların kendi kendine döngüye giren bir giriş sayfası görmesine neden olur. Compose dosyaları sizin için yeniyse, bu işlemden önce VPS üzerinde Docker Compose temelleri konusuna göz atın.

Uygulamayı ayağa kaldırın ve sadece container'ın çalıştığını değil, uygulamanın da yanıt verdiğini doğrulayın:

docker compose up -d
docker compose ps
curl -sI http://127.0.0.1:6875/login

Bir 200 OK, PHP uygulamasının başlatıldığını ve veritabanına ulaştığını gösterir. Bir 500 ise neredeyse her zaman APP_KEY değerinin boş olduğu veya veritabanı kimlik bilgilerinin eşleşmediği anlamına gelir; docker compose logs bookstack komutu bu ikisinden hangisinin sorun olduğunu yazdırır.

Wiki.js: tek ağaç, birden fazla düzenleyici

Wiki.js bir Node.js uygulamasıdır. Belgelenen Docker kurulumu, yazılımın MySQL, MariaDB, MSSQL ve SQLite desteklemesine rağmen PostgreSQL ile eşleştirilmesini önerir. Aşağıdaki dosya, projenin kendi Docker sayfasından alınan compose dosyasıdır:

services:
  db:
    image: postgres:15-alpine
    environment:
      POSTGRES_DB: wiki
      POSTGRES_PASSWORD: wikijsrocks
      POSTGRES_USER: wikijs
    logging:
      driver: none
    restart: unless-stopped
    volumes:
      - db-data:/var/lib/postgresql/data
  wiki:
    image: ghcr.io/requarks/wiki:2
    depends_on:
      - db
    init: true
    environment:
      DB_TYPE: postgres
      DB_HOST: db
      DB_PORT: 5432
      DB_USER: wikijs
      DB_PASS: wikijsrocks
      DB_NAME: wiki
    restart: unless-stopped
    ports:
      - "80:3000"
volumes:
  db-data:

Çalıştırmadan önce POSTGRES_PASSWORD ve DB_PASS değerlerini birlikte değiştirin; bunlar tek bir kimlik bilgisi çiftidir ve örnek değer herkese açıktır. Etiket, ghcr.io/requarks/wiki:2 sürümüne özellikle sabitlenmiştir. Belgeler latest kullanımına karşı uyarıda bulunur, çünkü ana sürüm yükseltmeleri çalışan bir örnekte veritabanı şemasını değiştirir.

Çalıştırılması gereken sürüm 2 hattıdır. Temmuz 2026 itibarıyla en yeni sürüm 2 sürümü, Mayıs 2026 tarihli 2.5.314'tür. Sürüm 3 mevcuttur ve kendi belgelerinde şu ifade yer alır: "Bu site Wiki.js 3.0'ın kararsız beta sürümü içindir. Bunu üretim ortamına kurmamalısınız." :3 etiketini bir önizleme olarak değerlendirin.

İlk yüklemede Wiki.js, yönetici hesabını oluşturan tarayıcı tabanlı bir kurulum sihirbazı ile sizi yönlendirir. Kurulumu tamamlayana kadar, porta erişen herkes bu sihirbazı görebilir; bu nedenle güvenlik duvarını açmadan önce servisi reverse proxy'nizin ve TLS (taşıma katmanı güvenliği) yapılandırmanızın arkasına alın. Sunucuda bu servisten fazlası barındırılıyorsa, kendine ait bir ana bilgisayar adındaki wiki, doğal olarak birden fazla Docker uygulamasının önünde Traefik yapısının arkasında yer alır.

Düzenleyici seçeneği, insanların Wiki.js'i tercih etme nedenidir. Tek bir örnek; Markdown sayfalarını, görsel düzenleyici sayfalarını, ham HTML sayfalarını ve AsciiDoc sayfalarını yan yana barındırabilir. Bu, dönüştürmek istemediğiniz bir formattaki eski içerikleri içe aktarırken yardımcı olur. Aynı zamanda tek bir wiki içinde dört farklı yazım tarzı oluşmasına da yol açabilir; bu nedenle varsayılan düzenleyiciye ilk günden karar verin ve bu kararı not edin.

Taslak: en iyi düzenleyici, en ağır ön gereksinimler

Taslak (Outline), kullanıcıların ticari bir not aracı hissi veren bir yazılım istediklerinde genellikle kastettikleri şeydir. Bir Node.js uygulamasıdır ve Temmuz 2026 itibarıyla güncel sürümü 1.9.2'dir. Örnek ortam dosyası ihtiyaç duyduğu bileşenleri listeler: DATABASE_URL üzerinden PostgreSQL, REDIS_URL üzerinden Redis, iki rastgele gizli anahtar ve herkese açık erişilebilir bir URL.

openssl rand -hex 32
openssl rand -hex 32

Bunu iki kez çalıştırın ve her iki değeri de saklayın. İlki SECRET_KEY, ikincisi UTILS_SECRET olur. Ortam dosyasının çekirdek kısmı şu şekilde görünür:

NODE_ENV=production
URL=https://docs.example.com
PORT=3000
SECRET_KEY=<first openssl value>
UTILS_SECRET=<second openssl value>
DATABASE_URL=postgres://outline:change_me@postgres:5432/outline
PGSSLMODE=disable
REDIS_URL=redis://redis:6379
FILE_STORAGE=local
FILE_STORAGE_LOCAL_ROOT_DIR=/var/lib/outline/data

PGSSLMODE=disable yalnızca veritabanı aynı makinede veya aynı Docker ağında bulunduğunda doğrudur. Ağ üzerinden erişilen bir veritabanı için bunu boş bırakın, aksi takdirde bağlantı şifrelenmemiş olarak iletilir. Ekler artık sizi nesne depolamaya zorlamaz: FILE_STORAGE=local, yüklemeleri bir üst dizine yazar; bu dizin container'ın yazabileceği bir volume olmalı ve yedeklerinize dahil edilmelidir. Bu dosyaların S3 uyumlu bir bucket içinde olmasını istiyorsanız, AWS_* değerlerini kullanarak FILE_STORAGE=s3 ayarını yapın.

Şimdi insanları şaşırtan kısma gelelim. Outline'ın yerleşik bir kullanıcı adı ve parola girişi yoktur. Kendi örnek yapılandırması, üçüncü taraf giriş kimlik bilgilerinin gerekli olduğunu belirtir: "çalışan bir kurulum için bunlardan EN AZ BİRİ gereklidir, aksi takdirde hiçbir giriş seçeneğiniz olmaz". Belgelenen sağlayıcılar arasında Google, Slack, Microsoft Entra, Discord ve OIDC_CLIENT_ID, OIDC_CLIENT_SECRET, OIDC_AUTH_URI, OIDC_TOKEN_URI ve OIDC_USERINFO_URI aracılığıyla herhangi bir genel OpenID Connect (OIDC) sunucusu bulunur.

Bu nedenle Outline'ın gerçek maliyeti; Outline artı PostgreSQL artı Redis artı bir kimlik sağlayıcıdır. Ekibiniz zaten Google Workspace veya Microsoft Entra ile giriş yapıyorsa, bu son parça size on dakikaya mal olur ve Outline oldukça cazip hale gelir. Eğer yapmıyorsa, Keycloak veya Authentik gibi bir şeyi de self-host etmeniz gerekir; bu da yamalanması ve yedeklenmesi gereken ikinci bir servis demektir. Bellek bütçesini buna göre ayarlayın: Outline'ın kendi kılavuzuna göre, veritabanı ve Redis'in üzerine ek olarak, WEB_CONCURRENCY tarafından belirlenen her web süreci için yaklaşık 512 MB gereklidir.

Her biri kimin neyi okuyabileceğini nasıl yönetir

BookStack, kutudan çıktığı haliyle yerel e-posta ve parola hesaplarını destekler; alternatif olarak LDAP, SAML2 ve OIDC protokollerini kullanabilir. İzinler rol bazlı tanımlanır ve belirli bir raf, kitap, bölüm veya sayfa üzerinde geçersiz kılınabilir. Hiyerarşi sabit olduğundan, izinler tahmin edilebilir bir şekilde alt öğelere miras bırakılır.

Wiki.js de yerel hesaplarla gelir ve yönetim panelinden etkinleştirebileceğiniz uzun bir strateji listesi sunar. Sayfa kuralları, yol desenlerine göre erişime izin verir veya engeller. Bu oldukça güçlü bir yöntemdir ancak yanlış yapılandırılması kolaydır; çünkü ops/* için yazılan bir kural, daha sonra bu yolun altına ekleyeceğiniz her sayfayı sessizce kapsar.

Outline, bu konudaki yetkiyi tamamen dışarıya devreder. Üyelik, kimlik sağlayıcınız üzerinden yönetilir; Outline içerisinde ise erişimi koleksiyon ve grup bazlı kontrol edersiniz. Bir çalışan şirketten ayrıldığında geride sahipsiz bir yerel hesap kalmaz; kimlik sağlayıcının aynı zamanda kullanıcı yetkilerinin kaldırıldığı sistem olması büyük bir avantajdır.

Arama işlevi her birinde nasıl çalışır

Arama özelliği, bir wikinin değerini kanıtladığı veya unutulmuş dosyalardan oluşan bir klasöre dönüştüğü noktadır.

BookStack veritabanı üzerinde arama yapar ve okuyuculara bir dakikada öğrenebilecekleri bir sorgu dili sunar. "london meeting" örneğinde olduğu gibi bir ifadeyi tırnak içine almak, tam olarak o dizinin aranmasını gerektirir. Köşeli parantezler etiketleri arar: [location=london], etiket adına, değerine veya her ikisine göre eşleşme sağlar; !=, >= ve like gibi karşılaştırma operatörlerini destekler. Süslü parantezler, {created_after:2016-12-30} örneğinde olduğu gibi meta veriler üzerinde filtreleme yapar. Herhangi bir tam eşleşme, etiket veya filtre terimi, önüne - eklenerek olumsuzlanabilir. BookStack, bir sorgunun içerebileceği her türden terim sayısını sınırlar; bu nedenle çok uzun sorgular çalıştırılmak yerine kısaltılır.

Wiki.js, aramayı takılabilir bir modül olarak ele alır. Dokümante edilmiş motorlar; temel bir veritabanı motoru, PostgreSQL motoru, Elasticsearch, Algolia, AWS CloudSearch ve Azure Search'tür. Temel motor, birkaç yüz sayfalık wikiler için yeterlidir. Eğer PostgreSQL kullanıyorsanız, basit eşleştirme yerine veritabanının kendi tam metin dizinini (full text index) kullandığı için yönetim panelinden PostgreSQL motoruna geçiş yapın. Elasticsearch'ü ise ancak ikinci bir arama servisini çalıştırmayı ve yamalamayı kabul edeceğiniz kadar büyük bir wikiniz varsa tercih edin.

Outline, PostgreSQL tam metin dizinleri üzerinde arama yapar. Seçilecek bir motor veya ayarlanacak bir parametre yoktur; ayrıca yüklenen belgelerin içindeki metinleri de arar. Birkaç bin belgelik bir ekip wikisi için bu üç seçenek arasında en az çaba gerektiren yöntem budur. Ancak arama hızı yetersiz kalmaya başlarsa müdahale edilebilecek bir ayar seçeneği de bulunmamaktadır.

Hangi seçenek size uygun

Wiki uygulamanızı bu öğleden sonra çalışır hale getirmek istiyorsanız ve yapıdan ziyade içerik üzerine tartışmayı tercih ediyorsanız BookStack'i seçin. En az hareketli parçaya sahip olan seçenektir: bir PHP uygulaması ve bir MySQL veritabanı. Dahili operasyonel rehberler (runbook) ve müşteri dokümantasyonu için uygundur; ayrıca yazarların çoğunun mühendis olmadığı ekipler için idealdir. Yedeklenmesi en kolay olan seçenek de budur, çünkü tüm durum bir veritabanı dökümü ve yüklemeler dizininden ibarettir.

Diğerlerinin sunmadığı özel bir düzenleyiciye veya özel bir kimlik doğrulama stratejisine ihtiyacınız varsa ya da mevcut büyük bir Markdown veya AsciiDoc içeriğini içe aktarıp yol yapısını korumak istiyorsanız Wiki.js'i seçin. Daha ağır bir yığın çalıştırdığınızı kabul edin ve ana sürüm etiketini sabitleyin.

Yazı kalitesi en önemli kriterse, wiki halka açık değil bir ekip içinse ve halihazırda bir kimlik sağlayıcınız varsa Outline'ı seçin. Bu kurulum, kullanıcıların kullanmaktan gerçekten keyif aldığı bir düzenleyici ile karşılığını verir. Bunu ilk self-hosted uygulamanız olarak seçmeyin.

Eğer bu üçü de size uymuyorsa, uyumsuzluk genellikle içerik türünden kaynaklanır. Taranmış faturalar ve sözleşmeler bir wiki yerine Paperless-ngx gibi bir belge yönetim sistemi içinde yer almalıdır; bunları bir wikiye zorlamak, birçok wikinin terk edilmesinin nedenidir. Diğer yaygın uyumsuzluk ise bir wiki yerine; belgelerin, tabloların ve beyaz tahtanın tek bir tuval üzerinde olduğu bir çalışma alanı istemektir; bu noktada self-hosted bir AFFiNE çalışma alanı yukarıdaki üç seçenekten daha iyi bir uyum sağlar. Kendi sunucunuzda yer almayı hak eden diğer uygulamalara daha geniş bir bakış için 2026 yılı self-hosting kısa listesine göz atın.

Boyutlandırma ve yedekleme

Her üç uygulama da küçük bir VPS üzerinde çalışabilir; ancak gerçekçi alt sınır, her birinin arka planında çalışan bileşenlere göre farklılık gösterir. BookStack, tek bir uygulama süreci ve MySQL'den oluşur. Wiki.js, bir Node süreci ve PostgreSQL gerektirir. Outline ise bir Node süreci, PostgreSQL ve Redis'in yanı sıra genellikle bir kimlik sağlayıcıya ihtiyaç duyar; bu nedenle daha fazla bellek ayrılması gereken uygulama Outline'dır.

Veritabanını ve yüklenen dosyaları birlikte yedekleyin. Yedekleme sistemine güvenmeden önce, her iki öğeyi de geçici bir örnek üzerinde geri yükleyerek test edin. Geri yüklemesi yapılmamış bir wiki yedeği, sadece bir tahminden ibarettir. BookStack için bu, bir mysqldump ve /config birimini yedeklemek anlamına gelir. Wiki.js ve Outline için bu, pg_dump ve veri birimini, Outline için ek olarak FILE_STORAGE_LOCAL_ROOT_DIR içerisinde bulunan verileri yedeklemeyi gerektirir.

FAQ

Hangi self-hosted wiki kurulumu en kolay olanıdır?

BookStack. MySQL veritabanı kullanan tek bir PHP uygulamasıdır ve proje, Ubuntu 24.04 üzerinde Apache, MySQL 8.0 ve PHP 8.3 kurulumunu tek seferde gerçekleştiren bir kurulum betiği ile gelir. Container imajı yalnızca bir APP_KEY ve veritabanı kimlik bilgileri gerektirir. Wiki.js bir Node çalışma zamanı ve PostgreSQL sunucusu ekler; Outline ise bunların üzerine ek olarak Redis ve harici bir kimlik sağlayıcısı gerektirir.

Outline'ı Google veya başka bir SSO sağlayıcısı olmadan kullanabilir miyim?

Hayır. Outline yerel kullanıcı adı ve parola ile giriş desteğine sahip değildir. Örnek yapılandırması, en az bir üçüncü taraf giriş sağlayıcısının zorunlu olduğunu, aksi takdirde hiçbir giriş seçeneğinin bulunmayacağını belirtir. Google, Slack, Microsoft Entra, Discord veya self-hosted Keycloak ya da Authentik gibi genel bir OpenID Connect sunucusu kullanabilirsiniz. Bu sağlayıcıyı çalıştırmak, Outline'ı çalıştırmanın maliyetinin bir parçasıdır.

Wiki.js 3 mü yoksa Wiki.js 2 mi kurmalıyım?

Sürüm 2. Temmuz 2026 itibarıyla en yeni sürüm 2 yayını, Mayıs 2026 tarihli 2.5.314'tür ve sürüm 3 belgeleri, bunun kararsız bir beta olduğunu ve üretim ortamında kurulmaması gerektiğini açıkça belirtir. İmajınızı latest yerine ghcr.io/requarks/wiki:2 sürümüne sabitleyin; çünkü ana sürüm değişikliği, çalışan bir instance üzerinde veritabanı şemasını değiştirir.

Hangisinin arama özelliği en iyisidir?

Hepsinin güçlü olduğu farklı alanlar vardır. BookStack, kullanıcılara tam ifadeler, [location=london] gibi etiket filtreleri ve {created_after:2016-12-30} gibi meta veri filtreleri içeren bir sorgu dili sunar; bu terimlerin herhangi biri başına - eklenerek olumsuzlanabilir. Outline yapılandırma gerektirmez ve yüklenen dosyaların içindeki metinleri arayabilir. Wiki.js en özelleştirilebilir olanıdır; arama motorunu siz seçersiniz ve wikiniz birkaç yüz sayfayı aştığında PostgreSQL motoruna geçiş yapmak faydalıdır.

İçeriğimi daha sonra birinden diğerine taşıyabilir miyim?

Kısmen, ancak manuel işlem yapmayı göze almalısınız. Üçü de Markdown dışa ve içe aktarımını destekler, bu nedenle sayfa metinleri genellikle korunur. Yapı temiz bir şekilde aktarılmaz: BookStack kitapları ve bölümlerinin Outline'ın iç içe geçmiş belgelerinde bir karşılığı yoktur ve Wiki.js yolları, BookStack'in sabit hiyerarşisiyle eşleşmez. Ekler, izinler ve sayfa geçmişi en çok kaybolma riski taşıyan kısımlardır; bu nedenle bir geçişe karar vermeden önce bir örnek dışa aktarın ve bunları kontrol edin.

#bookstack#wikijs#outline#wiki#self-hosting#knowledge-base