Cara Install Commento Dan Konfigurasi Nginx Sebagai Reverse Proxy-nya

Cara menginstal Commento beserta dependensi yang diperlukan seperti PostgreSQL, meng-konfigurasi Commento dan SystemD service, dan menggunakan Nginx sebagai reverse-proxy supaya Commento dapat diakses melalui HTTPS.

Commento adalah platform layanan komentar (seperti Disqus) yang berfokus pada privasi. Dia open-source, relatif cepat saat diakses dan dapat didownload dan dijalankan di server milik kita sendiri (self-hosted). Artikel ini membahas mengenai cara menginstal Commento beserta dependensi yang diperlukan seperti PostgreSQL, meng-konfigurasi Commento dan SystemD service supaya dapat auto-start setelah server booting. Dan, sebagai tambahan, menggunakan Nginx sebagai reverse-proxy supaya Commento dapat diakses melalui HTTPS.

PERINGATAN: Saya menggunakan Commento sudah cukup lama, tapi sejak 1 tahun yang lalu sampai artikel ini dibuat, saya tidak menemukan adanya rilis terbaru ataupun commit ke master branch di git repositori-nya. Anda bisa mencoba Commento++ sebagai penggantinya.

Kebutuhan Hardware

Commento bisa dibilang cukup ringan dan dari pihak developer sendiri menyarankan untuk dapat menjalankan Commento, paling tidak server memiliki 64MB free RAM dan paling tidak 30MB free disk space. Tentu saja kebutuhan tersebut diluar kebutuhan untuk menjalankan PostgreSQL database server dan Nginx Web Server / Reverse Proxy server.

Tentu saja Anda bisa juga menggunakan PostgreSQL server terpisah atau penyedia layanan PostgreSQL berbasis cloud untuk database Commento.

Program commento yang distribusikan ke publik terkonfirmasi dapat berjalan dengan baik di arsitektur hardware amd64 dan x86.

Kebutuhan Software

Commento menggunakan PostgreSQL sebagai databasenya, dan supaya dapat berjalan dengan baik, dibutuhkan PostgreSQL versi 9.6 atau lebih tinggi. Tidak ada kebutuhan software lainnya, kecuali Anda benar-benar ingin mengcompile Commento dari source-codenya.

Disamping itu, disarankan juga untuk menggunakan Nginx didepan Commento supaya commento dapat diakses melalui HTTPS.

Install PostgreSQL

Di artikel ini mari kita asumsikan bahwa kita menggunakan Ubuntu 20.04 dimana dari repositori official package repository-nya sudah menyediakan PostgreSQL versi 9.6 (atau lebih tinggi).

Install postgresql dan postgresql-contrib:

1sudo apt update && sudo apt install postgresql postgresql-contrib

Secara default, Postgres menggunakan konsep yang disebut roles untuk menghandle autentikasi dan otorisasi (sistemnya mirip dengan User dan Group pada sistem operasi Linux / Unix).

Buat role baru pada PostgreSQL menggunakan user postgres menggunakan perintah berikut:

1sudo -u postgres createuser --interactive
Enter name of role to add: commento
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n

Setelah itu, buat database baru menggunakan user postgres yang nantinya digunakan oleh Commento dengan perintah createdb :

1sudo -u postgres createdb commento

Perintah diatas akan membuat database baru dengan commento.

Opsional: Buat password untuk user postgres:

1sudo -u postgres psql
2ALTER USER postgres PASSWORD '[GantiDenganPasswordPilihanAnda]';

Jika sukses, Posgres akan merespond dengan output ALTER ROLE.

Install Commento

Cari Commento rilis terbaru dan download arsipnya ke server:

1wget https://dl.commento.io/release/commento-v1.8.0-linux-glibc-amd64.tar.gz

Extract ke folder dimana program binary Commento ingin disimpan dan nantinya dijalankan. Misalnya /opt/commento.

1mkdir /opt/commento
2tar -xvzf commento-v1.8.0-linux-glibc-amd64.tar.gz -C /opt/commento/

Mengkonfigurasi Commento

Sebelum dapat menjalankan program / service Commento, Anda perlu menentukan konfigurasi yang dibutuhkan, antara lain: URL yang nantinya digunakan untuk mengakses self-hosted Commento, koneksi ke database, dll. Ada pula konfigurasi opsional seperti SMTP dan OAuth.

Di artikel ini mari kita asumsikan kalau Commento akan dijalankan di server dengan menggunakan alamat IP lokal (127.0.0.1) port 8088 dan nantinya dapat diakses dari URL https://commento.ditatompel.com melalui Nginx reverse proxy.

Selain itu, diasumsikan juga server database PostgreSQL berada di 1 server yang sama dengan program Commento dijalankan dengan informasi sebagai berikut:

Host: 127.0.0.1
Nama database : commento
User: commento
password: commentoPassword

Buat environment variables yang nantinya digunakan oleh Commento systemd service. Anda bisa meletakan file .env di folder /etc/commento/commento.env supaya nantinya kita lebih mudah saat mengubah-ubah konfigurasi.

 1COMMENTO_ORIGIN=https://commento.ditatompel.com
 2#COMMENTO_CDN_PREFIX=https://commento.ditatompel.com
 3# Set binding values
 4COMMENTO_BIND_ADDRESS=127.0.0.1
 5COMMENTO_PORT=8088
 6
 7# Set PostgreSQL settings
 8COMMENTO_POSTGRES=postgres://commento:[email protected]:5432/commento?sslmode=disable
 9
10#
11# Below configuration is optional
12# Uncomment and edit to fit your needs
13#
14
15# Prevent registration
16#COMMENTO_FORBID_NEW_OWNERS=false # default true
17
18# If set to true, all static content will be served GZipped if the client's browser supports compression. Defaults to false.
19#COMMENTO_GZIP_STATIC=true
20
21
22# Set the SMTP credentials
23#COMMENTO_SMTP_HOST=mail.example.com
24#COMMENTO_SMTP_PORT=587
25#[email protected]
26#COMMENTO_SMTP_PASSWORD=examplePassword
27#[email protected]
28
29# Set Google OAuth credentials
30#COMMENTO_GOOGLE_KEY=some-random-string-key.apps.googleusercontent.com
31#COMMENTO_GOOGLE_SECRET=somerandomsecret

Kemudian buat systemd service file yang berlokasi di /etc/systemd/system/commento.service:

 1[Unit]
 2Description=Commento daemon service
 3After=network.target postgresql.service
 4
 5[Service]
 6Type=simple
 7ExecStart=/opt/commento/commento
 8Environment=COMMENTO_CONFIG_FILE=/etc/commento/commento.env
 9
10[Install]
11WantedBy=multi-user.target

Reload konfigurasi systemd service files kemudian jalankan Commento service:

1sudo systemctl daemon-reload
2sudo systemctl start commento
3sudo systemctl enable commento

Setting Nginx reverse proxy untuk Commento (sub)domain

Terakhir, saatnya untuk mengkonfigurasi Nginx didepan Commento. Konfigurasi server block Nginx dibawah ini adalah contoh basic yang memerintahkan Nginx berjalan sebagai reverse-proxy untuk Commento (Mengaktifkan HTTPS dan meneruskan HTTP request ke 127.0.0.1 port 8088).

 1server {
 2    listen 80;
 3    server_name commento.ditatompel.com;
 4    root /var/www/default;
 5    # in case you use certbot...
 6    location /.well-known/acme-challenge/ { allow all; }
 7    location / { return 301 https://$host$request_uri; }
 8}
 9
10server {
11    listen 443 ssl http2;
12    server_name commento.ditatompel.com;
13	
14    # Edit to fit with your server environment and path
15    ssl_certificate     /path/to/your/cert/fullchain.pem;
16    ssl_certificate_key /path/to/your/cert/privkey.pem;
17    ssl_dhparam         /path/to/your/cert/dhparam.pem;
18    ssl_session_timeout 1d;
19    ssl_session_cache shared:SSL:10m;
20    ssl_session_tickets off;
21    ssl_protocols TLSv1.2 TLSv1.3;
22    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
23    ssl_prefer_server_ciphers off;
24
25    root /var/www/default;
26
27    location / {
28        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
29        proxy_set_header X-Forwarded-Proto $scheme;
30        proxy_set_header X-Real-IP $remote_addr;
31        proxy_set_header Host $http_host;
32        proxy_pass http://127.0.0.1:8088/;
33    }
34}

Restart Nginx service dan coba akses Commento menggunakan browser Anda.

Resources