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.