mirror of
https://github.com/ditatompel/insights.git
synced 2025-01-08 03:12:06 +07:00
221 lines
8.7 KiB
Markdown
221 lines
8.7 KiB
Markdown
|
---
|
||
|
title: "Cara Install Commento Dan Konfigurasi Nginx Sebagai Reverse Proxy-nya"
|
||
|
description: "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."
|
||
|
# linkTitle:
|
||
|
date: 2022-09-14T03:09:19+07:00
|
||
|
lastmod:
|
||
|
draft: false
|
||
|
noindex: false
|
||
|
# comments: false
|
||
|
nav_weight: 1000
|
||
|
# nav_icon:
|
||
|
# vendor: bootstrap
|
||
|
# name: toggles
|
||
|
# color: '#e24d0e'
|
||
|
series:
|
||
|
# - Tutorial
|
||
|
categories:
|
||
|
- Self-Hosted
|
||
|
- SysAdmin
|
||
|
tags:
|
||
|
- Commento
|
||
|
- PostgreSQL
|
||
|
- Nginx
|
||
|
images:
|
||
|
# menu:
|
||
|
# main:
|
||
|
# weight: 100
|
||
|
# params:
|
||
|
# icon:
|
||
|
# vendor: bs
|
||
|
# name: book
|
||
|
# color: '#e24d0e'
|
||
|
authors:
|
||
|
- ditatompel
|
||
|
---
|
||
|
|
||
|
**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.
|
||
|
|
||
|
<!--more-->
|
||
|
|
||
|
> **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++](https://github.com/souramoo/commentoplusplus) 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 meng*compile* Commento dari *source-code*nya.
|
||
|
|
||
|
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`:
|
||
|
|
||
|
```bash
|
||
|
sudo 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:
|
||
|
```bash
|
||
|
sudo -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` :
|
||
|
|
||
|
```bash
|
||
|
sudo -u postgres createdb commento
|
||
|
```
|
||
|
|
||
|
Perintah diatas akan membuat database baru dengan `commento`.
|
||
|
|
||
|
Opsional: Buat password untuk user postgres:
|
||
|
|
||
|
```bash
|
||
|
sudo -u postgres psql
|
||
|
ALTER USER postgres PASSWORD '[GantiDenganPasswordPilihanAnda]';
|
||
|
```
|
||
|
Jika sukses, Posgres akan merespond dengan output `ALTER ROLE`.
|
||
|
|
||
|
## Install Commento
|
||
|
Cari [Commento rilis terbaru](https://vr4.me/g/OyQAY) dan download arsipnya ke server:
|
||
|
```bash
|
||
|
wget 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`.
|
||
|
```bash
|
||
|
mkdir /opt/commento
|
||
|
tar -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.
|
||
|
```bash
|
||
|
COMMENTO_ORIGIN=https://commento.ditatompel.com
|
||
|
#COMMENTO_CDN_PREFIX=https://commento.ditatompel.com
|
||
|
# Set binding values
|
||
|
COMMENTO_BIND_ADDRESS=127.0.0.1
|
||
|
COMMENTO_PORT=8088
|
||
|
|
||
|
# Set PostgreSQL settings
|
||
|
COMMENTO_POSTGRES=postgres://commento:commentoPassword@127.0.0.1:5432/commento?sslmode=disable
|
||
|
|
||
|
#
|
||
|
# Below configuration is optional
|
||
|
# Uncomment and edit to fit your needs
|
||
|
#
|
||
|
|
||
|
# Prevent registration
|
||
|
#COMMENTO_FORBID_NEW_OWNERS=false # default true
|
||
|
|
||
|
# If set to true, all static content will be served GZipped if the client's browser supports compression. Defaults to false.
|
||
|
#COMMENTO_GZIP_STATIC=true
|
||
|
|
||
|
|
||
|
# Set the SMTP credentials
|
||
|
#COMMENTO_SMTP_HOST=mail.example.com
|
||
|
#COMMENTO_SMTP_PORT=587
|
||
|
#COMMENTO_SMTP_USERNAME=notification@example.com
|
||
|
#COMMENTO_SMTP_PASSWORD=examplePassword
|
||
|
#COMMENTO_SMTP_FROM_ADDRESS=notification@example.com
|
||
|
|
||
|
# Set Google OAuth credentials
|
||
|
#COMMENTO_GOOGLE_KEY=some-random-string-key.apps.googleusercontent.com
|
||
|
#COMMENTO_GOOGLE_SECRET=somerandomsecret
|
||
|
```
|
||
|
|
||
|
Kemudian buat `systemd` *service file* yang berlokasi di `/etc/systemd/system/commento.service`:
|
||
|
```bash
|
||
|
[Unit]
|
||
|
Description=Commento daemon service
|
||
|
After=network.target postgresql.service
|
||
|
|
||
|
[Service]
|
||
|
Type=simple
|
||
|
ExecStart=/opt/commento/commento
|
||
|
Environment=COMMENTO_CONFIG_FILE=/etc/commento/commento.env
|
||
|
|
||
|
[Install]
|
||
|
WantedBy=multi-user.target
|
||
|
```
|
||
|
|
||
|
Reload konfigurasi `systemd` *service files* kemudian jalankan Commento *service*:
|
||
|
```bash
|
||
|
sudo systemctl daemon-reload
|
||
|
sudo systemctl start commento
|
||
|
sudo 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`).
|
||
|
|
||
|
```nginx
|
||
|
server {
|
||
|
listen 80;
|
||
|
server_name commento.ditatompel.com;
|
||
|
root /var/www/default;
|
||
|
# in case you use certbot...
|
||
|
location /.well-known/acme-challenge/ { allow all; }
|
||
|
location / { return 301 https://$host$request_uri; }
|
||
|
}
|
||
|
|
||
|
server {
|
||
|
listen 443 ssl http2;
|
||
|
server_name commento.ditatompel.com;
|
||
|
|
||
|
# Edit to fit with your server environment and path
|
||
|
ssl_certificate /path/to/your/cert/fullchain.pem;
|
||
|
ssl_certificate_key /path/to/your/cert/privkey.pem;
|
||
|
ssl_dhparam /path/to/your/cert/dhparam.pem;
|
||
|
ssl_session_timeout 1d;
|
||
|
ssl_session_cache shared:SSL:10m;
|
||
|
ssl_session_tickets off;
|
||
|
ssl_protocols TLSv1.2 TLSv1.3;
|
||
|
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;
|
||
|
ssl_prefer_server_ciphers off;
|
||
|
|
||
|
root /var/www/default;
|
||
|
|
||
|
location / {
|
||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||
|
proxy_set_header X-Real-IP $remote_addr;
|
||
|
proxy_set_header Host $http_host;
|
||
|
proxy_pass http://127.0.0.1:8088/;
|
||
|
}
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Restart Nginx *service* dan coba akses Commento menggunakan browser Anda.
|
||
|
|
||
|
## Resources
|
||
|
* [https://www.digitalocean.com/community/tutorials/how-to-install-postgresql-on-ubuntu-20-04-quickstart](https://r.vr4.me/QKRFo)
|
||
|
* [https://docs.commento.io/](https://docs.commento.io/)
|