Discourse’u Ubuntu 20.04 Üzerine Kurulum Rehberi
Discourse, modern web için tasarlanmış, açık kaynaklı ve güçlü bir tartışma platformudur. Geleneksel forum yazılımlarının aksine, Discourse kullanıcı deneyimini ön planda tutan, interaktif ve zengin özelliklere sahip bir topluluk aracı sunar. Gerçek zamanlı güncellemeler, bildirimler, gelişmiş arama yetenekleri ve mobil uyumluluk gibi özellikleriyle Discourse, günümüzün dijital topluluklarının ihtiyaçlarına cevap verir. Bu kapsamlı rehberde, Discourse’u Ubuntu 20.04 sunucusu üzerine Docker kullanarak nasıl kuracağınızı adım adım öğreneceksiniz.
Discourse Nedir ve Neden Tercih Edilmelidir?
Discourse, Jeff Atwood, Robin Ward ve Sam Saffron tarafından kurulmuş bir şirket olan Civilized Discourse Construction Kit, Inc. tarafından geliştirilmiştir. Amacı, internetteki tartışma platformlarını daha medeni, kullanışlı ve modern hale getirmektir. PHP tabanlı eski forum sistemlerinin (phpBB, vBulletin gibi) aksine, Discourse Ruby on Rails, Ember.js ve PostgreSQL gibi modern teknolojiler üzerine inşa edilmiştir.
Discourse’u tercih etmek için birçok geçerli neden vardır:
* Modern Kullanıcı Deneyimi: Tek sayfa uygulaması (SPA) mimarisi sayesinde hızlı ve akıcı bir kullanıcı deneyimi sunar. Gerçek zamanlı güncellemeler ve sonsuz kaydırma özelliği ile kullanıcıların etkileşimini artırır.
* Açık Kaynak: Tamamen açık kaynaklı olması, topluluk tarafından sürekli geliştirilmesini ve özelleştirilebilir olmasını sağlar. Güvenlik ve şeffaflık açısından avantajlıdır.
* Mobil Uyumlu: Duyarlı (responsive) tasarımı sayesinde masaüstü, tablet ve telefonlarda sorunsuz bir şekilde çalışır.
* Güçlü Yönetim Araçları: Kapsamlı moderasyon araçları, spam önleme özellikleri ve kullanıcı seviyeleri ile topluluk yönetimini kolaylaştırır.
* Entegrasyonlar: Tek oturum açma (SSO), eklenti desteği ve API’leri sayesinde diğer uygulamalarla kolayca entegre edilebilir.
* E-posta Entegrasyonu: E-posta ile gönderilen yanıtları doğrudan tartışma konularına dönüştürme yeteneği, iletişimi daha esnek hale getirir.
* Güvenlik: Kapsamlı güvenlik önlemleri ve düzenli güncellemelerle kullanıcı verilerini korur.
* SEO Dostu: Arama motorları için optimize edilmiş yapısı sayesinde içeriklerinizin daha kolay bulunmasına yardımcı olur.
Ubuntu 20.04 ise uzun süreli destek (LTS) sunan, kararlı ve yaygın olarak kullanılan bir Linux dağıtımıdır. Sunucu ortamlarında güvenilirliği ve geniş paket desteği nedeniyle Discourse gibi uygulamalar için ideal bir temel oluşturur. Bu rehber, Discourse’un Docker tabanlı kurulumunu kullanarak hem kolay hem de bakımı pratik bir çözüm sunacaktır.
Ön Gereksinimler
Discourse kurulumuna başlamadan önce aşağıdaki ön gereksinimleri karşıladığınızdan emin olun:
* Ubuntu 20.04 Sunucusu: Temiz bir Ubuntu 20.04 LTS kurulumu önerilir.
* Minimum Donanım:
* RAM: En az 2 GB RAM (4 GB veya daha fazlası önerilir, özellikle büyük topluluklar için).
* CPU: En az 2 çekirdekli işlemci.
* Disk Alanı: En az 20 GB boş disk alanı (SSD önerilir).
* Alan Adı: Sunucunuzun IP adresine işaret eden bir alan adına (örneğin, forum.example.com) ihtiyacınız olacaktır. Bu, Let’s Encrypt ile SSL sertifikası almak ve Discourse’a erişmek için zorunludur. DNS kaydınızı (A kaydı) sunucunuzun IP adresine yönlendirdiğinizden emin olun ve DNS yayılımı için biraz bekleyin.
* SMTP Sunucusu: Discourse, e-posta göndermek için bir SMTP sunucusuna ihtiyaç duyar. Bu, kullanıcı kaydı, şifre sıfırlama, bildirimler ve diğer iletişimler için kullanılır. Kendi SMTP sunucunuzu kurabilir veya SendGrid, Mailgun, Amazon SES gibi üçüncü taraf bir e-posta hizmeti sağlayıcısı kullanabilirsiniz. SMTP sunucunuzun ana bilgisayar adı, bağlantı noktası, kullanıcı adı ve şifresi gerekecektir.
* SSH Erişimi: Sunucunuza root kullanıcısı olarak veya sudo yetkilerine sahip bir kullanıcı ile SSH üzerinden erişim.
Sunucu İlk Kurulum Ayarları
Kuruluma başlamadan önce sunucunuzu güncelleyelim ve gerekli temel paketleri kuralım.
Sistem Güncelleme
SSH ile sunucunuza bağlandıktan sonra, paket listelerini güncelleyin ve mevcut tüm paketleri yükseltin:
sudo apt update
sudo apt upgrade -y
Bu komutlar, sisteminizin en son güvenlik yamalarına ve yazılım güncellemelerine sahip olmasını sağlar.
Gerekli Paketlerin Kurulumu
Discourse kurulumu için curl, git gibi bazı temel araçlara ihtiyacımız olacak. Ayrıca Docker kurulumu için de birkaç paket gereklidir.
sudo apt install -y curl git apt-transport-https ca-certificates software-properties-common
* curl: Web kaynaklarını indirmek için kullanılır.
* git: Discourse Docker deposunu klonlamak için gereklidir.
* apt-transport-https, ca-certificates, software-properties-common: Docker deposunu eklemek için gerekli olan HTTPS üzerinden APT depolarını kullanmayı sağlayan yardımcı paketlerdir.
Sudo Yetkili Bir Kullanıcı Oluşturma (İsteğe Bağlı ama Önerilir)
Root kullanıcısı olarak doğrudan çalışmak yerine, sudo yetkilerine sahip ayrı bir kullanıcı oluşturmak iyi bir güvenlik uygulamasıdır. Eğer zaten sudo yetkilerine sahip bir kullanıcı ile çalışıyorsanız bu adımı atlayabilirsiniz.
sudo adduser discourse
sudo usermod -aG sudo discourse
İlk komut discourse adında yeni bir kullanıcı oluşturur ve sizden bir parola belirlemenizi ister. İkinci komut ise bu kullanıcıyı sudo grubuna ekleyerek yönetici yetkileri verir. Bu adımdan sonra, yeni kullanıcıya geçiş yapabilirsiniz:
su - discourse
Artık discourse kullanıcısı olarak oturum açtınız ve sudo komutunu kullanarak yönetici görevlerini yerine getirebilirsiniz.
Docker Kurulumu
Discourse, kurulum ve yönetim kolaylığı için Docker kullanır. Bu nedenle, sunucumuza Docker Engine’i kurmamız gerekiyor.
Neden Docker?
Discourse, tüm bağımlılıklarını (PostgreSQL, Redis, Nginx vb.) Docker konteynerleri içinde çalıştırarak izole ve taşınabilir bir ortam sağlar. Bu yaklaşım, karmaşık bağımlılık yönetimini ortadan kaldırır, farklı sunuculara kolayca taşınabilirliği sağlar ve sistem genelinde çakışmaları önler.
Docker GPG Anahtarını Ekleme
Docker’ın resmi deposundan paketleri güvenli bir şekilde indirmek için Docker’ın GPG anahtarını sisteminize eklemelisiniz:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Bu komut, Docker’ın genel anahtarını indirir ve güvenli bir şekilde gpg anahtarlık dizinine kaydeder.
Docker Deposunu Ekleme
Şimdi Docker deposunu APT kaynak listenize ekleyin:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Bu komut, sisteminizin mimarisine (amd64, arm64 vb.) uygun Docker kararlı deposunu /etc/apt/sources.list.d/docker.list dosyasına ekler.
Docker Engine Kurulumu
Depoyu ekledikten sonra, APT paket listesini tekrar güncelleyin ve Docker Engine’i kurun:
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
* docker-ce: Docker Engine’in topluluk sürümü.
* docker-ce-cli: Docker komut satırı arayüzü.
* containerd.io: Docker’ın temel bileşenlerinden biri olan konteyner çalışma zamanı.
Docker Kurulumunu Doğrulama
Docker’ın başarıyla kurulduğunu ve çalıştığını doğrulamak için aşağıdaki komutları kullanın:
sudo systemctl status docker
Çıktıda Active: active (running) ifadesini görmelisiniz.
Ayrıca, basit bir test konteyneri çalıştırarak Docker’ın düzgün çalıştığını kontrol edebilirsiniz:
sudo docker run hello-world
Bu komut, küçük bir test imajını indirir, bir konteynerde çalıştırır ve “Hello from Docker!” mesajını görüntülerse, Docker kurulumunuz başarılı demektir.
Kullanıcıyı Docker Grubuna Ekleme
sudo kullanmadan Docker komutlarını çalıştırabilmek için mevcut kullanıcınızı docker grubuna eklemelisiniz. Bu, her seferinde sudo yazma zorunluluğunu ortadan kaldırır.
sudo usermod -aG docker $(whoami)
Bu değişikliğin etkili olması için oturumu kapatıp tekrar açmanız veya sunucuyu yeniden başlatmanız gerekebilir:
exit # Kullanıcıdan çıkış yap
Tekrar SSH ile bağlanın veya
sudo reboot # Sunucuyu yeniden başlatın
Oturum açtıktan sonra sudo olmadan docker run hello-world komutunu tekrar deneyin. Eğer çalışıyorsa, kullanıcı Docker grubuna başarıyla eklenmiştir.
Discourse Kurulumu
Docker kurulduktan sonra, Discourse’u kurmaya başlayabiliriz. Discourse, kendi Docker kurulum komut dosyasını ve yapılandırma aracını sağlar.
Discourse Docker Deposunu Klonlama
Discourse’un kurulum betiklerini ve Docker yapılandırmalarını içeren depoyu sunucunuza klonlayın. Genellikle /var/discourse dizinine klonlanır:
sudo -E git clone https://github.com/discourse/discourse_docker.git /var/discourse
Burada sudo -E kullanmak önemlidir, çünkü git clone komutunu sudo ile çalıştırırken mevcut ortam değişkenlerinin (özellikle HOME) korunmasını sağlar. Bu, daha sonraki adımlarda sorun yaşanmasını önler. Eğer root kullanıcısı olarak çalışıyorsanız sudo -E yerine sadece git clone kullanabilirsiniz.
Dizine Geçiş
Klonladığınız dizine gidin:
cd /var/discourse
Yapılandırma Dosyasını Oluşturma
Discourse, kurulum sürecini otomatikleştiren ve app.yml adında bir yapılandırma dosyası oluşturan bir kurulum betiği sağlar:
sudo ./discourse-setup
Bu betik, size birkaç soru soracak ve yanıtlarınıza göre app.yml dosyasını oluşturacaktır. İşte karşılaşacağınız sorular ve yanıtlamanız gereken bilgiler:
1. Hostname for your Discourse? (forum.example.com gibi alan adınızı girin.)
* Önemli: Bu alan adının DNS kaydının sunucunuzun IP adresine doğru şekilde işaret ettiğinden emin olun. Let’s Encrypt bu alan adını kullanarak SSL sertifikası oluşturacaktır.
2. Email address for admin account(s)? (admin@example.com gibi yönetici e-posta adresinizi girin.)
* Bu e-posta adresi, ilk yönetici hesabını oluşturmak ve Let’s Encrypt bildirimleri için kullanılacaktır.
3. SMTP server address? (smtp.sendgrid.net gibi SMTP sunucunuzun adresini girin.)
4. SMTP port? (587 veya 465 gibi SMTP sunucunuzun bağlantı noktasını girin. Çoğu zaman 587 (TLS) veya 465 (SSL) kullanılır.)
5. SMTP username? (SMTP sunucunuzun kullanıcı adını girin.)
6. SMTP password? (SMTP sunucunuzun şifresini girin.)
7. Optional email address for Let’s Encrypt notifications? (Let’s Encrypt’ten bildirim almak istediğiniz bir e-posta adresi girin, genellikle admin e-postası ile aynı olabilir.)
Bu soruları yanıtladıktan sonra, betik size özet bir yapılandırma gösterecek ve onayınızı isteyecektir. Onayladıktan sonra, app.yml dosyası oluşturulacak ve Discourse’un ilk derlemesi başlayacaktır.
İlk Derleme ve Başlatma
discourse-setup betiği, yapılandırmayı tamamladıktan sonra otomatik olarak Discourse’u derlemeye ve başlatmaya başlayacaktır. Bu işlem biraz zaman alabilir (genellikle 5-15 dakika, sunucunuzun performansına ve internet hızına bağlı olarak). Bu süreçte Docker, Discourse için gerekli tüm bileşenleri (PostgreSQL, Redis, Nginx, Ruby on Rails uygulaması) indirip kuracaktır.
İşlem sırasında aşağıdaki gibi çıktılar göreceksiniz:
...
Building discourse_web
...
Running post-install setup scripts
...
Discourse is now starting.
Tüm işlemler tamamlandığında, betik size Discourse’un başarıyla kurulduğunu ve web tarayıcınızdan erişebileceğinizi bildiren bir mesaj gösterecektir.
Kurulum Sonrası Yapılandırma
Discourse başarıyla kurulduktan sonra, web tarayıcınızdan erişebilir ve son yapılandırmaları yapabilirsiniz.
Discourse’a Erişme
Web tarayıcınızı açın ve kurulum sırasında belirttiğiniz alan adını (örneğin, https://forum.example.com) adres çubuğuna yazın. Eğer her şey yolundaysa, Discourse’un hoş geldiniz sayfasını görmelisiniz.
Yönetici Hesabı Oluşturma
Discourse’a ilk eriştiğinizde, sizi bir yönetici hesabı oluşturmaya yönlendiren bir sihirbaz karşılayacaktır. Kurulum sırasında belirttiğiniz yönetici e-posta adresini kullanarak kaydolun. İlk kaydolan kullanıcı otomatik olarak yönetici yetkilerine sahip olacaktır.
* Kullanıcı adı, e-posta ve şifre girin.
* “Create Your Admin Account” düğmesine tıklayın.
* E-posta adresinize bir doğrulama bağlantısı gönderilecektir. E-postanızı kontrol edin ve bağlantıya tıklayarak hesabınızı doğrulayın.
Hesabınızı doğruladıktan sonra, Discourse paneline yönlendirileceksiniz.
Temel Ayarlar ve Özelleştirmeler
Yönetici paneline erişiminiz olduktan sonra, Discourse topluluğunuzu özelleştirmeye başlayabilirsiniz:
* Site Adı ve Açıklaması: “Admin” -> “Settings” altına giderek forumunuzun adını, açıklamasını ve logosunu ayarlayın.
* E-posta Ayarları: Eğer kurulum sırasında e-posta ayarlarınızda bir sorun yaşadıysanız veya değiştirmek isterseniz, “Admin” -> “Settings” -> “Email” bölümünden SMTP sunucu bilgilerinizi güncelleyebilirsiniz. “Send Test Email” seçeneğini kullanarak e-posta gönderimini test etmeniz şiddetle tavsiye edilir.
* Kullanıcı Kayıt Yöntemleri: “Admin” -> “Settings” -> “Login” bölümünden kullanıcıların nasıl kaydolabileceğini (e-posta ile, sosyal medya ile vb.) yapılandırabilirsiniz.
* Kategoriler: “Admin” -> “Categories” bölümünden forumunuz için konuları düzenleyecek kategoriler oluşturun.
* Temalar: “Admin” -> “Customize” -> “Themes” bölümünden Discourse’unuzun görünümünü değiştirebilirsiniz.
* Eklentiler: Discourse’un işlevselliğini artırmak için “Admin” -> “Plugins” bölümünden eklentileri etkinleştirebilir veya yenilerini kurabilirsiniz.
Discourse’u Güncelleme
Discourse’u güncel tutmak, güvenlik ve yeni özelliklerden yararlanmak için önemlidir. Discourse güncellemeleri hem web arayüzünden hem de komut satırından yapılabilir.
* Web Arayüzü Üzerinden Güncelleme: Yönetici paneline giriş yaptıktan sonra, sağ üst köşedeki profil resminize tıklayın ve “Admin” seçeneğini seçin. Eğer yeni bir güncelleme varsa, “Updates” sekmesinde bir bildirim göreceksiniz. Buradan kolayca güncellemeyi başlatabilirsiniz.
* Komut Satırı Üzerinden Güncelleme: Daha kapsamlı güncellemeler veya sorun giderme durumlarında komut satırını kullanmak daha iyi olabilir.
cd /var/discourse
sudo ./launcher rebuild app
Bu komut, Discourse uygulamasını yeniden derler ve en son sürüme günceller. Bu işlem de biraz zaman alabilir.
Sık Karşılaşılan Sorunlar ve Çözümleri
Kurulum veya kullanım sırasında bazı sorunlarla karşılaşabilirsiniz. İşte yaygın sorunlar ve olası çözümleri:
E-posta Gönderilemiyor
* SMTP Ayarları: app.yml dosyanızdaki (veya yönetici panelindeki) SMTP sunucu adresini, bağlantı noktasını, kullanıcı adını ve şifresini kontrol edin. Bu bilgiler doğru olmalı ve SMTP sunucunuzdan alınan bilgilerle eşleşmelidir.
* Güvenlik Duvarı (Firewall): Sunucunuzun güvenlik duvarının (ufw gibi) SMTP portlarına (genellikle 587 veya 465) giden veya gelen trafiği engellemediğinden emin olun.
* E-posta Hizmeti Sağlayıcısı Kısıtlamaları: Bazı e-posta hizmeti sağlayıcıları (özellikle yeni hesaplar için) günlük gönderim limitleri veya kimlik doğrulama gereksinimleri koyabilir. Sağlayıcınızın belgelerini kontrol edin.
* Discourse Logları: Sorunun nedenini anlamak için Discourse’un e-posta loglarını kontrol edin.
cd /var/discourse
sudo ./launcher logs app | grep -i 'email'
Discourse Başlamıyor veya Erişilemiyor
* Sunucu Kaynakları: Sunucunuzun yeterli RAM ve CPU’ya sahip olduğundan emin olun. Özellikle 2 GB RAM altındaki sunucularda Discourse düzgün çalışmayabilir.
* Docker Durumu: Docker Engine’in çalıştığından emin olun: sudo systemctl status docker.
* Discourse Konteyner Durumu: Discourse konteynerlerinin çalışıp çalışmadığını kontrol edin: sudo docker ps. Eğer discourse_app konteyneri listede yoksa veya Exited durumundaysa, bir sorun var demektir.
* app.yml Hataları: /var/discourse/containers/app.yml dosyasındaki yapılandırma hatalarını kontrol edin. Özellikle hostname, e-posta veya SMTP bilgilerinde yazım hataları olabilir.
* Logları Kontrol Etme: Discourse uygulamasının loglarını kontrol ederek hatanın kaynağını bulmaya çalışın:
cd /var/discourse
sudo ./launcher logs app
* Yeniden Derleme: Bazen sudo ./launcher rebuild app komutunu çalıştırmak sorunları çözebilir.
Alan Adı Düzgün İşaret Etmiyor veya SSL Hatası
* DNS Yayılımı: Alan adınızın (A kaydı) sunucunuzun IP adresine doğru şekilde işaret ettiğinden ve DNS yayılımının tamamlandığından emin olun. Bu işlem 24-48 saat sürebilir.
* Let’s Encrypt Kısıtlamaları: Eğer Let’s Encrypt sertifikası alırken hata alıyorsanız, alan adınızın doğru olduğundan ve DNS’in yayılmış olduğundan emin olun. Let’s Encrypt’in belirli bir süre içinde aynı alan adı için çok fazla sertifika isteği yapma limitleri vardır.
* Güvenlik Duvarı: Sunucunuzun güvenlik duvarının HTTP (80) ve HTTPS (443) portlarına gelen trafiği engellemediğinden emin olun. Let’s Encrypt sertifika doğrulamasını 80 portu üzerinden yapar.
Gelişmiş Yapılandırma (İsteğe Bağlı)
Discourse’u daha da özelleştirmek ve optimize etmek için bazı gelişmiş yapılandırmaları düşünebilirsiniz.
app.yml Dosyasını Özelleştirme
/var/discourse/containers/app.yml dosyası, Discourse Docker konteynerinin tüm yapılandırmasını içerir. Bu dosyayı düzenleyerek şunları yapabilirsiniz:
* Eklentiler Ekleme: Varsayılan olarak gelmeyen eklentileri (örneğin, Discourse Solved, Discourse Math) eklemek için plugins bölümüne URL’lerini ekleyebilirsiniz.
* Bellek Limitlerini Ayarlama: Sunucunuzun RAM’i yetersizse veya çok fazlaysa, PostgreSQL ve Redis için bellek limitlerini ayarlayabilirsiniz.
* Ortam Değişkenleri Ekleme: Diğer gelişmiş ayarlar için özel ortam değişkenleri ekleyebilirsiniz.
app.yml dosyasında herhangi bir değişiklik yaptıktan sonra, değişikliklerin etkili olması için Discourse’u yeniden derlemeniz gerekir:
cd /var/discourse
sudo ./launcher rebuild app
Yedeklemeler
Discourse, yerleşik bir yedekleme özelliğine sahiptir. Yönetici panelinden “Admin” -> “Backups” bölümüne giderek manuel yedeklemeler yapabilir veya otomatik yedeklemeleri yapılandırabilirsiniz. Yedeklemeler, sunucunuzdaki /var/discourse/shared/standalone/backups/default dizinine kaydedilir. Güvenlik için bu yedeklemeleri düzenli olarak uzak bir depolama konumuna (S3, Dropbox vb.) taşımak iyi bir uygulamadır.
CDN Entegrasyonu
Büyük topluluklar için, statik varlıkları (resimler, CSS, JavaScript) bir İçerik Dağıtım Ağı (CDN) üzerinden sunmak performansı artırabilir ve sunucu yükünü azaltabilir. Discourse, CDN entegrasyonunu destekler. Yönetici panelindeki ayarlardan veya app.yml dosyasını düzenleyerek CDN URL’nizi belirtebilirsiniz.
Sonuç
Bu rehberde, Discourse’u Ubuntu 20.04 sunucusu üzerine Docker kullanarak adım adım nasıl kuracağınızı öğrendiniz. Modern bir tartışma platformu olan Discourse, güçlü özellikleri ve kullanıcı dostu arayüzü ile topluluklarınızı canlandırmanıza yardımcı olacaktır. Kurulum süreci, Docker’ın sunduğu kolaylıklar sayesinde oldukça basittir, ancak alan adı, SMTP sunucusu ve sunucu kaynakları gibi ön gereksinimlerin doğru şekilde karşılandığından emin olmak kritik öneme sahiptir.
Artık kendi Discourse topluluğunuzu başlattığınıza göre, platformunuzu özelleştirmeye, kategoriler oluşturmaya ve kullanıcıları davet etmeye başlayabilirsiniz. Unutmayın, topluluğunuzun sağlıklı büyümesi için düzenli güncellemeler yapmak, yedeklemeler almak ve aktif moderasyon sağlamak önemlidir. Discourse’un sunduğu geniş özellik yelpazesini keşfederek topluluğunuz için en iyi deneyimi yaratabilirsiniz.