mirror of
https://github.com/ditatompel/insights.git
synced 2025-01-08 03:12:06 +07:00
Adding old content "How to Install self-hosted Commento and Use Nginx as Reverse Proxy indonesian" #1
This commit is contained in:
parent
626cd0fec4
commit
e60d32a269
3 changed files with 222 additions and 2 deletions
|
@ -0,0 +1,220 @@
|
|||
---
|
||||
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/)
|
File diff suppressed because one or more lines are too long
|
@ -1 +1 @@
|
|||
{"Target":"css/hb.b21f5a5ec8ad0e4cd8c11a912d5213d26363b1ef936f1e4e56984ed185c9dfa4.css","MediaType":"text/css","Data":{"Integrity":"sha256-sh9aXsitDkzYwRqRLVIT0mNjse+Tbx5OVphO0YXJ36Q="}}
|
||||
{"Target":"css/hb.d9424a41c344b3eed4adcd059a51a0dcbb198548e84b32b3654656e2d64f27d2.css","MediaType":"text/css","Data":{"Integrity":"sha256-2UJKQcNEs+7Urc0FmlGg3LsZhUjoSzKzZUZW4tZPJ9I="}}
|
Loading…
Reference in a new issue