Düne kadar Flarum’da Websocket uzantısı ücretli bir uzantı ilken eklentinin yazarı @Kyrne uzantısını ücretsiz dağıtma kararı aldı. Bende eklentinin nasıl kurulacağını anlatmak istedim. Çünkü kurulumu biraz karmaşık. Kurulumu adım adım anlatacağım.

Bu anlatım sitesinde SSL kullananlar içindir.
Flarum’u paylaşımlı hosting’de kullananlar maalesef eklentiyi kuramazlar.

Kurulum

  1. Flarum sitenin kurulu olduğu dizinde .nginx.conf adında bir dosya var. Bu dosyayı açın. Bu dosyanın ilk dört satırı aşağıdaki gibi.
# Pass requests that don't refer directly to files in the filesystem to index.php
location / {
  try_files $uri $uri/ /index.php?$query_string;
}

Yukarıdakileri aşağıdakilerle değiştirin.

# Pass requests that don't refer directly to files in the filesystem to index.php
location @web {
  try_files $uri $uri/ /index.php?$query_string;
}
  1. /etc/nginx/sites-available veya /etc/nginx/conf.d dizininde site conf dosyası olmalı. Bu dosyayı açın ve en üstüne aşağıdakileri yapıştırın.
map $http_upgrade $type {
  default "web";
  websocket "ws";
}

Sonra yine aynı dosyada SSL bloğu içine (443 port) aşağıdakileri yapıştırın.

location / {
		try_files /nonexistent @$type;
	}

	location @ws {
	    proxy_pass             http://127.0.0.1:2083;
	    proxy_read_timeout     60;
	    proxy_connect_timeout  60;
	    proxy_redirect         off;

	    # Allow the use of websockets
	    proxy_http_version 1.1;
	    proxy_set_header Upgrade $http_upgrade;
	    proxy_set_header Connection 'upgrade';
	    proxy_set_header Host $host;
	    proxy_cache_bypass $http_upgrade;
	}

Yani son görünüm aşağıdakine benzer olmalı. Sadece bahsettiklerimi nereye eklediğime dikkat edin.

map $http_upgrade $type {
  default "web";
  websocket "ws";
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
	ssl_certificate /etc/ssl/cert.pem;
        ssl_certificate_key /etc/ssl/key.pem;
	ssl_client_certificate /etc/ssl/cloudflare.crt;
        ssl_verify_client on;
	server_name flarumtr.com;
	index index.php index.html index.htm;
	root /var/www/flarumtr/public;
	client_max_body_size 40M;
	
	location ~ \.php$ {
          fastcgi_split_path_info ^(.+\.php)(/.+)$;
          #fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
	  fastcgi_pass 127.0.0.1:9000;
          fastcgi_index index.php;
          include fastcgi_params;
          fastcgi_param SCRIPT_FILENAME 
          $document_root$fastcgi_script_name;
          fastcgi_intercept_errors off;
          fastcgi_buffer_size 16k;
          fastcgi_buffers 4 16k;
          fastcgi_connect_timeout 90s;
          fastcgi_send_timeout 90s;
          fastcgi_read_timeout 90s;
    }
	
	location / {
		try_files /nonexistent @$type;
	}

	location @ws {
	    proxy_pass             http://127.0.0.1:2053;
	    proxy_read_timeout     60;
	    proxy_connect_timeout  60;
	    proxy_redirect         off;

	    # Allow the use of websockets
	    proxy_http_version 1.1;
	    proxy_set_header Upgrade $http_upgrade;
	    proxy_set_header Connection 'upgrade';
	    proxy_set_header Host $host;
	    proxy_cache_bypass $http_upgrade;
}

Dosyayı bu şekilde değiştirdikten sonra nginx -t komutunu çalıştırın. Eğer herhangi bir hata görmüyorsanız değişikliklerin aktif olabilmesi için nginx’i yeniden başlatın. systemctl restart nginx

  1. Artık eklentiyi aşağıdaki komutu kullanarak kurabilirsiniz. İlk önce pusher eklentisini kaldırmanız gerekiyor. Bunun için composer remove flarum/pusher komutunu kullanın.
    composer require kyrne/websocket

Eğer hata mesajı görürseniz aşağıdaki komutu kullanın:

composer require kyrne/websocket -W
  1. Bu kurulumda ben 2083 portunu tercih ettim. Aşağıdaki portlardan birini kullanabilirsiniz. Bu portlar Cloudflare kullanan sitelerde çalışacaktır.

2053
2083
2087
2096
8443

Diyelim ki 2083 portunu kullanmaya karar verdiniz. Bu portun sunucuda açık olduğundan emin olun. Güvenlik duvarında bir porta izin vermek için sudo ufw allow port_numarası ile izin verebilirsiniz.

  1. Şimdi eklentiyi Forum Yönetim panelinden aktif edebilirsiniz.
  2. SSH ile flarum sitesinin kurulu olduğu dizine gelin ve aşağıdaki komutu çalıştırın.
    php flarum websocket:serve
    Yukarıdaki komut çalıştığı sürece websocket çalılşacaktır. Ancak SSH’dan çıktığınız anda websocket çalışmayı durdurur. İşte bu noktada Supervisior adlı uygulama imdadımıza yetişip bu komutun sürekli çalışmasını sağlayacaktır.

Supervisior kurulum ve ayarları için bu makaleden devam ediniz.

  1. Eklentini ayarlar sayfasında SSL için dosya yolunu eklemeniz ve ters proxy seçeneğini aktif etmeniz gerekiyor.
5 gün sonra

Eklenti 3.0.1 sürüme güncellendi.

👋 Durum Kanalları

Bir konuyu okuyan kullanıcıları Scrubber altında ve mobilde tartışma sayfası üzerinde listeleme yeteneği. (yalnızca oturum açmış kullanıcılar!)
Biri bir tartışmaya yanıt yazıyorsa bunu gösterme yeteneği (Yazmaya başladığı anda)
Kolay genişletme (aşağıdaki geliştirme kılavuzuna bakın)

📈 İstatistikler (beta)

Websocket sunucunuzla işlerin nasıl gittiğini gösteren bir istatistik eklendi.
Tepe bağlantı ve websocket mesaj sayaçları artık yönetici sayfanızın kontrol panelinde gösteriliyor.
Forumunuzun trafiğine hitap edecek istatistikler için yapılandırılabilir aralık
İstatistikler 10 gün sonra otomatik olarak silinir
İlk istatistiğinizi elde edene kadar kontrol panelinizde boş bir kutu olacak

📓 Notlar

Bu sürümde API biraz değişti, websocket’e bağlanırsanız aşağıdaki kılavuza bir göz atın
İstatistikler yalnızca Poxa olmayan sunucu için etkinleştirilir. İstatistikler açık ve kapalı arasında herhangi bir performans farkı bulamasam da, bu Poxa’yı en yüksek performans seçeneği olarak tutmaktır.
Geri bildirime bağlı olarak grafiğin gelecekte ayarlanması gerekebilir. Bazı verileri göremiyorsanız veya ölçek yanlışsa, @Kyrne ulaşmaktan çekinmeyin

⬆️ yükleme

  1. Çalışan websocket sunucunuzu kapatın
  2. Eklentiyi güncelleyin composer update kyrne/websocket
  3. Taşımaları çalıştırın php flarum migrate
  4. php flarum cache:clear Herhangi bir Cloudflare veya diğer sunucu önbelleklerinin yanı sıra önbelleğinizi de temizleyin
  5. Websocket yönetici sayfasında istatistik aralığını yapılandırın
  6. Websocket sunucusunu bir kez daha başlatın
  7. İlk aralığın geçmesini bekleyin ve grafiği kontrol edin!

🛠️ Geliştirici Notları

Artık websocket örneğine erişmek için özel bir yolunuz var. Basitçe app.pusher taahhüdü çözün ve itici örneğini doğrudan döndürülen değerin .pusher anahtarında bulacaksınız.
Kanallar artık aynı değerin .channel anahtarının altında bulunabilir
Varlık kanalına üzerinden erişilebilir app.discussions.presence, kullanıcının o anda görüntülemekte olduğu tartışma ile otomatik olarak güncellenir (her yeni bir tartışma görüntülendiğinde bir olaya bağlanmayı unutmayın!)

@tolga Eklenen yeni satırlar var. Biraz sevgi gösterebilir misin? 🥰

    4 ay sonra

    Cloudflare Flex SSL olarak kullandığımda uzantıda SSL kısımlarını nasıl ayarlabiliriz?

      durpoy Sunucuda bulunan SSL’nin yolunu yazman gerekir diye düşünüyorum

      2 ay sonra
      Hadımköy Kombi Servisi Minecraft Türk Sunucular