NodeBB adalah perangkat lunak forum modern yang didukung oleh Node.js yang menggunakan MongoDB/Redis sebagai platform basis data. Ini menggunakan soket web untuk interaksi instan dan pemberitahuan waktu nyata.
Dalam tutorial ini, kita akan mempelajari cara menginstal forum NodeBB di server berbasis Ubuntu 20.04.
Prasyarat
-
Server berbasis Ubuntu 20.04 dengan pengguna non-root yang memiliki hak sudo.
-
RAM minimal 2GB. Jika server Anda hanya memiliki RAM 1 GB, sebaiknya aktifkan partisi swap.
-
Pastikan semuanya diperbarui.
$ sudo apt update && sudo apt upgrade
-
Beberapa paket penting. Beberapa di antaranya sudah ada di server Anda.
$ sudo apt install curl wget nano ca-certificates gnupg2 lsb-release
Langkah 1 - Konfigurasi Firewall
Langkah pertama adalah mengkonfigurasi firewall. Ubuntu hadir dengan ufw (Uncomplicated Firewall) secara default.
Periksa apakah firewall sedang berjalan.
$ sudo ufw status
Anda akan mendapatkan output berikut.
Status: inactive
Izinkan port SSH agar firewall tidak memutus koneksi saat ini saat mengaktifkannya.
$ sudo ufw allow OpenSSH
Izinkan 27017
port untuk server MongoDB dan 4567
port untuk menjalankan forum NodeBB. Izinkan HTTP
dan HTTPS
port juga.
$ sudo ufw allow 27017
$ sudo ufw allow 4567
$ sudo ufw allow 80
$ sudo ufw allow 443
Aktifkan Firewall.
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Periksa kembali status firewall.
$ sudo ufw status
Anda akan melihat keluaran serupa.
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
27017 ALLOW Anywhere
4567 ALLOW Anywhere
80 ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
27017 (v6) ALLOW Anywhere (v6)
4567 (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
Langkah 2 - Instal Node.js
Kami akan menginstal versi LTS dari Node.js di sini. Jalankan perintah berikut untuk menginstal Node.js.
$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
$ sudo apt install nodejs
Periksa apakah Node sudah terpasang dengan benar.
$ node --version
Anda akan melihat keluaran serupa.
v12.18.3
Periksa npm juga.
$ npm --version
6.14.6
Langkah 3 - Instal MongoDB
MongoDB adalah database default untuk NodeBB. Anda juga dapat menggunakan Redis sebagai ganti MongoDB. Kami akan membahas kedua database dalam tutorial kami.
Repositori MongoDB untuk Ubuntu 20.04 belum siap dan Ubuntu sendiri membawa versi yang sangat lama. Untuk tujuan kami, kami akan menggunakan repositori MongoDB untuk 18,04 yang berfungsi dengan baik. Anda dapat memperbarui daftar paket dengan repositori terbaru setelah dukungan resmi tersedia.
Impor kunci publik untuk MongoDB.
$ wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
Tambahkan repositori MongoDB.
$ echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
Perbarui database paket lokal.
$ sudo apt update
Instal MongoDB.
$ sudo apt install mongodb-org
Verifikasi instalasi MongoDB.
$ mongod --version
db version v4.2.8
...
Mulai layanan MongoDB.
$ sudo systemctl start mongod
Aktifkan layanan MongoDB.
$ sudo systemctl enable mongod
Periksa status layanan MongoDB.
$ sudo systemctl status mongod
Langkah 4 - Mengonfigurasi MongoDB
Administrasi Mongo dilakukan melalui shell MongoDB. Instalasi default MongoDB mendengarkan pada port 27017.
Akses cangkang MongoDB.
$ mongo
Beralih ke admin
bawaan basis data.
> use admin
Buat pengguna administratif. Ini tidak sama dengan pengguna admin NodeBB.
> db.createUser( { user: "admin", pwd: "yourpassword", roles: [ { role: "root", db: "admin" } ] } )
Ubah placeholder “yourpassword”
ke kata sandi Anda sendiri.
Tambahkan database baru untuk NodeBB.
> use nodebb
Selanjutnya, buat nodebb
pengguna untuk mengelola nodebb
basis data.
> db.createUser( { user: "nodebb", pwd: "yourpassword", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
readwrite
izin memungkinkan NodeBB untuk menyimpan dan mengambil data dari nodebb
basis data. clustermonitor
izin memungkinkan akses baca-saja NodeBB ke statistik basis data yang terlihat melalui panel Adminnya.
Keluar dari cangkang Mongo.
> quit()
Buka file konfigurasi MongoDB untuk diedit.
$ sudo nano /etc/mongod.conf
Tambahkan baris berikut di akhir file.
security:
authorization: enabled
Mulai ulang MongoDB dan verifikasi pengguna administratif yang dibuat sebelumnya.
$ sudo systemctl restart mongod
$ mongo -u admin -p yourpassword --authenticationDatabase=admin
Anda akan melihat prompt Mongo jika semuanya telah dikonfigurasi dengan benar.
Langkah 5 - Instal Git
Sebelum kita melanjutkan untuk menginstal NodeBB, kita perlu menginstal Git.
Jalankan perintah berikut untuk menginstal Git.
$ sudo apt install git
Jalankan perintah berikut untuk melakukan konfigurasi awal Git.
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
Langkah 6 - Instal NodeBB
Tidak disarankan untuk menjalankan NodeBB sebagai pengguna root.
Buat pengguna yang tidak memiliki hak istimewa.
$ sudo adduser nodebb
Tetapkan kata sandi pilihan Anda dan lewati opsi lain.
Buat direktori tempat forum NodeBB Anda akan hidup.
$ sudo mkdir /var/www/nodebb
Ubah kepemilikan folder menjadi pengguna yang baru dibuat.
$ sudo chown -R nodebb:nodebb /var/www/nodebb
Masuk ke pengguna yang baru dibuat.
$ su nodebb
Beralih ke direktori instalasi NodeBB.
$ cd /var/www/nodebb
Untuk menginstal NodeBB, pertama-tama kita perlu mengkloning repositori Github-nya.
Klon NodeBB ke /var/www/nodebb
direktori. Titik di akhir perintah merujuk ke direktori saat ini.
$ git clone -b v1.14.2 https://github.com/NodeBB/NodeBB.git .
Di sini kami telah mengkloning v1.14.2 dari NodeBB yang merupakan versi stabil terbaru pada saat penulisan tutorial ini. Anda dapat menemukan cabang stabil terbaru dari halaman Rilis Terbaru NodeBB.
NodeBB dikirimkan dengan utilitas baris perintah. Gunakan perintah berikut untuk menginstal NodeBB.
$ ./nodebb setup
Anda dapat menekan enter untuk memilih nilai default.
Untuk nilai URL yang digunakan untuk mengakses NodeBB ini pilih URL final, Anda ingin mengakses forum di. Jika Anda akan mengakses forum melalui IP server Anda, masukkan itu atau masukkan domain lengkap forum. Di sini kita akan memasukkan http://forum.example.com
.
Tetap pilih nilai default hingga Anda diminta memasukkan nama pengguna MongoDB yaitu saat Anda memasukkan nodebb dan kata sandi yang Anda pilih sebelumnya untuk nama pengguna itu saat mengonfigurasi MongoDB. Basis data Anda nodebb harus dipilih. Anda juga akan diminta untuk membuat pengguna administrator dan detailnya.
Setelah penyiapan selesai, jalankan perintah berikut untuk memulai NodeBB.
$ ./nodebb start
Forum Anda sekarang sedang berjalan. Anda seharusnya dapat mengaksesnya melalui http://<yourserverip>:4567
.
Anda mungkin melihat pesan kesalahan yang mengatakan Sepertinya koneksi Anda ke NodeBB terputus, harap tunggu sementara kami mencoba menyambungkan kembali. Itu muncul karena kami memilih URL default untuk NodeBB http://forum.example.com
dan bukan http://<yourserverip
. Tetapi jika Anda memasukkan alamat IP selama penyiapan, Anda tidak akan mendapatkan kesalahan lagi tetapi perlu mengonfigurasi lagi nanti setelah Anda memilih domain untuk forum Anda.
Keluar dari pengguna NodeBB.
$ exit
Langkah 7 - Instal Nginx
Ubuntu 20.04 secara default membawa versi stabil terbaru dari Nginx. Kami akan menginstalnya.
$ sudo apt install nginx
Periksa apakah sudah terpasang dengan benar.
$ nginx -v
nginx version: nginx/1.18.0 (Ubuntu)
Mulai dan aktifkan Nginx.
$ sudo systemctl start nginx
$ sudo systemctl enable nginx
Buka alamat IP server Anda di browser web Anda. Anda akan melihat halaman berikut yang berarti server Anda aktif dan berjalan.
Langkah 8 - Konfigurasi Nginx
Jalankan perintah berikut untuk menambahkan file konfigurasi untuk situs Anda.
$ sudo nano /etc/nginx/sites-available/nodebb.conf
Rekatkan kode berikut di editor.
server {
listen 80;
server_name forum.example.com;
access_log /var/log/nginx/forum.example.com.access.log;
error_log /var/log/nginx/forum.example.com.error.log;
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";
}
}
Tekan Ctrl + X
untuk keluar dari editor dan masukkan Y
saat diminta.
Setelah Anda selesai, verifikasi bahwa konfigurasi Nginx sudah benar.
$ sudo nginx -t
Muat ulang layanan Nginx untuk mengaktifkan konfigurasi.
$ sudo systemctl reload nginx
Kunjungi http://forum.example.com
di browser Anda untuk membuka forum NodeBB.
Langkah 9 - Jalankan NodeBB sebagai Layanan Sistem
Layanan NodeBB tidak akan berjalan setelah sistem di-boot ulang. Untuk menghindari memulai NodeBB setiap saat, kita perlu menginstalnya sebagai Layanan Sistem.
Hentikan layanan NodeBB terlebih dahulu.
$ ./nodebb stop
Jalankan perintah berikut untuk membuat dan mengedit nodebb.service
file konfigurasi unit systemd.
$ sudo nano /etc/systemd/system/nodebb.service
Rekatkan kode berikut di editor.
[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
Di sini kami telah memilih nama pengguna sebagai nodebb
yang kita buat pada Langkah 6 dan jalur yang telah kita pilih untuk menginstal NodeBB di dalamnya.
Aktifkan layanan NodeBB.
$ sudo systemctl enable nodebb
Mulai layanan NodeBB.
$ sudo systemctl start nodebb
Periksa status layanan.
$ sudo systemctl status nodebb
Langkah 10 - Dapatkan sertifikat SSL Let's Encrypt
Mengamankan forum NodeBB Anda dengan HTTPS adalah langkah penting untuk mengamankan lalu lintas situs Anda. Untuk tutorial ini, kita akan menggunakan klien Certbot untuk menginstal SSL.
Untuk itu, instal alat Certbot terlebih dahulu.
$ sudo apt install certbot python3-certbot-nginx
Buat sertifikat.
$ sudo certbot --nginx -d forum.example.com
Jika ini adalah pertama kalinya Anda menjalankan Certbot di sistem Anda, Anda akan dimintai alamat email dan menyetujui persyaratan layanan. Anda juga akan ditanya apakah Anda setuju untuk berbagi data dengan yayasan EFF yang dapat Anda tolak. Setelah melakukannya, Certbot akan berkomunikasi dengan server Let's Encrypt dan menjalankan tantangan untuk memverifikasi domain Anda.
Jika berhasil, Anda akan ditanya bagaimana menangani pengalihan HTTPS.
Please choose whether HTTPS access is required or optional.
-------------------------------------------------------------------------------
1: Easy - Allow both HTTP and HTTPS access to these sites
2: Secure - Make all requests redirect to secure HTTPS access
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
Pilih Secure
pilihan dan tekan enter. Ini akan memastikan semua permintaan ke domain http akan dialihkan dengan benar ke versi https. Sertifikat Anda kemudian akan dibuat dan file konfigurasi Nginx Anda diperbarui dengan pengaturan SSL.
Sertifikat Anda sudah siap dan Anda dapat membuka situs Anda sekarang dengan membuka https://forum.example.com
Langkah 11 - Verifikasi Pembaruan Otomatis SSL
Ini adalah langkah terakhir sebelum kita mengakhiri tutorial ini.
Periksa proses perpanjangan dengan melakukan uji coba proses perpanjangan.
$ sudo certbot renew --dry-run
Jika Anda tidak mendapatkan kesalahan, itu berarti Anda sudah siap. Certbot akan secara otomatis memperbarui sertifikat Anda untuk Anda. Anda akan dikirimi email peringatan tentang masa berlaku sertifikat.
Kesimpulan
Itu saja untuk tutorial ini. Pengaturan forum NodeBB Anda selesai. Jika Anda memiliki pertanyaan, kirimkan di komentar di bawah.