İçeriğe geç

Eğitimlerİletişim

Discourse resmi Docker kurulum aracıyla nasıl kurulur

Discourse topluluk forumunu resmi kurulum aracıyla Ubuntu veya Debian'a kurun; otomatik HTTPS, güvenli giriş ayarları, zamanlanmış yedekler ve güncellemeler.

  • Orta
  • 40 dk okuma
  • Güncellendi

Denendiği sistemler: Ubuntu 24.04 LTS, Ubuntu 26.04 LTS, Debian 12, Debian 13

Bu sayfada
  1. Ön koşullar
  2. Adım 1 — Docker'ı Docker'ın deposundan kurun
  3. Adım 2 — Küçük sunuculara swap ekleyin
  4. Adım 3 — Güvenlik duvarını açın ve DNS'i kontrol edin
  5. Adım 4 — Resmi kurulum aracını indirin, okuyun ve çalıştırın
  6. Adım 5 — Yönetici hesabını oluşturun ve kurulumu tamamlayın
  7. Adım 6 — Ana makineyi güvende tutun
  8. Yedekleme ve geri yükleme
  9. Discourse güncelleme
  10. Sorun giderme
  11. Sihirbaz 80 veya 443 numaralı portun kullanımda olduğunu söylüyor
  12. Alan adı kontrolü başarısız oluyor
  13. Derleme veya başlatma başarısız oluyor
  14. Onay e-postaları gelmiyor
  15. Sonraki adımlar

Discourse; topluluk forumları, ürün destek panoları ve şirket içi bilgi paylaşımı için kullanılan açık kaynaklı bir tartışma platformudur. Proje üretim için tek bir kurulum yöntemini destekler: Let's Encrypt sertifikalarını ve yükseltmeleri de yöneten discourse_docker başlatıcısıyla yönetilen bir Docker konteyneri. Bu rehber bir Ubuntu veya Debian sunucusunu hazırlar, resmi kurulum aracını ve sihirbazı çalıştırır, yeni forumu sıkılaştırır ve nasıl yedekleyeceğinizi, geri yükleyeceğinizi ve güncel tutacağınızı gösterir.

Ön koşullar

  • Ubuntu 24.04 veya 26.04 LTS (Discourse Ubuntu LTS önerir) ya da Debian 12 veya 13 çalıştıran 64 bit bir sunucu.
  • sudo yetkisi ve SSH anahtarıyla girişi olan, root olmayan bir kullanıcı: Yeni bir Linux sunucusunu güvenli hale getirin ve SSH anahtarlarını ayarlayın rehberlerine bakın.
  • Sunucuyu gösteren bir DNS A kaydına sahip forum.example.com gibi bir ana makine adı veya ücretsiz bir discourse.diy alt alan adı istiyorsanız bir Discourse ID hesabı.
  • Boş 80 ve 443 numaralı portlar: bu makinede başka bir web sunucusu çalışmamalıdır.
  • İsteğe bağlı: özet e-postaları ve e-postayla yanıtlama için bir SMTP sağlayıcısı.

Discourse kurulum rehberindeki gereksinimler:

KaynakEn düşük (resmi)Önerilen başlangıç
CPU1 çekirdek2 veya daha fazla çekirdek (resmi öneri)
RAMSwap ile 1 GB2 GB veya daha fazla (resmi öneri)
Disk10 GB20 GB veya daha fazla (resmi öneri), ayrıca yedekler ve yüklemeler için alan
İşletim sistemi64 bit LinuxUbuntu LTS

Kurulum aracı, web işçisi sayısını ve veritabanı belleğini algıladığı RAM ve CPU'ya göre ayarlar.

Adım 1 — Docker'ı Docker'ın deposundan kurun

Discourse kurulum aracı, Docker yoksa onu Docker'ın kolaylık betiğiyle kurar. Docker bu betiği yalnızca test için önerir; bu yüzden önce Docker Engine'i resmi depodan kurun, böylece kurulum aracı bu adımı atlar. Ubuntu'ya Docker kurulumu veya Debian'a Docker kurulumu rehberini izleyin, ardından kontrol edin:

Bash
docker --version
sudo systemctl is-active docker

Adım 2 — Küçük sunuculara swap ekleyin

2 GB veya daha az RAM'i olan bir sunucuda, Discourse sorun giderme notlarının önerdiği gibi ilk derlemeden önce swap ekleyin:

Bash
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
free -h

free -h artık 2 GB swap göstermelidir.

Adım 3 — Güvenlik duvarını açın ve DNS'i kontrol edin

Bash
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
dig +short forum.example.com

dig çıktısı sunucunuzun genel IP adresi olmalıdır (dig yoksa dnsutils paketini kurun). Kendi alan adınızı kullanıyorsanız devam etmeden önce bunun doğru olmasını bekleyin; sihirbaz bunu kontrol eder ve Let's Encrypt buna ihtiyaç duyar.

Adım 4 — Resmi kurulum aracını indirin, okuyun ve çalıştırın

Kurulum aracı, discourse_docker deposundaki kısa bir başlangıç betiğidir ve root olarak çalışmalıdır. Eksikse git'i kurar, yalnızca eksikse Docker'ı kurar, discourse_docker deposunu /var/discourse içine klonlar (bu klasör zaten bir git kopyasıysa onu en son sürüme sıfırlar ve oradaki yerel değişiklikleri siler) ve ardından discourse-setup sihirbazını başlatır. Çalıştırmadan önce indirip okuyun:

Bash
wget -qO install-discourse https://raw.githubusercontent.com/discourse/discourse_docker/main/install-discourse
less install-discourse
sudo bash install-discourse

Resmi rehber aynı işlemi tek satırlık bir wget … | sudo bash olarak gösterir; önce indirmek yalnızca neyin çalışacağını görmenizi sağlar.

Sihirbaz şunları sorar:

  1. Yönetici e-posta adres(ler)i. Bu adreslerle kaydolan hesaplar yönetici olur.
  2. Kendi alan adınız veya ücretsiz bir alt alan adı. Ana makine adınızı yazın, örneğin forum.example.com; ya da Discourse ID hesabınızda gösterilen altı haneli kodla (10 dakika geçerlidir) bir discourse.diy alt alan adı alın.
  3. SMTP. Sağlayıcınızın sunucusunu (örneğin smtp.example.com), 587 numaralı portu, kullanıcı adını ve parolasını girin veya Discourse ID girişlerini kullanmak için atlayın.

Onayladıktan sonra kurulum aracı konteyneri derler ve başlatır; bu yaklaşık 5 ile 10 dakika sürer. Let's Encrypt sertifikaları otomatik olarak alınır ve yenilenir.

Sonucu kontrol edin:

Bash
cd /var/discourse
sudo ./launcher logs app | tail -n 20
curl -I https://forum.example.com

curl sertifika hatası olmadan HTTP 200 veya bir yönlendirme döndürmelidir.

Adım 5 — Yönetici hesabını oluşturun ve kurulumu tamamlayın

https://forum.example.com adresini açın ve Sign Up düğmesine tıklayın. Sihirbazdaki yönetici e-posta adreslerinden biriyle kaydolun (SMTP'yi atladıysanız Discourse ID ile giriş yapın); SMTP kullanıyorsanız önce bir onay e-postası alırsınız. Ardından Discourse forum adı, görünüm ve erişim ayarları için kendi kurulum sihirbazını açar.

Admin → Settings altında önerilen ilk ayarlar:

  • enforce_second_factor ayarıyla yöneticiler için iki adımlı doğrulamayı zorunlu kılın.
  • Kimlerin katılabileceğine karar verin: özel topluluklar için invite_only veya kayıtları incelemek için must_approve_users.
  • Forum herkese açık okunmamalıysa login_required ayarını açın.

Adım 6 — Ana makineyi güvende tutun

Discourse rehberi, ana makine için otomatik güvenlik güncellemelerini ve SSH kaba kuvvet denemelerine karşı fail2ban'i önerir:

Bash
sudo apt install unattended-upgrades fail2ban
sudo dpkg-reconfigure -plow unattended-upgrades
sudo systemctl status fail2ban --no-pager

SMTP bilgileri dahil tüm forum ayarları yalnızca root'un okuyabildiği /var/discourse/containers/app.yml dosyasında durur. Dosyayı düzenledikten sonra değişikliği yeniden derlemeyle uygulayın:

Bash
cd /var/discourse
sudo nano containers/app.yml
sudo ./launcher rebuild app

Yeniden derleme forumu birkaç dakika çevrimdışı bırakır.

Yedekleme ve geri yükleme

Discourse kendi yedeklerini alır. Admin → Backups bölümünden elle yedek başlatabilirsiniz; zamanlanmış yedekler Admin → Settings → Backups altında yönetilir:

AyarVarsayılanAnlamı
backup_frequency7Otomatik yedekler arasındaki gün sayısı (0 kapatır)
backup_time_of_day3:30UTC başlangıç saati
maximum_backups5Saklanan yedek sayısı
backup_with_uploadsaçıkYalnızca veritabanını değil yüklenen dosyaları da dahil eder

Yerel yedekler yalnızca root'un okuyabildiği /var/discourse/shared/standalone/backups/default klasöründe saklanır. Onları yönetici kullanıcınıza ait bir klasöre kopyalayın:

Bash
sudo mkdir -p /opt/backups/discourse
sudo rsync -a /var/discourse/shared/standalone/backups/default/ /opt/backups/discourse/
sudo chown -R $USER:$USER /opt/backups/discourse

Ardından düzenli olarak başka bir makineye çekin; örneğin kendi bilgisayarınızdan:

Bash
rsync -av admin@203.0.113.10:/opt/backups/discourse/ ./discourse-backups/

/var/discourse/containers/app.yml dosyasının da bir kopyasını saklayın. Sunucu dışı depolama için backup_location değerini S3 yapıp s3_backup_bucket ve erişim anahtarı ayarlarını doldurabilirsiniz.

Yeni bir kuruluma geri yüklemek için arşivi yeniden adlandırmadan yükleyin (Discourse meta verileri dosya adından okur) ve geri yüklemeyi konteynerin içinde çalıştırın:

Bash
sudo mkdir -p /var/discourse/shared/standalone/backups/default
sudo cp forum-2026-10-09-033000-v20261001000000.tar.gz /var/discourse/shared/standalone/backups/default/
cd /var/discourse
sudo ./launcher enter app
discourse enable_restore
discourse restore forum-2026-10-09-033000-v20261001000000.tar.gz
exit

discourse restore komutunu dosya adı olmadan çalıştırmak görebildiği yedekleri listeler. Geri yükleme, yönetici olmayan kullanıcılar için giden e-postayı kapatır; disable_emails ayarıyla yeniden açın. Boş disk alanı olarak yedek boyutunun üç ila beş katını ayırın.

Discourse güncelleme

Yeni bir sürüm çıktığında Discourse yöneticilere e-posta gönderir. Önce yedek alın, ardından ya tarayıcıda https://forum.example.com/admin/upgrade adresinden ya da komut satırından güncelleyin:

Bash
cd /var/discourse
sudo ./launcher rebuild app

main dalında başlatıcı önce kendi kopyasını günceller ("Ensuring launcher is up to date"), ardından konteyneri güncel temel imajla yeniden derler. Yeniden derleme birkaç dakikalık kesintiye neden olur. Ana makinenin kendisini sudo apt update && sudo apt upgrade ile güncel tutun.

Sorun giderme

Sihirbaz 80 veya 443 numaralı portun kullanımda olduğunu söylüyor

Başka bir web sunucusu çalışıyor. sudo lsof -i :80 ve sudo lsof -i :443 ile bulun, ardından durdurup devre dışı bırakın; örneğin sudo systemctl disable --now nginx veya apache2. Sonra kurulum aracını yeniden çalıştırın.

Alan adı kontrolü başarısız oluyor

A kaydı henüz bu sunucuyu göstermiyor ya da yayılmadı. dig +short forum.example.com ile kontrol edin. Sihirbaz yine de devam etmek için --skip-connection-test seçeneğini kabul eder; ancak Let's Encrypt doğru DNS'e ihtiyaç duyar, bu nedenle mümkünse önce kaydı düzeltin.

Derleme veya başlatma başarısız oluyor

Konteyner çıktısını sudo ./launcher logs app ile okuyun, sudo ./launcher enter app ile bir kabuk açın ve /var/discourse/shared/standalone/log/rails/production.log dosyasına bakın. Küçük sunucularda en sık neden belleğin yetmemesidir; swap ekleyin (Adım 2) ve yeniden derleyin.

Onay e-postaları gelmiyor

containers/app.yml içindeki SMTP sunucusunu, portu (587) ve bilgileri kontrol edin, ardından yeniden derleyin. Gönderen alan adınızın, e-posta sağlayıcınızın istediği SPF ve DKIM kayıtlarına sahip olduğundan emin olun. Admin → Email altındaki e-posta logları teslim denemelerini gösterir.

Sonraki adımlar

Sık sorulan sorular

Discourse için hâlâ bir SMTP sağlayıcısına ihtiyacım var mı?

Başlamak için hayır. Kurulum sihirbazında SMTP'yi atlarsanız kullanıcılar Discourse ID (e-posta ve sosyal girişler) ile oturum açar. Etkinlik özetleri, posta listesi modu ve e-postayla yanıtlama yine SMTP gerektirir; bunu daha sonra Admin, Email bölümünden veya sihirbazı yeniden çalıştırarak ekleyebilirsiniz.

Discourse ne kadar bellek ister?

Resmi en düşük gereksinim 64 bit Linux üzerinde swap ile 1 GB RAM, 1 CPU çekirdeği ve 10 GB disktir. Discourse bir Ubuntu LTS sürümünde 2 GB veya daha fazla RAM, 2 veya daha fazla çekirdek ve 20 GB veya daha fazla disk önerir.

Aynı sunucuda başka web siteleri çalıştırabilir miyim?

Varsayılan olarak Discourse konteyneri 80 ve 443 numaralı portları alır. Discourse'un topluluk rehberi konteyneri bir Unix soketine geçirip önüne ana makinede Nginx ve Certbot koymayı gösterir; ancak bu durumda sertifikaları ana makinede kendiniz yönetirsiniz. Discourse için ayrı bir sunucu daha basittir.

Discourse yedekleri nerede saklanır?

Yerel yedekler /var/discourse/shared/standalone/backups/default klasörüne yazılır. Varsayılan olarak Discourse 7 günde bir yedek alır, 5 tanesini saklar ve yüklenen dosyaları dahil eder. Yedekleri S3 uyumlu depolamaya da gönderebilirsiniz; her durumda sunucunun dışına kopyalamalısınız.

Kendi alan adım yerine ücretsiz bir alt alan adı kullanabilir miyim?

Evet. Kurulum aracı Discourse ID hesabınız üzerinden ücretsiz bir discourse.diy alt alan adı alabilir ve DNS kaydını sizin için oluşturur. Kendi alan adınızla A kaydını kurulumdan önce kendiniz oluşturursunuz.

Kaynaklar

Şifre Oluştur

Lütfen onaylayın