Discourse adalah aplikasi forum diskusi free dan open source yang dapat digunakan sebagai milis dan ruang obrolan. Discourse adalah platform yang sangat kuat dan fleksibel yang memungkinkan pengguna untuk masuk dengan Sistem Single Sign-On. Discourse juga dapat diintegrasikan dengan WordPress, Google Analytics, Zendesk, Patreon, Slack dan banyak lagi.
Discourse mendukung pemberitahuan email, balasan email dan berbagai metode otentikasi seperti jejaring sosial, dan sistem single sign-on. Sederhana, mudah digunakan, flat, dan dilengkapi dengan mobile layout ponsel bawaan.
Dalam tutorial ini, kita akan belajar cara menginstal dan mengkonfigurasi forum Discourse di server Ubuntu 18.04.
Prasyarat
- Sistem yang menjalankan sistem Ubuntu 18.04.
- Memiliki IP yang menunjuk ke server
- Masuk sebagai user non-root dengan hak sudo.
Sebelum Mulai
Perbarui paket sistem operasi Anda (software). Ini adalah langkah pertama yang penting karena memastikan Anda memiliki pembaruan terbaru dan perbaikan keamanan untuk paket perangkat lunak default sistem operasi Anda:
sudo apt update && sudo apt upgrade -y
Setelah server diperbarui, restart sistem Anda untuk menerapkan semua perubahan
Setting FQDN (Opsional)
Selanjutnya, Anda perlu mengatur FQDN di server (opsional). Anda dapat melakukannya dengan perintah berikut:
hostnamectl set-hostname test.example.com
Selanjutnya, buka file /etc/hosts
dengan text editor nano
dan tambahkan baris berikut:
nano /etc/hosts
Tambahkan baris berikut:
192.168.0.101 test.example.com test
Simpan dan tutup file ketika selesai. Kemudian, jalankan perintah berikut untuk menerapkan semua perubahan:
hostname -f
Selanjutnya, Anda perlu menginstal beberapa paket yang diperlukan ke sistem. Anda dapat menginstalnya dengan perintah berikut:
apt-get install nginx curl git wget unzip -y
Setelah selesai, Anda dapat melanjutkan ke langkah berikutnya.
Install dan Konfigurasikan PostgreSQL
Pertama, Anda perlu menginstall PostgreSQL ke sistem. Anda dapat menginstalnya dengan menjalankan perintah berikut:
apt-get install postgresql -y
Setelah PostgreSQL diinstal, masuk ke konsol PostgreSQL dengan perintah berikut:
sudo -u postgres psql
Selanjutnya, buat database dan user untuk Discourse dengan perintah berikut:
postgres=#CREATE DATABASE discoursedb; postgres=#CREATE USER discourseuser; postgres=#ALTER USER discourseuser WITH ENCRYPTED PASSWORD 'GantiDenganPassword'; postgres=#ALTER DATABASE discoursedb OWNER TO discourseuser;
Selanjutnya, sambungkan ke discoursedb dan buat ekstensi hstore
dan pg_trgm
dengan perintah berikut:
postgres=#\c discoursedb; postgres=#CREATE EXTENSION hstore; postgres=#CREATE EXTENSION pg_trgm;
Terakhir, keluar dari PostgreSQL dengan perintah berikut:
postgres=#\q
Install Ruby
Selanjutnya, Anda perlu menginstal Ruby versi terbaru ke sistem. Anda dapat menginstal Ruby menggunakan RVM.
Pertama, instal GNU privacy guard dengan perintah berikut:
apt-get install gnupg2 -y
Selanjutnya, impor GPG keys Ruby version manager dengan perintah berikut:
gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
Anda akan melihat output berikut:
gpg: keybox '/root/.gnupg/pubring.kbx' created gpg: key 105BD0E739499BDB: 6 signatures not checked due to missing keys gpg: /root/.gnupg/trustdb.gpg: trustdb created gpg: key 105BD0E739499BDB: public key "Piotr Kuczynski <[email protected]>" imported gpg: key 3804BB82D39DC0E3: 103 signatures not checked due to missing keys gpg: key 3804BB82D39DC0E3: public key "Michal Papis (RVM signing) <[email protected]>" imported gpg: no ultimately trusted keys found gpg: Total number processed: 2 gpg: imported: 2
Selanjutnya, instal RVM dengan Ruby and Rails default dengan perintah berikut:
curl -sSL https://get.rvm.io | bash -s stable --rails
Setelah menginstal Ruby and Rails, Anda harus mencari skrip RVM. Anda dapat melakukannya dengan perintah berikut:
source /usr/local/rvm/scripts/rvm
Anda sekarang dapat melihat versi Ruby dengan perintah berikut:
rvm list
Anda akan melihat output berikut:
=* ruby-2.6.3 [ x86_64 ] # => - current # =* - current && default # * - default
Install dan Konfigurasi Discourse
Pertama, Anda download versi terbaru dari Discourse dari repositori Git. Anda dapat mengunduhnya dengan perintah berikut:
cd /var/www/ git clone https://github.com/discourse/discourse.git
Output:
Cloning into 'discourse'... remote: Enumerating objects: 57, done. remote: Counting objects: 100% (57/57), done. remote: Compressing objects: 100% (37/37), done. remote: Total 403387 (delta 26), reused 34 (delta 20), pack-reused 403330 Receiving objects: 100% (403387/403387), 267.39 MiB | 235.00 KiB/s, done. Resolving deltas: 100% (252384/252384), done. Checking out files: 100% (27055/27055), done.
Selanjutnya, masuk ke direktori discourse dan lihat stable release terbaru dari Discourse dengan perintah berikut:
cd discourse git checkout v2.2.4
Selanjutnya, instal Ruby dependency manager dengan perintah berikut:
/usr/local/rvm/src/ruby-2.6.3/bin/gem install bundler -v '1.17.3'
Anda akan melihat output berikut:
Fetching bundler-1.17.3.gem Successfully installed bundler-1.17.3 Parsing documentation for bundler-1.17.3 Installing ri documentation for bundler-1.17.3 Done installing documentation for bundler after 15 seconds 1 gem installed
Selanjutnya, Anda perlu menginstal beberapa paket tambahan untuk mengkompilasi source code. Anda dapat menginstal semuanya dengan perintah berikut:
apt-get install gcc ruby-dev libxslt-dev libxml2-dev zlib1g-dev libpq-dev imagemagick redis-server optipng pngquant jhead jpegoptim gifsicle -y
Selanjutnya, instal semua dependensi yang diperlukan oleh Discourse dengan perintah berikut:
RAILS_ENV=production bundle install --path vendor/bundle/
Selanjutnya, ganti nama file konfigurasi default Discourse dengan perintah mv
seperti berikut:
mv config/discourse_defaults.conf config/discourse.conf
Selanjutnya, buka file discourse.conf dan tentukan pengaturan database Anda:
nano config/discourse.conf
Ubah baris berikut:
db_host = localhost db_port = 5432 db_name = discoursedb db_username = discourseuser db_password = PaswwordDatabaseAnda hostname = "test.example.com"
Simpan dan tutup file. Kemudian, edit file konfigurasi production environment dengan perintah berikut:
nano /var/www/discourse/config/environments/production.rb
Tambahkan baris berikut sebagai baris ketiga
require 'uglifier'
Kemudian, cari baris berikut:
config.assets.js_compressor = :uglifier
Dan ganti dengan yang pengaturan ini:
config.assets.js_compressor = Uglifier.new(harmony: true)
Simpan dan tutup file ketika Anda selesai. Kemudian, siapkan Discourse untuk production dengan perintah berikut:
RAILS_ENV=production bundle exec rake db:migrate RAILS_ENV=production bundle exec rake assets:precompile
Selanjutnya, buka file puma.rb dengan perintah berikut:
nano /var/www/discourse/config/puma.rb
Temukan baris berikut:
APP_ROOT = '/home/discourse/discourse'
Ganti dengan baris berikut:
APP_ROOT = '/var/www/discourse'
Simpan dan tutup file ketika Anda selesai. Kemudian, buat direktori sockets dan process ID direktori dengan perintah berikut:
mkdir /var/www/discourse/tmp/sockets/ mkdir /var/www/discourse/tmp/pids/
Terakhir, start Discourse dengan menjalankan perintah berikut:
RAILS_ENV=production bundle exec puma -C /var/www/discourse/config/puma.rb
Anda akan melihat output berikut:
[29834] Puma starting in cluster mode... [29834] * Version 3.11.4 (ruby 2.6.3-p62), codename: Love Song [29834] * Min threads: 8, max threads: 32 [29834] * Environment: development [29834] * Process workers: 4 [29834] * Preloading application [29834] * Listening on unix:///var/www/discourse/tmp/sockets/puma.sock [29834] ! WARNING: Detected 3 Thread(s) started in app boot: [29834] ! #<Thread:0x000055b1a3e871a0@/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-2.2.0.pre.1/lib/message_bus.rb:667 sleep> - /var/www/html/discourse/vendor/bundle/ruby/2.6.0/gems/hiredis-0.6.1/lib/hiredis/ext/connection.rb:19:in `read' [29834] ! #<Thread:0x000055b1a3e86840@/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-2.2.0.pre.1/lib/message_bus/timer_thread.rb:38 sleep> - /var/www/html/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-2.2.0.pre.1/lib/message_bus/timer_thread.rb:123:in `sleep' [29834] ! #<Thread:0x000055b1a234dfb0@/var/www/discourse/lib/discourse.rb:584 sleep> - /var/www/discourse/lib/discourse.rb:587:in `sleep' [29834] * Daemonizing...
Selanjutnya, buat akun admin untuk mengakses antarmuka web Discourse dengan perintah berikut:
cd /var/www/discourse RAILS_ENV=production bundle exec rake admin:create
Berikan email dan kata sandi Anda seperti yang ditunjukkan di bawah ini:
Email: [email protected] Password: Repeat password: Ensuring account is active! Account created successfully with username example Do you want to grant Admin privileges to this account? (Y/n) Y Your account now has Admin privileges!
Selanjutnya, restart layanan Discourse dengan perintah berikut:
RAILS_ENV=production bundle exec pumactl -P /var/www/discourse/tmp/pids/puma.pid restart
Konfigurasi Nginx untuk Discourse
Selanjutnya, Anda perlu mengkonfigurasi Nginx sebagai reverse proxy untuk mengakses web interface Discourse pada port 80.
Pertama, copy file konfigurasi sampel virtual host Nginx dengan perintah berikut:
cp /var/www/discourse/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf
Selanjutnya, buka file discourse.conf
dengan perintah berikut:
nano /etc/nginx/conf.d/discourse.conf
Buat perubahan berikut:
#upstream discourse { # server unix:/var/www/discourse/tmp/sockets/thin.0.sock; # server unix:/var/www/discourse/tmp/sockets/thin.1.sock; # server unix:/var/www/discourse/tmp/sockets/thin.2.sock; # server unix:/var/www/discourse/tmp/sockets/thin.3.sock; #} upstream discourse { server unix:/var/www/discourse/tmp/sockets/puma.sock; } server_name test.example.com;
Simpan dan tutup file ketika Anda selesai. Kemudian, buat direktori cache dengan perintah berikut:
mkdir -p /var/nginx/cache/
Selanjutnya, periksa Nginx untuk setiap kesalahan sintaks dengan perintah berikut:
nginx -t
Output:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Selanjutnya, restart Nginx untuk menerapkan semua perubahan:
systemctl restart nginx
Anda juga dapat memeriksa status Nginx dengan perintah berikut:
systemctl status nginx
Output:
? nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2019-05-26 04:19:12 UTC; 29min ago Docs: man:nginx(8) Process: 1052 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 848 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 1065 (nginx) Tasks: 3 (limit: 1114) CGroup: /system.slice/nginx.service ??1065 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ??1066 nginx: worker process ??1067 nginx: cache manager process May 26 04:19:04 ubuntu1804 systemd[1]: Starting A high performance web server and a reverse proxy server... May 26 04:19:12 ubuntu1804 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument May 26 04:19:12 ubuntu1804 systemd[1]: Started A high performance web server and a reverse proxy server.
Anda juga perlu menyalin file JS berikut jika Anda mendapatkan kesalahan untuk mengakses web Discourse :
cp /var/www/discourse/public/assets/_vendor-3eae3eec8fba033cb1b5af6c103a5b8781caa69cf97fe7773ba89ba68980b263.js /var/www/discourse/public/assets/vendor-3eae3eec8fba033cb1b5af6c103a5b8781caa69cf97fe7773ba89ba68980b263.js
Akses web interface Discourse
Discourse sekarang diinstal dan dikonfigurasi, saatnya untuk mengakses antarmuka web Discourse.
Buka browser web dan ketik URL http://test.example.com. Anda akan diarahkan ke halaman berikut:
Sekarang, klik tombol Log In. Anda akan melihat halaman berikut:
Sekarang, berikan nama pengguna dan kata sandi Anda. Kemudian, klik tombol Log In. Anda akan melihat halaman berikut:
Sekarang Anda dapat memulai Setup wizard menggunakan URL http://test.example.com/wizard di web browser. Anda akan melihat Welcome screen di halaman berikut:
Sekarang, pilih bahasa Anda dan klik tombol Next. Anda akan melihat halaman berikut:
Di sini, ketik topik Anda dan klik tombol Next. Anda akan melihat halaman berikut:
Di sini, pilih Publik dan klik tombol Next. Anda akan melihat halaman berikut:
Di sini, berikan email dan halaman kontak Anda. Kemudian, klik tombol Next. Anda akan melihat halaman berikut:
Di sini, berikan nama dan alamat perusahaan Anda. Kemudian, klik tombol Next. Anda akan melihat halaman berikut:
Sekarang, pilih tema Anda dan klik tombol Next. Anda akan melihat halaman berikut:
Sekarang, unggah logo Anda dan klik tombol Next. Anda akan melihat halaman berikut:
Sekarang, pilih Ikon dan klik tombol Next. Anda akan melihat halaman berikut:
Sekarang, pilih halaman beranda dan klik tombol Next. Anda akan melihat halaman berikut:
Sekarang, pilih Emoji sesuai keinginan dan klik tombol Next. Anda akan melihat halaman berikut:
Sekarang, undang staf Anda untuk bergabung dengan forum ini dan klik tombol Next. Setelah instalasi selesai, Anda akan melihat halaman berikut:
Sekarang, klik tombol Done. Anda akan diarahkan ke dasbor Discourse yang ditampilkan di halaman berikut:
Selamat! Anda telah berhasil menginstal dan mengkonfigurasi forum Discourse di server Ubuntu 18.04.