NodeBB Kurulumu
Bu makalede Ubuntu 18.04 yüklü bir sunucuya sıfırdan Nodebb kurulumu yapacağız.

NodeBB nedir?
NodeBB tek sayfa uygulaması olarak çalışan oldukça hızlı ve akıcı bir forum yazılımıdır. NodejS tabanlı olan NodeBB; MangoDb veya Redis desteği sayesinde oldukça performanslı bir yapı göstermektedir. Dahili Türkçe desteği vardır. NodeBB, responsive yapıda bir yazılımdır. Geliştiricileri arasında Barış Uşaklı adında Kanada’da yaşayan bir Türk mühendiste bulunuyor.
Gereksinimler
NodeBB çalışması için aşağıdaki yazılımların yüklenmesi ve bir kaç seçeneğin önceden ayarlanması gerekir:
- Git
- Node.js sürüm 6.9.0 veya üstü
- MongoDB sürüm 2.6 veya üzeri
- nginx
- Minimum 1024 MB RAM
- A/ AAA Kayıtlar ayarlanmış alan adı
NodeBB’yi ister bu makaledeki gibi isterseniz aşağıdaki linkte anlattığım şekilde kurabilirsiniz.
https://mekici.com/nodebb-forum-kurulumu/
Kuruluma Başlamadan Önce
Sunucunun Ubuntu sürümünü kontrol edin.
lsb_release -ds
# Ubuntu 18.04 LTS
Sudo yetkilerine sahip yeni bir kullanıcı oluşturun, ben yusuf adında bir kullanıcı oluşturacağım.
adduser yusuf --gecos "Yusuf Yildirim"
usermod -aG sudo yusuf
su - yusuf
Sunucunun saat dilimini ayarlayın. Aşağıdaki komutu çalıştırdığınızda Yusuf kullanıcısı için belirlediğiniz şifreyi soracaktır.
sudo dpkg-reconfigure tzdata
Saat dilimi olarak Europe seçip “Enter” dedikten sonra açılan listeden İstanbul’u seçip tekrar “Enter” tuşuna basın.
Sisteminizin güncel olduğundan emin olun.
sudo apt update && sudo apt upgrade -y
Gerekli paketleri kurun.
sudo apt install -y git build-essential apt-transport-https
Node.js Kurulumu
NodeBB, Node.js tabanlı bir uygulamadır, bu nedenle yüklenmesi zorunludur. Node.js’nin geçerli LTS sürümünün yüklenmesi önerilir. NodeBB dökümanında önerilen versiyon Node.JS’nin 10.x sürümüdür.
Node.js dosyasını NodeSource deposundan yükleyin.
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt install -y nodejs
Node.js ve npm kurulumunu kontrol edin. Çıktılar alt satırlardaki gibi olmalı.
node -v && npm -v
# v12.15.0
# 5.6.0
MongoDB Kurulumu ve Yapılandırılması
MongoDB, NodeBB için varsayılan veritabanıdır. Ancak Redis’te kullanılabilir. Nodebb için resmi veri tabanı MongoDB olduğundan ben bu veri tabanını kuracağım. İsteyen Redis’te kullanabilir.
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
sudo apt-get update
sudo apt-get install -y mongodb-org
MongoDB kurulumunu kontrol edelim
mongod --version
db version v4.0
MongoDB’yi başlatın ve hizmet durumunu kontrol edin.
sudo systemctl start mongod
sudo systemctl status mongod
MongoDB Yeni Bir Veri Tabanı Oluşturma
MongoDB yerel olarak 27017 noktasını dinler ve SSh üzerinden erişilebilirdir. MongoDB’ye giriş için aşağıdaki komutu çalıştırın.
mongo
Yerel admin veritabanına geçin :
> use admin
NodeBB adında bir veri tabanı oluşturun. <Şifre> kısmına şifrenizi yazın. Şifrede < > olmayacak.
> db.createUser( { user: "admin", pwd: "<şifre>", roles: [ { role: "root", db: "admin" } ] } )
admin Yetkilendirme etkinleştirildikten sonra bu kullanıcı MongoDB’yi yönetmek için veri tabanına dahil edilir.
Şimdi “nodebb” adında bir veri tabanı oluşturacağız.
> use nodebb
Bu kullanıcıya uygun ayrıcalıklar ve veri tabanı şifresi tanımlamak için aşağıdaki komutu çalıştırın.
> db.createUser( { user: "nodebb", pwd: "<şifre>", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
Şimdi Mongobd’den çıkmak için aşağıdaki komutu çalıştırın.
> quit()
/etc/mongod.conf
Aşağıdaki satırları ekleyerek MongoDB yapılandırma dosyasında veritabanı yetkilendirmesini etkinleştirin :
security:
authorization: enabled
MongoDB’yi yeniden başlatın ve daha önce oluşturulan yönetici kullanıcının bağlanabileceğini doğrulayın:
sudo systemctl restart mongod
mongo -u admin -p şifre --authenticationDatabase=admin
Her şey doğru yapılandırılırsa, Mongo Shell bağlanacaktır. Sonra MongoDB’den çıkmak için quit() komutunu tekrar çalıştırın.
Nginx’i yükleme ve yapılandırma
Nginx’in en son ana sürümünü resmi Nginx deposundan yükleyin.
wget https://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
rm nginx_signing.key
sudo -s
printf "deb https://nginx.org/packages/mainline/ubuntu/ $(lsb_release -sc) nginx\ndeb-src https://nginx.org/packages/mainline/ubuntu/ $(lsb_release -sc) nginx\n" >> /etc/apt/sources.list.d/nginx_mainline.list
exit
sudo apt update
sudo apt install -y nginx
Nginx versiyonu kontrol edin.
sudo nginx -v
# nginx version: nginx/1.17.0
Nginx’i etkinleştirin ve başlatın.
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
NodeBB varsayılan olarak 4567 bağlantı noktasından çalışır. domain.com:4567 gibi bir adresi kimse kullanmak istemez. Bu yüzden ters proxy ile bu sorunu çözeceğiz. 4567 bağlantı noktası Nginx ile 80 veya 443 bağlantı noktasına yönlendirilir.
sudo nano /etc/nginx/conf.d/nodebb.conf
Aşağıdaki temel ters proxy yapılandırmasıyla çalıştırın ve doldurun. Server name karşısına kendi domain adınızı yazmayı unutmayın.
server {
listen [::]:80;
listen 80;
server_name forum.example.com;
root /usr/share/nginx/html;
client_max_body_size 50M;
location /.well-known/acme-challenge/ {
allow all;
}
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_hide_header X-Powered-By;
proxy_set_header X-Nginx-Proxy true;
proxy_pass http://127.0.0.1:4567;
proxy_redirect off;
# Socket.IO Support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Nginx yapılandırmasını kontrol edin.
sudo nginx -t
Bir hata yokda Nginx’i yeniden yükleyin.
sudo systemctl reload nginx.service
SSL Kurulumu
SSL kurmak isterseniz, ki kurmanızı tavsiye ederim. Achme.sh aracışlığıyla Let’s Encrypt ücretsiz SSL’yi siteye kuracağız. Buraya kaddar yaptığımız işlemler hep yusuf kullanıcı ile yapıldı. Şimdi exit komutunu çalıştırıp yeniden root kullanıcısına geçelim. Ardından aşağıdaki komutları sırasıyla çalıştırın.
Acme.sh dosyasını indirin ve yükleyin.
sudo mkdir /etc/letsencrypt
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
sudo ./acme.sh --install --home /etc/letsencrypt --accountemail your_email@example.com
cd ~
source ~/.bashrc
Versiyonu kontrol et.
acme.sh --version
# v2.7.9
forum.example.com için RSA ve ECDSA sertifikaları alın. Alan adınızı ve e-posta adresinizi değiştirmeyi unutmayın.
# RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --home /etc/letsencrypt -d forum.example.com --webroot /usr/share/nginx/html --reloadcmd "sudo systemctl reload nginx.service" --accountemail your_email@example.com --ocsp-must-staple --keylength 2048
# ECDSA/ECC P-256
sudo /etc/letsencrypt/acme.sh --issue --home /etc/letsencrypt -d forum.example.com --webroot /usr/share/nginx/html --reloadcmd "sudo systemctl reload nginx.service" --accountemail your_email@example.com --ocsp-must-staple --keylength ec-256
Yukarıdaki komutları çalıştırdıktan sonra, sertifikalarınız ve anahtarlarınız aşağıdaki dizinlerde olacaktır:
RSA: /etc/letsencrypt/forum.example.com
ECC / ECDSA: /etc/letsencrypt/forum.example.com_ecc
Let’s Encrypt’ten sertifikalar aldıktan sonra, bunları kullanmak için Nginx’i yapılandırmamız gerekecek.
sudo nano /etc/nginx/conf.d/nodebb.conf
Tekrar çalıştırın ve Nginx’i HTTPS ters proxy olarak yapılandırın.
server {
listen [::]:443 ssl http2;
listen 443 ssl http2;
listen [::]:80;
listen 80;
server_name forum.example.com;
root /usr/share/nginx/html;
client_max_body_size 50M;
location /.well-known/acme-challenge/ {
allow all;
}
# RSA
ssl_certificate /etc/letsencrypt/forum.example.com/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/forum.example.com/forum.example.com.key;
# ECDSA
ssl_certificate /etc/letsencrypt/forum.example.com_ecc/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/forum.example.com_ecc/forum.example.com.key;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:4567;
proxy_redirect off;
# Socket.IO Support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Yapılandırmayı kontrol edin.
sudo nginx -t
Herhangi bir hata uyarısı yoksa Nginx’i yeniden yükleyin.
sudo systemctl reload nginx.service
NodeBB Kurulumu
Artık NodeBB kurulumu için gerekli zemin hazırlandı. Şimdi kurulama geçebiliriz.
İlk önce root kullanıcından tekrar yusuf kullanıcısına geçelim. Bunun için aşağıdaki komutu çalıştırın.
su - yusuf
Şimdi Nodebb’nin yaşıyacağı klasörü oluşturalım.
sudo mkdir -p /var/www/nodebb
/var/www/nodebb
Dizinin sahibini yusuf olarak belirleyin.
sudo chown -R yusuf:yusuf /var/www/nodebb
NodeBB diziniğne gelelim
cd /var/www/nodebb
NodeBB’nin en son sürümünü belge kök klasörüne kopyalayın.
git clone -b v1.16.x https://github.com/NodeBB/NodeBB.git .
NodeBB kurulum komutunu çalıştırın ve istendiğinde her soruyu cevaplayın.
./nodebb setup

NodeBB kurulumu tamamlandıktan sonra ./nodebb start
komutu ile NodeBB’i başlatın.
./nodebb start
Bu komuttan sonra forumunuza web tarayıcınızdan erişebileceksiniz.
NodeBB Kurulumu ile alakalı sorun yaşıyorsanız ücretli destek sunmaktayım. Buradan bana ulaşabilirsiniz.