GNU/Linux >> Belajar Linux >  >> Rocky Linux

Cara Memasang Editor Web Kolaboratif Etherpad di Rocky Linux 8

Etherpad adalah editor online open-source yang menyediakan pengeditan kolaboratif secara real-time di browser. Itu ditulis dalam Node.js dan dapat di-host sendiri untuk bekerja dengan berbagai platform seperti WordPress, Drupal, Odoo, Discourse, Joomla, dll.

Dalam tutorial ini, kita akan menginstal Etherpad di server Rocky Linux 8, menggunakan database MariaDB untuk menyimpan data kita. Kami juga akan menggunakan Nginx sebagai proxy terbalik untuk aplikasi dan menginstal sertifikat SSL menggunakan Let's Encrypt untuk mengaktifkan koneksi HTTPS ke instance Etherpad kami.

Prasyarat

  1. Sistem yang menjalankan Rocky Linux 8.

  2. Pengguna non-root dengan hak istimewa sudo.

  3. Sebuah nama domain menunjuk ke server.

  4. Nodejs diinstal. Ikuti panduan kami tentang menginstal Nodejs di server Rocky Linux 8. Gunakan salah satu dari dua metode yang ditentukan.

  5. Pastikan semuanya diperbarui.

    $ sudo dnf update
    

Langkah 1 - Konfigurasi Firewall

Rocky Linux menggunakan Firewalld Firewall. Periksa status firewall.

$ sudo firewall-cmd --state
running

Ini menunjukkan bahwa itu berhasil dan berjalan dengan sukses.

Firewall bekerja dengan zona yang berbeda dan zona publik adalah yang default, yang akan kita gunakan. Buat daftar semua layanan dan port yang aktif di firewall.

$ sudo firewall-cmd --permanent --list-services

Ini akan menunjukkan output berikut.

cockpit dhcpv6-client ssh

Izinkan port HTTP dan HTTPS.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Buka 9001 port yang digunakan oleh aplikasi Etherpad.

$ sudo firewall-cmd --permanent --add-port=9001/tcp

Periksa kembali status firewall.

$ sudo firewall-cmd --permanent --list-services

Anda akan melihat keluaran serupa.

cockpit dhcpv6-client http https ssh

Muat ulang firewall untuk mengaktifkan perubahan.

$ sudo firewall-cmd --reload

Langkah 2 - Instal Git

Sebelum menginstal Etherpad, kita perlu menginstal Git. Jalankan perintah berikut untuk menginstal Git.

$ sudo dnf install git

Verifikasi penginstalan.

$ git --version
git version 2.27.0

Tambahkan konfigurasi awal.

$ git config --global user.name "YourName"
$ git config --global user.email "[email protected]"

Buat daftar konfigurasi yang baru saja Anda atur.

$ git config --list
user.name=YourName
[email protected]

Langkah 3 - Instal MariaDB

Karena kita akan menggunakan database MariaDB untuk menyimpan data Etherpad, kita perlu menginstal dan mengkonfigurasinya terlebih dahulu.

Repositori Rocky Linux AppStream hadir dengan MariaDB. Untuk membuat daftar semua versi MariaDB yang tersedia, jalankan perintah berikut.

$ sudo dnf module list mariadb
Last metadata expiration check: 1:15:26 ago on Thu 21 Oct 2021 10:20:01 AM UTC.
Rocky Linux 8 - AppStream
Name                          Stream                         Profiles                                         Summary
mariadb                       10.3 [d]                       client, galera, server [d]                       MariaDB Module
mariadb                       10.5                           client, galera, server [d]                       MariaDB Module

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Versi default diatur ke 10.3. Namun Anda dapat menginstal versi terbaru menggunakan perintah berikut.

$ sudo dnf module enable mariadb:10.5

Instal MariaDB.

$ sudo dnf install mariadb-server

Aktifkan dan Mulai layanan MariaDB.

$ sudo systemctl enable mariadb --now

Periksa status layanan.

$ sudo systemctl status mariadb

Amankan server MariaDB.

$ sudo mysql_secure_installation

Anda akan menghadapi berbagai petunjuk. Jawablah sebagai berikut.

Enter current password for root (enter for none): Press Enter
Switch to unix_socket authentication [Y/n] Type y
Change the root password? [Y/n] Type n
Remove anonymous users? [Y/n] Type y
Disallow root login remotely? [Y/n] Type y
Remove test database and access to it? [Y/n] Type y
Reload privilege tables now? [Y/n] Type y

Sekarang Anda dapat terhubung ke server MariaDB menggunakan perintah berikut.

$ sudo mysql 

Langkah 4 - Konfigurasi MariaDB

Masuk ke shell MariaDB.

$ sudo mysql

Buat database baru untuk Etherpad.

$ create database `etherpad_lite_db`;

Buat pengguna basis data baru.

$ CREATE USER 'etherpaduser'@'localhost' identified by 'password';

Gunakan sandi yang kuat.

Berikan izin pada database kepada pengguna.

$ grant CREATE,ALTER,SELECT,INSERT,UPDATE,DELETE on `etherpad_lite_db`.* to '<etherpaduser>'@'localhost';

Keluar dari shell MySQL.

$ exit

Langkah 5 - Unduh dan Instal Etherpad

Untuk menginstal Etherpad, kami akan mengunduh kode sumbernya dan membuatnya.

Langkah pertama adalah membuat etherpad baru pengguna menggunakan perintah berikut.

$ sudo adduser --system --home /opt/etherpad --create-home --user-group etherpad

Perintah ini membuat --system pengguna, yang berarti tidak dapat masuk dan tidak memiliki kata sandi. Kami juga memberikan direktori home /opt/etherpad dimana kita akan mendownload Etherpad. --create-home flag membuat direktori home dengan izin yang benar. --user-group flag membuat grup dengan nama yang sama dengan nama pengguna.

Beralih ke etherpad pengguna untuk mengunduh dan menginstal aplikasi.

$ sudo -u etherpad bash

Beralih ke /opt/etherpad direktori.

[[email protected] user] cd /opt/etherpad

Kloning repositori Etherpad ke /opt/etherpad direktori.

[[email protected] ~]$ git clone --branch master git://github.com/ether/etherpad-lite.git

Beralih ke direktori yang baru diunduh.

[[email protected] ~]$ cd etherpad-lite

Jalankan run.sh Etherpad skrip untuk menyiapkan dan menginstal dependensi.

[[email protected] etherpad-lite]$ src/bin/run.sh

Anda dapat meluncurkan URL http://YOURSERVERIP:9001 di browser untuk meluncurkan Etherpad. Anda akan mendapatkan layar berikut.

Ada masalah dengan instalasi di atas. Ini mengharuskan Anda untuk menjaga shell saat ini tetap terbuka dengan Node yang berjalan di latar depan. Untuk membuatnya menjadi instalasi yang persisten, kita perlu menjalankan Etherpad sebagai layanan. Tekan Ctrl + C di terminal Anda untuk menghentikan Etherpad berjalan.

Langkah 6 - Konfigurasi Etherpad

Sebelum melanjutkan, kita perlu mengatur beberapa pengaturan dan mengkonfigurasi instalasi kita sesuai dengan kebutuhan kita. Etherpad menyimpan pengaturannya di settings.json file di direktori instalasi.

Buka file untuk diedit.

[[email protected] etherpad-lite]$ nano settings.json

File pengaturan diformat sebagai JSON. Hal pertama yang perlu Anda konfigurasikan adalah pengaturan basis data.

Temukan kode berikut dan beri komentar dengan meletakkan // di depannya.

//  "dbType": "dirty",
//  "dbSettings": {
//    "filename": "var/dirty.db"
//  },

Kemudian, temukan kode berikut dan ubah nilainya sebagai berikut. Pastikan untuk menghapus /* dan */ di awal dan di akhir.

  "dbType" : "mysql",
  "dbSettings" : {
    "user":     "etherpaduser",
    "host":     "localhost",
    "port":     3306,
    "password": "password",
    "database": "etherpad_lite_db",
    "charset":  "utf8mb4"
  },

Terakhir, gulir ke bawah sedikit untuk menemukan trustProxy mengatur dan mengubah nilainya dari false untuk true .

  "trustProxy": true,

Pengaturan ini diperlukan untuk membuat Etherpad bekerja bersama dengan Nginx.

Simpan file dengan menekan Ctrl + X dan memasukkan Y ketika diminta setelah selesai.

Keluar dari shell pengguna Etherpad.

[[email protected] etherpad-lite]$ exit

Langkah 7 - Buat Layanan Etherpad

Untuk memulai Etherpad saat boot dan mengelola proses menggunakan systemctl , kita perlu membuat file layanan.

Buat dan buka file layanan.

$ sudo nano /etc/systemd/system/etherpad.service

Tempelkan kode berikut di dalamnya.

[Unit]
Description=Etherpad, a collaborative web editor.
After=syslog.target network.target

[Service]
Type=simple
User=etherpad
Group=etherpad
WorkingDirectory=/opt/etherpad
Environment=NODE_ENV=production
ExecStart=/usr/bin/node --experimental-worker /opt/etherpad/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js
Restart=always

[Install]
WantedBy=multi-user.target

Simpan file dengan menekan Ctrl + X dan memasukkan Y ketika diminta setelah selesai.

Muat ulang daemon layanan untuk memasukkan konfigurasi baru.

$ sudo systemctl daemon-reload

Aktifkan Mulai layanan Etherpad.

$ sudo systemctl enable etherpad --now

Periksa status layanan.

$ sudo systemctl status etherpad
? etherpad.service - Etherpad, a collaborative web editor.
   Loaded: loaded (/etc/systemd/system/etherpad.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2021-10-21 15:06:53 UTC; 6s ago
 Main PID: 47228 (node)
    Tasks: 13 (limit: 11411)
   Memory: 102.8M
   CGroup: /system.slice/etherpad.service
           ??47228 /usr/bin/node --experimental-worker /opt/etherpad/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js
.......

Langkah 8 - Instal SSL menggunakan Let's Encrypt

Untuk menginstal sertifikat SSL menggunakan Let's Encrypt, kita perlu menginstal alat Certbot.

Pertama, Anda perlu mengunduh dan menginstal repositori EPEL.

$ sudo dnf install epel-release

Jalankan perintah berikut untuk menginstal Certbot.

$ sudo dnf install certbot

Buat sertifikat SSL.

$ sudo certbot certonly --standalone --agree-tos --preferred-challenges http -m [email protected] -d example.com

Perintah di atas akan mengunduh sertifikat ke /etc/letsencrypt/live/etherpad.example.com direktori di server Anda.

Buat grup Diffie-Hellman sertifikat.

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Buat direktori webroot tantangan untuk pembaruan otomatis Let's Encrypt.

$ sudo mkdir -p /var/lib/letsencrypt

Buat Pekerjaan Cron untuk memperbarui SSL. Ini akan berjalan setiap hari untuk memeriksa sertifikat dan memperbarui jika diperlukan. Untuk itu, buat dulu file /etc/cron.daily/certbot-renew dan buka untuk diedit.

$ sudo nano /etc/cron.daily/certbot-renew

Tempelkan kode berikut.

#!/bin/sh
certbot renew --cert-name etherpad.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Ubah izin pada file tugas agar dapat dieksekusi.

$ sudo chmod +x /etc/cron.daily/certbot-renew

Langkah 9 - Instal dan Konfigurasi Nginx

Rocky Linux dikirimkan dengan versi Nginx yang lebih lama. Untuk menginstal versi terbaru, Anda perlu menambahkan repositori Nginx.

Buat dan buka file /etc/yum.repos.d/nginx.repo untuk diedit.

$ sudo nano /etc/yum.repos.d/nginx.repo

Tempelkan kode berikut di dalamnya.

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Simpan file dengan menekan Ctrl + X dan memasukkan Y ketika diminta setelah selesai.

Instal Nginx.

$ sudo dnf install nginx

Aktifkan layanan Nginx.

$ sudo systemctl enable nginx

Selanjutnya, buat dan buka /etc/nginx/conf.d/etherpad.conf untuk diedit.

$ sudo nano /etc/nginx/conf.d/etherpad.conf

Tempelkan kode berikut di dalamnya.

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  etherpad.example.com;

    access_log  /var/log/nginx/etherpad.access.log;
    error_log   /var/log/nginx/etherpad.error.log;
    
    ssl_certificate      /etc/letsencrypt/live/etherpad.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/etherpad.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/etherpad.example.com/chain.pem;

    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions
    ssl_session_tickets off;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    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_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    location / {
        rewrite  ^/$ / break;
        rewrite  ^/locales/(.*) /locales/$1 break;
        rewrite  ^/locales.json /locales.json break;
        rewrite  ^/admin(.*) /admin/$1 break;
        rewrite  ^/p/(.*) /p/$1 break;
        rewrite  ^/static/(.*) /static/$1 break;
        rewrite  ^/pluginfw/(.*) /pluginfw/$1 break;
        rewrite  ^/javascripts/(.*) /javascripts/$1 break;
        rewrite  ^/socket.io/(.*) /socket.io/$1 break;
        rewrite  ^/ep/(.*) /ep/$1 break;
        rewrite  ^/minified/(.*) /minified/$1 break;
        rewrite  ^/api/(.*) /api/$1 break;
        rewrite  ^/ro/(.*) /ro/$1 break;
        rewrite  ^/error/(.*) /error/$1 break;
        rewrite  ^/jserror(.*) /jserror$1 break;
        rewrite  ^/redirect(.*) /redirect$1 break;
        rewrite  /favicon.ico /favicon.ico break;
        rewrite  /robots.txt /robots.txt break;
        rewrite  /(.*) /p/$1;
        
        proxy_pass         http://127.0.0.1:9001;
        proxy_buffering    off;
        proxy_set_header   Host $host;
        proxy_pass_header  Server;

        # proxy headers
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $remote_addr;
        proxy_set_header    X-Forwarded-Proto $scheme;
        proxy_http_version  1.1;

        # websocket proxying
        proxy_set_header  Upgrade $http_upgrade;
        proxy_set_header  Connection $connection_upgrade;
    }
}

# we're in the http context here
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

# enforce HTTPS
server {
    listen       80;
    listen       [::]:80;
    server_name  etherpad.example.com;
    return 301   https://$host$request_uri;
}

Simpan file dengan menekan Ctrl + X dan memasukkan Y ketika diminta setelah selesai.

Verifikasi sintaks file konfigurasi Nginx.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Jika Anda mendapatkan kesalahan berikut, Anda perlu mengedit file /etc/nginx/nginx.conf untuk menambah/menyesuaikan ukuran variabel server_names_hash_bucket_size .

nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size

Buka file /etc/nginx/nginx.conf untuk diedit.

$ sudo nano /etc/nginx/nginx.conf

Tambahkan baris berikut sebelum baris include /etc/nginx/conf.d/*.conf; .

server_names_hash_bucket_size  64;

Simpan file dengan menekan Ctrl + X dan memasukkan Y ketika diminta. Validasi Nginx lagi.

Terakhir, mulai layanan Nginx untuk mengaktifkan konfigurasi baru.

$ sudo systemctl start nginx

Luncurkan URL https://etherpad.example.com di browser Anda dan rumah Etherpad akan terbuka. Sekarang Anda dapat menggunakannya untuk mengedit dokumen dan mengundang kolaborator.

Memperbarui Etherpad

Memperbarui Etherpad itu mudah. Langkah pertama adalah beralih ke shell pengguna Etherpad.

$ sudo -u etherpad bash

Beralih ke /opt/etherpad/etherpad-lite direktori.

[[email protected] user] cd /opt/etherpad/etherpad-lite

Tarik repositori Etherpad terbaru ke dalam /opt/etherpad/etherpad-lite direktori.

[[email protected] ~]$ git pull origin

Jalankan run.sh Etherpad skrip untuk menyiapkan versi terbaru Etherpad.

[[email protected] etherpad-lite]$ src/bin/run.sh

Kesimpulan

Dalam tutorial ini, kami menyiapkan Editor Kolaboratif Etherpad dengan server Nginx dan diamankan menggunakan sertifikat SSL Let's Encrypt. Instalasi Etherpad Anda siap digunakan yang dapat Anda kembangkan dengan lebih banyak fitur termasuk pengguna yang diautentikasi, plugin, dan penyesuaian antarmuka pengguna.

Jika Anda memiliki pertanyaan, kirimkan di komentar di bawah.


Rocky Linux
  1. Cara Menginstal phpMyAdmin di Rocky Linux

  2. Cara Menginstal MariaDB 10.6 di Rocky Linux 8

  3. Cara Menginstal MariaDB di Rocky Linux 8

  1. Cara Menginstal GoAccess Web Log Analyzer di Rocky Linux 8

  2. Cara Menginstal Python 3.9 di Rocky Linux 8

  3. Cara Memasang Sistem Tiket OTRS (CE) di Rocky Linux

  1. Cara Instal Rocky Linux 8.4

  2. Cara Menginstal Server MariaDB di Rocky Linux

  3. Cara menginstal Docker CE di Rocky Linux 8