GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara menginstal Forum NodeBB dengan Nginx dan Lets Encrypt SSL di Ubuntu 20.04 LTS

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.


Ubuntu
  1. Amankan Nginx dengan Lets Encrypt di Ubuntu 20.04

  2. Cara Menginstal Nextcloud dengan Nginx dan Lets Encrypt SSL di Ubuntu 20.04 LTS

  3. Cara Menginstal Magento 2 dengan Nginx dan Mengenkripsi SSL di Ubuntu 20.04 LTS

  1. Cara Menginstal Shopware dengan NGINX dan Mari mengenkripsi di Ubuntu 18.04 LTS

  2. Instal Automad CMS dengan Nginx dan Lets Encrypt SSL di Ubuntu 18.04

  3. Cara Install Grav CMS dengan Nginx dan Lets Encrypt di Ubuntu 18.04 LTS

  1. Cara menginstal osTicket dengan Nginx di Ubuntu 18.04 LTS

  2. Cara Menginstal X-Cart dengan Nginx dan Mengenkripsi SSL di Ubuntu 18.04 LTS

  3. Cara Menginstal Drupal dengan Nginx dan Mengenkripsi SSL di Ubuntu 20.04 LTS