# 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.

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

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](/guides/secure-a-new-linux-server) ve [SSH anahtarlarını ayarlayın](/guides/ssh-keys) 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:

| Kaynak | En düşük (resmi) | Önerilen başlangıç |
|---|---|---|
| CPU | 1 çekirdek | 2 veya daha fazla çekirdek (resmi öneri) |
| RAM | Swap ile 1 GB | 2 GB veya daha fazla (resmi öneri) |
| Disk | 10 GB | 20 GB veya daha fazla (resmi öneri), ayrıca yedekler ve yüklemeler için alan |
| İşletim sistemi | 64 bit Linux | Ubuntu 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](/guides/install-docker-ubuntu) veya [Debian'a Docker kurulumu](/guides/install-docker-debian) 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.

> **Not**
>
> HyperDC VPS'lerde giden 25 numaralı port varsayılan olarak kapalıdır. 3 ay veya daha uzun süreyle satın alınan hizmetlerde talep üzerine açılır: [destek talebi açın](/guides/support-tickets). O zamana kadar e-postaları 587 numaralı port üzerinden bir SMTP relay ile gönderin.

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:

| Ayar | Varsayılan | Anlamı |
|---|---|---|
| `backup_frequency` | 7 | Otomatik yedekler arasındaki gün sayısı (0 kapatır) |
| `backup_time_of_day` | 3:30 | UTC başlangıç saati |
| `maximum_backups` | 5 | Saklanan yedek sayısı |
| `backup_with_uploads` | açık | Yalnı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

- Ekibiniz için [Matrix Synapse ve Element](/guides/install-matrix-synapse) ile gerçek zamanlı sohbet ekleyin.
- Federasyonlu bir mikroblog sunucusuyla karşılaştırmak için [Mastodon kurulumu](/guides/install-mastodon) rehberine bakın.
- Resmi [Discourse kurulum rehberini](https://github.com/discourse/discourse/blob/main/docs/INSTALL-cloud.md) ve meta.discourse.org üzerindeki rehberleri okuyun.
- Topluluklar için sunucuları [sosyal ağ hosting](/social-network-hosting) sayfasında görün.

## 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.

---

Kaynak: <https://hyperdc.com/tr/guides/tutorials/install-discourse>\
Son güncelleme: 2026-10-09
