Cách cài đặt Collaborative Real-time Editor Etherpad trên Ubuntu 18.04

theanh

Administrator
Nhân viên
Etherpad là trình soạn thảo cộng tác thời gian thực dựa trên Node.js. Đây là trình soạn thảo cộng tác mã nguồn mở, chạy trên nền tảng web dành cho nhiều người dùng truy cập với khả năng nhập/xuất sang nhiều định dạng tệp Office khác nhau và trình soạn thảo trực tuyến có thể tùy chỉnh cao.

Trong hướng dẫn này, tôi sẽ hướng dẫn bạn từng bước cài đặt và cấu hình Etherpad-lite trên Ubuntu 18.04 Server. Chúng tôi sẽ cài đặt Etherpad-lite với MySQL làm cơ sở dữ liệu, máy chủ web Nginx làm proxy ngược và bật kết nối bảo mật HTTPS trên đó.

Điều kiện tiên quyết​

  • Máy chủ Ubuntu 18.04
  • Quyền root

Chúng ta sẽ làm gì?​

  1. Cài đặt các gói phụ thuộc
  2. Cài đặt Nodejs
  3. Cài đặt và cấu hình MySQL
  4. Tải xuống Etherpad
  5. Cấu hình Etherpad
  6. Thiết lập Etherpad dưới dạng dịch vụ
  7. Thiết lập Nginx làm proxy ngược cho Etherpad
  8. Thiết lập tường lửa UFW
  9. Kiểm tra

Bước 1 - Cài đặt các gói phụ thuộc​

Bước đầu tiên chúng ta sẽ thực hiện trong hướng dẫn này là cài đặt tất cả các gói phụ thuộc cho Nodejs cài đặt.

Chạy lệnh apt bên dưới.
Mã:
sudo apt install gzip git curl python libssl-dev pkg-config gcc g++ make build-essential -y
Chờ tất cả cài đặt.

Bước 2 - Cài đặt Nodejs​

Etherpad yêu cầu Node.js >= 6.9 và trong bước này, chúng ta sẽ cài đặt Nodejs 9.11 có thể được cài đặt từ kho lưu trữ nodesource.

Thêm kho lưu trữ Nodejs nodesource và cài đặt gói Node.js bằng các lệnh bên dưới.
Mã:
curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -
sudo apt install -y nodejs
Sau đó, hãy kiểm tra các lệnh nodejs và npm.
Mã:
nodejs --version
npm --version
Node.js v9.11 đã được cài đặt trên máy chủ Ubuntu 18.04.


Bước 3 - Cài đặt và cấu hình MySQL​

Trong hướng dẫn này, chúng ta sẽ sử dụng MySQL làm cơ sở dữ liệu cho Etherpad.

Cài đặt máy chủ cơ sở dữ liệu MySQL bằng lệnh apt bên dưới.
Mã:
sudo apt install mysql-server mysql-client
Sau khi cài đặt hoàn tất, hãy khởi động dịch vụ mysql và cho phép dịch vụ này khởi chạy mọi lúc khi khởi động hệ thống.
Mã:
sudo systemctl start mysql
sudo systemctl enable mysql
Máy chủ MySQL đã được đã cài đặt.

Tiếp theo, chúng ta sẽ cấu hình mật khẩu gốc mysql và tạo một cơ sở dữ liệu và người dùng mới cho cài đặt etherpad của chúng ta.

Để cấu hình mật khẩu gốc MySQL, hãy chạy lệnh bên dưới.
Mã:
mysql_secure_installation
Nhập mật khẩu gốc mysql mạnh của bạn.

Bây giờ hãy đăng nhập vào shell mysql bằng người dùng gốc.
Mã:
mysql -u root -p
Tạo một cơ sở dữ liệu mới có tên là 'etherpad_db' và người dùng 'hakase', sau đó chạy các truy vấn mysql bên dưới.
Mã:
create database etherpad_db;
cấp tất cả các đặc quyền trên etherpad_db.* cho hakase@localhost được xác định bởi 'Hakase321@#';
xóa các đặc quyền;
Cơ sở dữ liệu MySQL để cài đặt etherpad đã được tạo.


Bước 4 - Tải xuống Etherpad​

Trong bước này, chúng ta sẽ tạo một người dùng mới và tải xuống mã nguồn etherpad.

Tạo một người dùng mới có tên là 'etherpad' và đăng nhập vào người dùng đó.
Mã:
useradd -m -s /bin/bash etherpad
su - etherpad
Bây giờ hãy sao chép kho lưu trữ etherpad.
Mã:
git clone git://github.com/ether/etherpad-lite.git
Đi tới thư mục 'etherpad-lite/' và chạy tập lệnh bash để khởi động etherpad.
Mã:
cd etherpad-lite/
bin/run.sh
Bạn sẽ nhận được kết quả như bên dưới.



Mở trình duyệt web của bạn và nhập địa chỉ IP máy chủ với cổng '9001'.


Và bạn sẽ thấy trang chủ của etherpad.



Quay lại thiết bị đầu cuối của bạn và nhấn 'Ctrl+c' để thoát khỏi ứng dụng.

Bước 5 - Cấu hình Etherpad​

Trong bước này, chúng ta sẽ thực hiện cấu hình cơ bản của trình soạn thảo cộng tác etherpad.

Đăng nhập vào người dùng etherpad và đi đến thư mục 'etherpad-lite'.
Mã:
su - etherpad
cd etherpad-lite/
Chỉnh sửa cấu hình 'settings.json' bằng trình soạn thảo vim.
Mã:
vim settings.json
Thay đổi địa chỉ IP thành '127.0.0.1' hoặc localhost, vì chúng ta sẽ chạy etherpad trên proxy ngược Nginx.
Mã:
"ip": "127.0.0.1",
 "port" : 9001,
Bây giờ hãy vô hiệu hóa cơ sở dữ liệu bẩn mặc định bằng cách thêm chú thích '/* .... */' và dán cấu hình cơ sở dữ liệu MySQL.
Mã:
/*
 "dbType" : "dirty",
 "dbSettings" : {
 "filename" : "var/dirty.db"
 },
 */
Cấu hình cơ sở dữ liệu MySQL.
Mã:
"dbType" : "mysql",
 "dbSettings" : {
 "user" : "hakase",
 "host" : "localhost",
 "port" : 3306,
 "password": "Hakase321@#",
 "database": "etherpad_db",
 "charset" : "utf8mb4"
 },


Tiếp theo, chúng ta sẽ kích hoạt người dùng quản trị bằng cách xóa chú thích khỏi các dòng đó và thay đổi giá trị mật khẩu bằng mật khẩu mới.
Mã:
"users": {
 "admin": {
 // "password" có thể được thay thế bằng "hash" nếu bạn cài đặt ep_hash_auth
 "password": "hakase123@#",
 "is_admin": true
 },
 "user": {
 // "password" có thể được thay thế bằng "hash" nếu bạn cài đặt ep_hash_auth
 "password": "aqwe123@#",
 "is_admin": false
 }
 },


Lưu và thoát.

Cấu hình etherpad cơ bản đã hoàn tất.

Bước 6 - Thiết lập Etherpad dưới dạng dịch vụ​

Bây giờ chúng ta sẽ chạy etherpad dưới dạng dịch vụ systemd trên ubuntu của mình hệ thống.

Đi đến thư mục '/etc/systemd/system' và tạo một tệp dịch vụ mới có tên 'etherpad.service'.
Mã:
cd /etc/systemd/system/
vim etherpad.service
Dán cấu hình bên dưới.
Mã:
[Đơn vị]
Mô tả=Etherpad-lite, trình soạn thảo cộng tác.
After=syslog.target network.target

[Dịch vụ]
Loại=đơn giản
Người dùng=etherpad
Nhóm=etherpad
WorkingDirectory=/home/etherpad/etherpad-lite
Môi trường=NODE_ENV=production
ExecStart=/usr/bin/nodejs /home/etherpad/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js
Khởi động lại=luôn luôn # sử dụng mysql cùng với settings.json đầy đủ để tránh thời gian chờ dịch vụ quá lâu, lập lịch khởi động lại.

[Cài đặt]
WantedBy=multi-user.target
Lưu và thoát.

Tải lại danh sách dịch vụ systemd.
Mã:
sudo systemctl daemon-reload
Khởi động dịch vụ etherpad và cho phép nó khởi chạy mỗi khi khởi động hệ thống.
Mã:
sudo systemctl start etherpad
sudo systemctl enable etherpad
Và ether đang hoạt động như một dịch vụ trên ip máy chủ cục bộ với cổng mặc định là 9001.



Kiểm tra dịch vụ bằng các lệnh bên dưới.
Mã:
sudo systemctl status etherpad
netstat -plntu

Bước 7 - Cài đặt và cấu hình Nginx dưới dạng Reverse proxy​

Trong bước này, chúng ta sẽ cài đặt và cấu hình máy chủ web Nginx làm proxy ngược cho dịch vụ etherpad.

Cài đặt máy chủ web nginx bằng lệnh apt bên dưới.
Mã:
sudo apt install nginx -y
Sau khi cài đặt hoàn tất, hãy vào thư mục '/etc/nginx/sites-available' và tạo máy chủ ảo mới 'etherpad'.
Mã:
cd /etc/nginx/sites-available/
vim etherpad
Dán cấu hình bên dưới.
Mã:
server {
 listen 80;
 server_name pad.hakase.io;
 rewrite ^(.*) https://$server_name$1 permanent;
}

# chúng ta đang ở trong ngữ cảnh http ở đây
map $http_upgrade $connection_upgrade {
 default upgrade;
 '' đóng;
}

máy chủ {
 lắng nghe 443;
 tên máy chủ pad.hakase.io;

 nhật ký truy cập /var/log/nginx/eplite.access.log;
 nhật ký lỗi /var/log/nginx/eplite.error.log;

 ssl bật;
 chứng chỉ ssl /etc/nginx/ssl/fullchain.pem;
 khóa chứng chỉ ssl /etc/nginx/ssl/privkey.pem;

 thời gian chờ ssl_session 5 phút;

 giao thức ssl TLSv1 TLSv1.1 TLSv1.2;
 ssl_prefer_server_ciphers bật;
 mã hóa ssl "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";

 location / {
 proxy_pass http://localhost:9001/;
 proxy_set_header Host $host;
 proxy_pass_header Server;
 # hãy cẩn thận, dòng này không ghi đè bất kỳ proxy_buffering nào được đặt trong conf.d/file.conf
 proxy_buffering off;
 proxy_set_header X-Real-IP $remote_addr; # http://wiki.nginx.org/HttpProxyModule
 proxy_set_header X-Forwarded-For $remote_addr; # Nhật ký EP để hiển thị IP từ xa thực tế
 proxy_set_header X-Forwarded-Proto $scheme; # để EP đặt cờ cookie bảo mật khi sử dụng https
 proxy_set_header Host $host; # truyền tiêu đề máy chủ 
 proxy_http_version 1.1; # khuyến nghị với kết nối keepalive 
 # Proxy WebSocket - từ http://nginx.org/en/docs/http/websocket.html
 proxy_set_header Nâng cấp $http_upgrade;
 proxy_set_header Kết nối $connection_upgrade;

 }
}
Lưu và thoát.

Lưu ý:
  • Đảm bảo bạn thay đổi đường dẫn của SSL bằng chứng chỉ ssl của riêng bạn.
  • Thay đổi tên miền etherpad 'pad.hakase.io' bằng tên miền của riêng bạn.
Bây giờ hãy kích hoạt máy chủ ảo etherpad và kiểm tra cấu hình.
Mã:
ln -s /etc/nginx/sites-available/etherpad /etc/nginx/sites-enabled/
nginx -t
Đảm bảo không có lỗi, sau đó khởi động dịch vụ nginx và cho phép nó khởi chạy mọi lúc khi khởi động hệ thống.
Mã:
sudo systemctl restart nginx
sudo systemctl enable nginx


Quá trình cài đặt và cấu hình Nginx dưới dạng proxy ngược etherpad đã hoàn tất thành công.

Bước 8 - Thiết lập UFW Tường lửa​

Đối với thiết lập tường lửa, chúng ta chỉ muốn mở các dịch vụ cổng SSH, HTTP và HTTPS.

Chạy các lệnh ufw bên dưới.
Mã:
sudo fuw allow ssh
sudo ufw allow http
sudo ufw allow https
Sau đó, bật tường lửa ufw.
Mã:
sudo ufw enable
Và cấu hình tường lửa ufw đã hoàn tất.

Bước 9 - Kiểm tra​

Mở trình duyệt web của bạn và nhập tên miền etherpad, của tôi là:
Bây giờ bạn sẽ được chuyển hướng đến kết nối bảo mật HTTS.



Tạo một pad mới bằng cách nhập tên pad vào hộp và nhấp vào nút 'OK'.

Và bạn sẽ nhận được trình chỉnh sửa Etherpad như bên dưới.



Tiếp theo, mở URL quản trị etherpad. Của tôi là
Bạn sẽ được hỏi tên người dùng và mật khẩu quản trị. Nhập tên người dùng và mật khẩu của riêng bạn, sau đó nhấp vào nút Đăng nhập.



Và bạn sẽ nhận được trang quản trị Etherpad mặc định bên dưới.

- Etherpad settings.json Configuration



- Etherpad Plugin Manager



Quá trình cài đặt Etherpad với MySQL và proxy ngược Nginx trên Ubuntu 18.04 đã hoàn tất thành công.

Tham khảo​

 
Back
Bên trên