NodeBB adalah software forum berbasis Node.js yang dibuat untuk web modern. Ini dibuat di database MongoDB atau Redis. Ini menggunakan soket web untuk interaksi instan dan pemberitahuan waktu nyata. NodeBB memiliki banyak fitur modern di luar kotak seperti integrasi jejaring sosial dan diskusi streaming. Fungsionalitas tambahan diaktifkan melalui penggunaan plugin pihak ketiga. NodeBB adalah proyek open source yang dapat ditemukan di Github. Dalam panduan ini, kami akan memandu Anda langkah demi langkah melalui proses penginstalan NodeBB pada sistem operasi Ubuntu 18.04 LTS dengan menggunakan Nginx sebagai reverse proxy, MongoDB sebagai database dan acme.sh dan Let's Encrypt for HTTPS.
Persyaratan
NodeBB membutuhkan perangkat lunak berikut untuk diinstal:
- Versi Node.js 6 atau lebih besar
- Versi MongoDB 2.6 atau lebih tinggi atau versi Redis 2.8.9 atau lebih besar
- Versi Nginx 1.3.13 atau lebih besar
- Git
CATATAN : Menginstal dependensi NodeBB mungkin memerlukan lebih dari 512 megabyte memori sistem. Direkomendasikan untuk mengaktifkan partisi swap untuk mengimbangi jika sistem Linux Anda tidak memiliki cukup memori.
Prasyarat
- Sistem Ubuntu 18.04 yang berjalan dengan setidaknya 1 GB atau RAM.
- Nama domain dengan
A
/AAAA
catatan disiapkan. - Pengguna non-root dengan hak istimewa sudo.
Langkah awal
Periksa versi Ubuntu Anda:
lsb_release -ds
# Ubuntu 18.04.1 LTS
Siapkan zona waktu:
sudo dpkg-reconfigure tzdata
Perbarui paket sistem operasi Anda (perangkat lunak). Ini adalah langkah pertama yang penting karena memastikan Anda memiliki pembaruan dan perbaikan keamanan terbaru untuk paket perangkat lunak default sistem operasi Anda:
sudo apt update && sudo apt upgrade -y
Instal beberapa paket penting yang diperlukan untuk administrasi dasar sistem operasi Ubuntu:
sudo apt install -y curl wget vim git unzip socat bash-completion
Langkah 1:Instal Node.js dan npm
NodeBB dibuat di atas Node.js. Kami akan memasang disarankan versi untuk NodeBB yaitu versi 8 pada saat penulisan ini. Di Linux, Anda memiliki beberapa opsi penginstalan Node.js:Binari Linux (x86/x64), Kode Sumber atau melalui Manajer Paket. Kami akan menggunakan opsi Manajemen Paket yang membuat pemasangan dan pembaruan Node.js menjadi mudah.
Download dan instal rilis Long-Term Support (LTS) terbaru dari Node.js dari repo Nodesource:
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt install -y nodejs
Untuk mengompilasi dan menginstal add-on asli dari npm, Anda mungkin juga perlu menginstal alat bantu:
sudo apt install -y build-essential
CATATAN :npm didistribusikan dengan Node.js - yang berarti bahwa saat Anda mengunduh Node.js, Anda secara otomatis menginstal npm di sistem Anda.
Periksa versi Node.js dan npm:
node -v && npm -v
# v10.15.1
# 6.4.1
Npm adalah proyek terpisah dari Node.js, dan cenderung lebih sering diperbarui. Akibatnya, meskipun Anda baru saja mengunduh Node.js (dan karenanya npm), Anda mungkin perlu memperbarui npm Anda. Untungnya, npm tahu cara memperbarui dirinya sendiri! Untuk memperbarui npm Anda, ketik ini ke terminal Anda:
sudo npm install -g [email protected]
Perintah ini akan memperbarui npm ke versi stabil terbaru.
Periksa kembali versi npm dengan:
npm -v
# 6.7.0
Dan itu harus mengembalikan nomor versi terbaru.
Langkah 2:Instal dan konfigurasikan MongoDB
NodeBB membutuhkan database untuk menyimpan datanya, dan mendukung MongoDB dan Redis. Dalam tutorial ini, kami memilih MongoDB sebagai mesin penyimpanan data. Jadi, dalam beberapa langkah berikutnya, kita akan mengunduh dan menginstal database MongoDB dari repositori rpm MongoDB resmi:
Untuk menginstal paket MongoDB versi stabil, jalankan perintah berikut:
sudo apt install -y mongodb
Periksa versi MongoDB:
mongo --version | head -n 1 && mongod --version | head -n 1
Mulai dan aktifkan (setel untuk memulai saat reboot ) Layanan MongoDB:
sudo systemctl start mongodb.service
sudo systemctl enable mongodb.service
Periksa status Server Database MongoDB dengan menjalankan:
sudo systemctl status mongodb.service
# active (running)
Selanjutnya, buat database MongoDB dan pengguna untuk NodeBB.
Hubungkan ke server MongoDB terlebih dahulu.
mongo
Beralih ke admin
bawaan basis data.
> use admin
Buat pengguna administratif.
> db.createUser( { user: "admin", pwd: "<Enter a secure password>", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] } )
CATATAN: Ganti placeholder <Enter a secure password>
dengan kata sandi pilihan Anda sendiri.
Tambahkan database baru bernama nodebb
.
> use nodebb
Basis data akan dibuat dan konteks dialihkan ke nodebb
. Selanjutnya buat nodebb
pengguna dengan hak istimewa yang sesuai.
> db.createUser( { user: "nodebb", pwd: "<Enter a secure password>", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
CATATAN: Sekali lagi, ganti placeholder <Enter a secure password>
dengan kata sandi pilihan Anda sendiri.
Keluar dari cangkang Mongo.
> quit()
Mulai ulang MongoDB dan verifikasi bahwa pengguna administratif yang dibuat sebelumnya dapat terhubung.
sudo systemctl restart mongodb.service
mongo -u admin -p your_password --authenticationDatabase=admin
Jika semuanya berjalan dengan baik, MongoDB Anda harus diinstal dan disiapkan untuk NodeBB. Pada langkah berikutnya, kita akan berurusan dengan penginstalan dan konfigurasi server web.
Langkah 3 - Instal acme.sh
klien dan dapatkan sertifikat Let's Encrypt (opsional )
Mengamankan Forum NodeBB Anda dengan HTTPS tidak diperlukan, tetapi ini adalah praktik yang baik untuk mengamankan lalu lintas situs Anda. Untuk mendapatkan sertifikat TLS dari Let's Encrypt, kami akan menggunakan klien acme.sh. Acme.sh adalah software shell unix murni untuk mendapatkan sertifikat TLS dari Let's Encrypt tanpa ketergantungan.
Unduh dan instal acme.sh:
sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail [email protected]
source ~/.bashrc
cd ~
Periksa versi acme.sh :
acme.sh --version
# v2.8.0
Dapatkan RSA dan ECC/ECDSA sertifikat untuk domain/hostname Anda:
# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256
Jika Anda ingin sertifikat palsu untuk pengujian, Anda dapat menambahkan --staging
tandai perintah di atas.
Setelah menjalankan perintah di atas, sertifikat your Anda dan kunci akan di:
- Untuk RSA :
/home/username/example.com
direktori. - Untuk ECC/ECDSA :
/home/username/example.com_ecc
direktori.
Untuk membuat daftar sertifikat yang dikeluarkan, Anda dapat menjalankan:
acme.sh --list
Buat direktori untuk menyimpan sertifikat Anda. Kami akan menggunakan /etc/letsencrypt
direktori.
mkdir -p /etc/letsecnrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc
Instal/salin sertifikat ke direktori /etc/letsencrypt.
# RSA
acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
Semua sertifikat akan diperpanjang secara otomatis setiap 60 hari.
Setelah mendapatkan sertifikat keluar dari pengguna root dan kembali ke pengguna sudo normal:
exit
Langkah 4:Instal dan konfigurasikan Nginx
NodeBB dapat bekerja dengan baik dengan banyak server web. Dalam tutorial ini, kami memilih Nginx.
Instal paket Nginx, dengan mengeluarkan perintah berikut:
sudo apt install -y nginx
Setelah penginstalan, Anda dapat memverifikasi versi Nginx dengan menjalankan:
nginx -v
Mulai dan aktifkan (setel untuk memulai saat reboot ) Layanan Nginx:
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
Periksa status server web Nginx dengan menjalankan:
sudo systemctl status nginx.service
# active (running)
NodeBB secara default berjalan pada port 4567
. Untuk menghindari mengetik http://example.com:4567
, kita akan mengkonfigurasi Nginx sebagai reverse proxy untuk aplikasi NodeBB. Setiap permintaan pada port 80
atau 443
(jika SSL digunakan ) akan diteruskan ke port 4567
.
Jalankan sudo vim /etc/nginx/conf.d/nodebb.conf
dan konfigurasikan Nginx sebagai proxy terbalik HTTPS.
server {
listen [::]:443 ssl http2;
listen 443 ssl http2;
listen [::]:80;
listen 80;
server_name example.com;
client_max_body_size 50M;
# RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
# ECDSA
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.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";
}
}
Periksa konfigurasi Nginx:
sudo nginx -t
Terakhir, agar perubahan diterapkan, kita perlu memuat ulang Nginx:
sudo systemctl reload nginx.service
Langkah 5:Instal dan atur NodeBB
Buat direktori root dokumen tempat NodeBB seharusnya berada:
sudo mkdir -p /var/www/nodebb
Arahkan ke direktori root dokumen:
cd /var/www/nodebb
Ubah kepemilikan /var/www/nodebb
direktori ke pengguna_Anda.
sudo chown -R [your_user]:[your_user] /var/www/nodebb
CATATAN: Ganti your_user pada perintah di atas dengan pengguna non-root yang seharusnya Anda buat sebagai prasyarat untuk tutorial ini .
Kloning repositori NodeBB terbaru ke dalam folder root dokumen:
git clone -b v1.11.x https://github.com/NodeBB/NodeBB.git .
Mulai skrip penyiapan dengan menjalankan aplikasi dengan setup
bendera. Jawab setiap pertanyaan:
./nodebb setup
Setelah penyiapan NodeBB selesai, jalankan ./nodebb start
untuk memulai server NodeBB Anda secara manual:
./nodebb start
Setelah menjalankan perintah ini, Anda seharusnya dapat mengakses forum baru Anda di browser web Anda:
Langkah 6:Jalankan NodeBB sebagai Layanan Sistem
Ketika dimulai melalui ./nodebb start
, NodeBB tidak akan secara otomatis memulai kembali ketika sistem di-boot ulang. Untuk menghindarinya, kita perlu mengatur NodeBB sebagai layanan sistem.
Jika sedang berjalan, hentikan NodeBB:
./nodebb stop
Buat nodebb
baru pengguna:
sudo useradd nodebb
Ubah kepemilikan /var/www/nodebb
direktori ke nodebb
pengguna:
sudo chown -R nodebb:nodebb /var/www/nodebb
Buat nodebb.service
file konfigurasi unit systemd. File unit ini akan menangani startup deamon NodeBB. Jalankan sudo vim /etc/systemd/system/nodebb.service
dan tambahkan konten di bawah ini:
[Unit]
Description=NodeBB
Documentation=https://docs.nodebb.org
After=system.slice multi-user.target mongod.service
[Service]
Type=forking
User=nodebb
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=nodebb
Environment=NODE_ENV=production
WorkingDirectory=/var/www/nodebb
PIDFile=/var/www/nodebb/pidfile
ExecStart=/usr/bin/env node loader.js
Restart=always
[Install]
WantedBy=multi-user.target
CATATAN: Tetapkan nama pengguna dan jalur direktori sesuai dengan nama yang Anda pilih.
Aktifkan nodebb.service
saat reboot dan segera mulai nodebb.service:
sudo systemctl enable nodebb.service
sudo systemctl start nodebb.service
Periksa nodebb.service
status:
sudo systemctl status nodebb.service
sudo systemctl is-enabled nodebb.service
Selamat! Anda telah berhasil menginstal dan menerapkan platform diskusi NodeBB pada sistem Ubuntu 18.04. Anda seharusnya dapat mengakses forum di domain Anda dan berinteraksi dengan forum Anda.
Tautan
- https://nodebb.org/
- https://docs.nodebb.org/
- https://github.com/NodeBB/NodeBB