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
-
Sistem yang menjalankan Rocky Linux 8.
-
Pengguna non-root dengan hak istimewa sudo.
-
Sebuah nama domain menunjuk ke server.
-
Nodejs diinstal. Ikuti panduan kami tentang menginstal Nodejs di server Rocky Linux 8. Gunakan salah satu dari dua metode yang ditentukan.
-
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.