Artikel berikut menganggap Anda sudah tidak asing lagi dengan apa itu Etherpad. Jika itu
bukan itu masalahnya, maka artikel wikipedia sudah cukup untuk pengenalan singkat.
Meskipun proyek Etherpad didokumentasikan dengan baik, tidak selalu mudah untuk
masuk akal dari hanya dokumentasi. Artikel ini bertujuan untuk menyingkat beberapa
tutorial yang tersedia di wiki proyek dengan cara yang mudah diikuti.
Kami akan membahas hal berikut:
- Menginstal Etherpad sebagai layanan
- Mengaktifkan TLS dengan sertifikat yang ditandatangani sendiri
- Menggunakan
mysql
basis data - Menggunakan Nginx dengan Etherpad
Menginstal Etherpad
Sampai sekarang, Debian 11 tidak menyediakan etherpad
paket. Jadi, kita harus
instal secara manual dari GitHub. Untungnya, langkah-langkahnya sangat mudah (
#
menunjukkan akar):
- Buat
etherpad
pengguna dan tetapkan keetherpad
kelompok:
# useradd --comment "Etherpad Service User"
--create-home --home-dir /usr/local/etherpad --user-group etherpad
- Unduh dan jalankan skrip penyiapan:
# curl -sL https://deb.nodesource.com/setup_14.x
|bash -
- Instal
nodejs
. Kami juga membutuhkangit
.
# apt install -y nodejs git
- Beralih ke
etherpad
pengguna dan mengkloning repositori proyek.
# su - etherpad
etherpad$ git clone --depth 1 --branch masterhttps://github.com/ether/etherpad-lite.git/usr/local/etherpad/src
- Instal dependensi yang diperlukan:
etherpad$ /usr/local/etherpad/src/bin/installDeps.sh
- Buat file unit systemd di
/etc/systemd/system/
direktori.
/etc/systemd/system/etherpad.service
:
[Unit]
Description=Etherpad Service
After=syslog.target network.target
[Service]
Type=simple
User=etherpad
Group=etherpad
WorkingDirectory=/usr/local/etherpad/src
Environment=NODE_ENV=production
ExecStart=/usr/bin/node --experimental-worker /usr/local/etherpad/src/node_modules/ep_etherpad-lite/node/server.js
[Install]
WantedBy=multi-user.target
- Izinkan firewall, dll. untuk membuka port
9001
.Lalu, akhirnya kita bisa mulai
etherpad
melayani:
# systemctl start etherpad
Kami masih memiliki banyak konfigurasi yang harus dilakukan. Namun, sekarang kita dapat melihat instance etherpad di browser kita.
Mengaktifkan TLS dengan sertifikat yang ditandatangani sendiri
Jika Anda ingin sertifikat Anda ditandatangani oleh Certificate Authority (CA), maka Anda dapat melakukannya. Namun, di sini saya hanya akan menandatangani semuanya sendiri. Saya mengacu pada artikel wiki yang dapat ditemukan di sini.
Buka settings.json
di etherpad
direktori dan temukan bagian ssl
(harus di sekitar baris 174) dan modifikasi sesuai:
"ssl" : {
"key" : "https://1118798822.rsc.cdn77.org/usr/local/etherpad/ssl/epl-server.key",
"cert" : "https://1118798822.rsc.cdn77.org/usr/local/etherpad/ssl/epl-server.crt"
}
Buat direktori /usr/local/etherpad/ssl
sebagai etherpad
pengguna, cd
ke direktori itu dan jalankan perintah berikut.
Hasilkan kunci server yang menyediakan frasa sandi yang diperlukan:
openssl genrsa -des3 -out epl-server.key 4096
Sekarang buat sertifikat:
openssl req -new -key epl-server.key -out epl-server.csr
openssl x509 -req -days 9000 -in epl-server.csr -signkey epl-server.key -out epl-server.crt
Sekarang kita akan menggunakan file itu untuk membuat kunci lain. Dengan begitu, kami tidak perlu memberikan frasa sandi setiap kali server kami dimulai.
Ganti nama kunci:
mv epl-server.key epl-server.key.secure
Kemudian buat kunci kedua kami:
openssl rsa -in epl-server.key.secure -out epl-server.key
Sekarang kita perlu menandatangani sendiri sertifikat kita. Untuk itu kita harus membuat kunci lain yang akan menandatangani
epl-server.key
. Langkah-langkahnya mirip dengan di atas.
openssl genrsa -des3 -out own-ca.key 4096
Buat sertifikat penandatanganan:
openssl req -new -x509 -days 9000 -key own-ca.key -out own-ca.crt
Ini akan meminta kami untuk beberapa informasi. Mereka dapat dibiarkan sebagai default tetapi Nama Umum (CN) harus berbeda dari CN kunci kita sendiri. Jadi kita bisa menambahkan “(CA)” ke CN.
Akhirnya mari kita tandatangani epl-server.key
our dengan sertifikat CA kami.
openssl x509 -req -days 9000 -in epl-server.csr -CA own-ca.crt -CAkey own-ca.key -set_serial 001 -out epl-server.crt
Ini akan menghasilkan epl-server.crt
yang ditandatangani sendiri berkas.
Sekarang pastikan file memiliki izin aman:
chmod 400 epl-server.key
chown etherpad epl-server.key
chmod 400 epl-server.crt
chown etherpad epl-server.crt
File lain dapat dipindahkan ke beberapa tempat yang berbeda atau hanya dihapus. Saya hanya akan meninggalkan mereka apa adanya untuk saat ini. Meskipun demikian, kita dapat memulai ulang etherpad
layanan sekarang dan kami akan mendapatkan https
bekerja meskipun browser akan memberikan peringatan dan bahkan menolak untuk terhubung karena sertifikat kami tidak diberikan informasi yang tepat.
Menggunakan MySQL dengan Etherpad
Sampai sekarang, instance Etherpad kami telah menggunakan dirtyDB
database yang tidak cocok untuk tujuan pengujian/pengembangan saja. Untuk membuat instance kami sepenuhnya cocok untuk produksi, sekarang kami akan beralih ke mysql
. Sekali lagi, semua kredit untuk instruksi instalasi masuk ke wiki proyek. Saya baru saja memutuskan – untuk merangkum semuanya di satu tempat – untuk tidak membuat Anda melompat ke tautan yang berbeda.
Jadi, mari kita instal paket yang diperlukan (saya menggunakan mariadb
tetapi hal-hal pada dasarnya sama):
# apt install -y mariadb-server
Sekarang jalankan mysql_secure_installation
sebagai root yang menyediakan parameter yang diperlukan.
Setelah itu selesai, kita dapat melanjutkan ke setup database:
1. Hubungkan ke mysql dengan perintah berikut:
# mysql -u root -p
2. Setelah masuk, buat database:
CREATE DATABASE `etherpad_lite_db`;
Ya, itu adalah backtick di sekitar nama db. Dan jangan lupa titik koma
3. Buat pengguna database yang menyediakan nama pengguna dan kata sandi Anda sendiri:
CREATE USER '<username>'@'localhost' identified by '<pass>';
4. Ubah izin untuk pengguna baru:
GRANT CREATE,ALTER,SELECT,INSERT,UPDATE,DELETE on `etherpad_lite_db`.* to 'etherpad'@'localhost';
Di sini, etherpad
adalah pengguna yang saya buat sebelumnya.
Basis data kami telah dibuat, jadi kami sekarang dapat exit
dari prompt dan lanjutkan untuk membiarkan etherpad
service mengetahui pencapaian yang telah kami buat yaitu dengan memodifikasi settings.json
berkas.
Cari dbtype
dengan editor teks Anda, itu harus berada di sekitar baris 196 dan mengubahnya sehingga terlihat seperti berikut:
"dbType": "mysql",
"dbSettings": {
"user" : "etherpad",
"port" : "https://1118798822.rsc.cdn77.org/var/run/mysqld/mysqld.sock",
"password": "<pass>",
"database": "etherpad_lite_db",
"charset" : "utf8mb4"
}
Jelas, saya tidak akan mengungkapkan kata sandi di sini. Itu akan berbahaya karena saya menggunakan yang sama untuk semua akun saya (tidak, tidak juga; jangan gunakan kembali kata sandi).
Kami sekarang dapat memulai kembali layanan:
# systemctl restart mysqld etherpad
Menggunakan Nginx dengan Etherpad
Sekarang mari kita konfigurasikan nginx
untuk meneruskan lalu lintas http/s standar ke etherpad
melayani.
Pastikan kita sudah nginx
dipasang:
# apt install nginx
Buat file di /etc/nginx/sites-available/etherpad
dan isinya adalah:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name localhost; # CHANGE THIS!
access_log /var/log/nginx/eplite.access.log;
error_log /var/log/nginx/eplite.error.log;
ssl on;
ssl_certificate /etc/nginx/ssl/epl-server.crt;
ssl_certificate_key /etc/nginx/ssl/epl-server.key;
location / {
proxy_pass https://127.0.0.1:9001;
proxy_buffering off;
proxy_set_header Host $host;
proxy_pass_header Server;
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; # apparently recommended with keepalive connections
# WebSocket proxying - from https://nginx.org/en/docs/http/websocket.html
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
# enforce HTTPS
server {
listen 80;
listen [::]:80;
server_name localhost; # CHANGE THIS!
return 301 https://127.0.0.1:9001/;
}
Sekarang jalankan perintah berikut:
doas mkdir /etc/nginx/ssl
doas cp /usr/local/etherpad/ssl/epl-server.crt /etc/nginx/ssl/
doas cp /usr/local/etherpad/ssl/epl-server.key /etc/nginx/ssl/
Seperti yang Anda lihat, kami hanya menyalin sertifikat dan kunci ssl ke nginx.
Nginx hadir dengan file konfigurasi default yang diaktifkan. Mari kita perbaiki itu.
# rm /etc/nginx/sites-enabled/default
Dan mari kita aktifkan etherpad
our file konfigurasi untuk nginx.
# ln -s /etc/nginx/sites-available/etherpad /etc/nginx/sites-enabled/etherpad
Pastikan Anda tidak membuat kesalahan dalam konfigurasi:
# nginx -t
Sekarang mari kita mulai ulang layanan kita untuk terakhir kalinya:
# systemctl restart etherpad mysqld nginx
Pengaturan kami pada dasarnya selesai. Tentu saja, kami dapat melakukan lebih banyak tetapi saya pikir kami telah melakukan cukup banyak (selain mengubah hal-hal yang jelas seperti fakta bahwa kami telah menyiapkan CA kami sendiri) agar ini dapat digunakan. Saya akan meninggalkan pembaca untuk menjelajah lebih jauh dari
berbagai sumber yang saya tautkan di seluruh artikel. Itu saja untuk saat ini. Terima kasih telah membaca sampai habis. Jangan lupa untuk membaca artikel saya yang lain di unixcop.com.