Cách cài đặt Etherpad trên AlmaLinux 9

theanh

Administrator
Nhân viên
Etherpad là một giải pháp thay thế miễn phí và mã nguồn mở cho các dịch vụ như Google Docs và Zoho Writer. Etherpad là trình soạn thảo văn bản cộng tác và thời gian thực cho nhóm của bạn, có thể truy cập từ bất kỳ đâu vào bất kỳ lúc nào vì Etherpad là trình soạn thảo văn bản dựa trên web.

Mọi thay đổi trên Etherpad đều diễn ra theo thời gian thực và Etherpad cũng hỗ trợ phiên bản và định dạng tích hợp cho nhóm. Etherpad là trình soạn thảo có khả năng tùy chỉnh cao với sự hỗ trợ của nhiều plugin khác nhau. Và cũng hỗ trợ các định dạng tài liệu hiện đại như doc, pdf, odt, markdown, v.v.

Hướng dẫn này sẽ chỉ cho bạn cách cài đặt Etherpad trên máy chủ AlmaLinux 9 với máy chủ cơ sở dữ liệu MariaDB và máy chủ web Nginx. Bạn cũng sẽ bảo mật Etherpad thông qua chứng chỉ SSL để cho phép truy cập an toàn.

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

Để hoàn thành hướng dẫn này, hãy đảm bảo bạn có những điều sau:
  • Máy chủ AlmaLinux 9 - Bản demo này sử dụng AlmaLinux với tên máy chủ almalinux9.
  • Người dùng không phải root có quyền sudo.
  • Tên miền trỏ đến địa chỉ IP của máy chủ.
  • Chứng chỉ SSL được tạo thông qua Letsecnrypt và Certbot.

Cài đặt các phụ thuộc​

Trước khi cài đặt Etherpad, bạn phải cài đặt một số phụ thuộc cần thiết cho Etherpad, bao gồm:
  • Công cụ phát triển
  • Node.js và NPM (Trình quản lý gói Node)
  • Máy chủ cơ sở dữ liệu MariaDB
  • Máy chủ web Nginx
Hoàn thành các bước sau để cài đặt các phụ thuộc Etherpad.

Cài đặt Công cụ phát triển​

Trước tiên, bạn phải cài đặt "Công cụ phát triển" trên máy chủ AlmaLinux của mình. Nhập lệnh dnf sau để cài đặt "Công cụ phát triển", nhập y và nhấn ENTER để tiếp tục.
Mã:
sudo dnf group install "Development Tools"
Tiếp theo, chạy lệnh sau để cài đặt một số phụ thuộc bổ sung. Khi được nhắc, hãy nhập y để xác nhận và nhấn ENTER.
Mã:
sudo dnf install gzip git curl python3-devel openssl-devel pkg-config

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22472%22%3E%3C/svg%3E

Cài đặt Node.js và NPM​

Etherpad là trình soạn thảo cộng tác và thời gian thực dựa trên web chủ yếu được viết bằng Node.js. Để cài đặt, bạn phải cài đặt Node.js JavaScript runtime và NPM (Node Package Manager).

Tại thời điểm viết bài này, Etherpad yêu cầu ít nhất Node.js v16, có sẵn theo mặc định trên kho lưu trữ appstream AlmaLinux và bạn có thể cài đặt qua DNF.

Chạy lệnh dnf sau để cài đặt Node.js và NPM. Nhập y để xác nhận cài đặt và nhấn ENTER.
Mã:
sudo dnf install nodejs npm
Sau khi Node.js được cài đặt, hãy chạy lệnh sau để thêm thư mục /usr/local/bin vào biến môi trường PATH. Điều này sẽ đảm bảo một số tệp nhị phân được cài đặt qua NPM có thể chạy trên máy chủ.
Mã:
echo "export PATH=$PATH:/usr/local/bin" >> ~/.bashrc
source ~/.bashrc
Tiếp theo, chạy lệnh sau để định vị cả hai tệp nhị phân của Node.js và NPM.
Mã:
which node
which npm
Sau đó, xác minh phiên bản Node.js và NPM bằng lệnh bên dưới.
Mã:
node --version
npm --version
Đầu ra hiển thị xác nhận rằng Node.js v16NPM 8. x đã được cài đặt và cả hai tệp nhị phân đều nằm trong thư mục /bin.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22710%22%20height=%22273%22%3E%3C/svg%3E

Cài đặt MariaDB Server​

Theo mặc định, Etherpad đã cài đặt sử dụng SQLite làm cơ sở dữ liệu. Bạn có thể sử dụng MariaDB/MySQL làm cơ sở dữ liệu cho các triển khai lớn cho cài đặt Etherpad của mình.

Chạy lệnh dnf bên dưới để cài đặt MariaDB Server. Khi được nhắc, hãy nhập y để xác nhận và nhấn ENTER.
Mã:
sudo dnf install mariadb-server

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22515%22%3E%3C/svg%3E


Sau khi MariaDB được cài đặt, hãy chạy lệnh sau để khởi động và kích hoạt MariaDB dịch vụ.
Mã:
sudo systemctl start mariadb
sudo systemctl enable mariadb
Sau đó, xác minh trạng thái dịch vụ MariaDB bằng lệnh bên dưới.
Mã:
sudo systemctl status mariadb
Nếu máy chủ MariaDB đang chạy, đầu ra sẽ được hiển thị như thế này:




Cài đặt Nginx Web Server​

Sau khi cài đặt MariaDB Server, bạn sẽ cài đặt Nginx web server sẽ được sử dụng làm proxy ngược cho Etherpad. Vì vậy, trước khi tiếp tục, hãy đảm bảo rằng bạn có tên miền trỏ đến địa chỉ IP máy chủ và chứng chỉ SSL được tạo qua Letsencrypt và Certbot.

Chạy lệnh dnf bên dưới để cài đặt Nginx web server. Khi được nhắc, hãy nhập để xác nhận và nhấn ENTER.
Mã:
sudo dnf install nginx

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22228%22%3E%3C/svg%3E


Bây giờ, hãy chạy lệnh sau để khởi động và kích hoạt Nginx dịch vụ.
Mã:
sudo systemctl start nginx
sudo systemctl enable nginx
Sau đó, nhập lệnh sau để xác minh dịch vụ Nginx và đảm bảo rằng dịch vụ đang chạy.
Mã:
sudo systemctl status nginx
Nếu dịch vụ Nginx đang chạy, bạn sẽ nhận được kết quả như sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22243%22%3E%3C/svg%3E


Tiếp theo, chạy lệnh sau để mở các cổng HTTP và HTTPS trên máy chủ của bạn.
Mã:
sudo firewall-cmd --add-service={http,https} --permanent
sudo firewall-cmd --reload
Xác minh danh sách các cổng và dịch vụ đang mở bằng lệnh sau. Bạn sẽ thấy cả HTTP và HTTPS đều được bật trên tường lửa.
Mã:
sudo firewall-cmd --list-all

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22351%22%3E%3C/svg%3E

Cấu hình Máy chủ MariaDB​

Trong phần này, bạn sẽ bảo mật máy chủ MariaDB bằng Tiện ích mariadb-secure-installation, sau đó tạo một cơ sở dữ liệu và người dùng mới sẽ được sử dụng cho Etherpad.

Chạy lệnh sau để bắt đầu bảo mật máy chủ MariaDB.
Mã:
sudo mariadb-secure-installation
Sau khi lệnh được thực thi, bạn sẽ được hỏi về các cấu hình sau:
  • Thay đổi phương thức xác thực cho người dùng gốc MariaDB thành unix_socket. Nhập n cho Không.
    Thiết lập mật khẩu gốc MariaDB. Nhập y để xác nhận và nhập mật khẩu gốc MariaDB mới và lặp lại.
    Vô hiệu hóa đăng nhập từ xa cho người dùng gốc MariaDB. Nhập y để xác nhận.
    Xóa kiểm tra cơ sở dữ liệu mặc định khỏi MariaDB. Nhập y để xác nhận.
    Xóa người dùng ẩn danh khỏi MariaDB. Nhập y để xác nhận.
    Cuối cùng, nhập y một lần nữa để tải lại quyền bảng để áp dụng các thay đổi.
Sau khi máy chủ MariaDB được bảo mật, tiếp theo bạn sẽ tạo cơ sở dữ liệu MariaDB và người dùng mới.

Đăng nhập vào máy chủ MariaDB bằng lệnh mariadb bên dưới.
Mã:
sudo mariadb -u root -p
Chạy các truy vấn sau để tạo cơ sở dữ liệu MariaDB và người dùng mới cho Etherpad. Trong ví dụ này, bạn sẽ tạo một cơ sở dữ liệu mới etherpad_lite_db và người dùng etherpaduser với mật khẩu StrongPasswordEtherpadDB.
Mã:
CREATE DATABASE etherpad_lite_db CHARACTER SET utf8mb4;
CREATE USER etherpaduser@localhost IDENTIFIED BY 'StrongPasswordEtherpadDB';
GRANT CREATE,ALTER,SELECT,INSERT,UPDATE,DELETE on etherpad_lite_db.* to etherpaduser@localhost;
FLUSH PRIVILEGES;

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22206%22%3E%3C/svg%3E


Bây giờ, hãy chạy truy vấn sau để xác minh các đặc quyền cho người dùng MariaDB etherpaduser.
Mã:
SHOW GRANTS FOR etherpaduser@localhost;
quit
Bạn sẽ thấy rằng người dùng MariaDB etherpaduser có đặc quyền truy cập vào cơ sở dữ liệu etherpad_lite_db.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22183%22%3E%3C/svg%3E


Gõ quit để thoát khỏi MariaDB.

Tải xuống và cài đặt Etherpad​

Trong phần này, bạn sẽ bắt đầu cài đặt Etherpad bằng cách tạo người dùng hệ thống, tải xuống mã nguồn Etherpad, cài đặt các phụ thuộc cho Etherpad, tích hợp Etherpad với cơ sở dữ liệu MariaDB, sau đó xác minh cài đặt bằng cách chạy nó thông qua dòng lệnh.

Đầu tiên, hãy chạy lệnh sau để tạo người dùng hệ thống và nhóm mới 'etherpad'. Người dùng này sẽ được sử dụng để chạy dịch vụ Etherpad.
Mã:
sudo groupadd etherpad
sudo adduser -r -M -d /opt/etherpad-lite -g etherpad etherpad
Tải xuống mã nguồn Etherpad qua git vào thư mục đích /opt/etherpad-lite.
Mã:
git clone --branch master https://github.com/ether/etherpad-lite.git /opt/etherpad-lite
Sau khi mã nguồn Etherpad được tải xuống, hãy chạy lệnh sau để thay đổi quyền sở hữu thư mục /opt/etherpad-lite thành người dùng và nhóm 'etherpad'.
Mã:
sudo chown -R etherpad:etherpad /opt/etherpad-lite

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22290%22%3E%3C/svg%3E


Tiếp theo, di chuyển thư mục làm việc đến thư mục /opt/etherpad-lite và cài đặt các phụ thuộc Etherpad bằng lệnh bên dưới.
Mã:
cd /opt/etherpad-lite
sudo su -s /bin/bash -c "./bin/installDeps.sh" etherpad
Sau khi thực hiện lệnh, bạn sẽ nhận được quy trình cài đặt như sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22238%22%3E%3C/svg%3E


Khi quá trình cài đặt hoàn tất, hãy mở Etherpad configurationsettings.json bằng lệnh nano editor sau.
Mã:
nano settings.json
Thay đổi tiêu đề cài đặt Etherpad của bạn.
Mã:
"title": "Etherpad AlmaLinux 9",
Thay đổi địa chỉ IP mặc định để Etherpad chạy thành localhost hoặc 127.0.0.1.
Mã:
"ip": "127.0.0.1",
 "port": 9001,
Xóa cấu hình cơ sở dữ liệu mặc định bên dưới.
Mã:
/*
 *"dbType": "dirty",
 *"dbSettings": {
 * "filename": "var/dirty.db"
 *},
 */
Thay đổi chi tiết cơ sở dữ liệu để sử dụng máy chủ MySQL/MariaDB như thế này. Và hãy nhớ thay đổi tên cơ sở dữ liệu, người dùng và mật khẩu.
Mã:
"dbType" : "mysql",
 "dbSettings" : {
 "user": "etherpaduser",
 "host": "localhost",
 "port": 3306,
 "password": "StrongPasswordEtherpadDB",
 "database": "etherpad_lite_db",
 "charset": "utf8mb4"
 },
Lưu tệp và thoát khỏi trình chỉnh sửa khi bạn hoàn tất.

Tiếp theo, thực hiện lệnh sau để xác minh và chạy Etherpad.
Mã:
/bin/node --experimental-worker /opt/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js
Nếu cấu hình cơ sở dữ liệu và cài đặt Etherpad thành công, đầu ra sau sẽ được hiển thị:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22290%22%3E%3C/svg%3E


Nhấn Ctrl+c để kết thúc tiến trình.

Chạy Etherpad dưới dạng Dịch vụ Systemd​

Sau khi cài đặt Etherpad, bây giờ bạn sẽ thiết lập Etherpad dưới dạng dịch vụ systemd. Điều này cho phép bạn chạy Etherpad ở chế độ nền và dễ dàng quản lý Etherpad thông qua dòng lệnh systemctl.

Để bắt đầu, hãy tạo một tệp dịch vụ systemd mới /lib/systemd/system/etherpad.service bằng lệnh trình chỉnh sửa nano sau.
Mã:
sudo nano /lib/systemd/system/etherpad.service
Chèn cấu hình sau vào tệp.
Mã:
[Unit]
Description=Etherpad-lite, the collaborative editor.
After=syslog.target network.target mariadb.service nginx.service

[Service]
Type=simple
User=etherpad
Group=etherpad
WorkingDirectory=/opt/etherpad-lite
Environment=NODE_ENV=production
ExecStart=/bin/node --experimental-worker /opt/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js
# use mysql plus a complete settings.json to avoid Service hold-off time over, scheduling restart.
Restart=always

[Install]
WantedBy=multi-user.target
Lưu và đóng tệp khi bạn hoàn tất.

Bây giờ, hãy chạy lệnh sau để tải lại trình quản lý systemd và áp dụng tệp dịch vụ Etherpad vào hệ thống của bạn.
Mã:
sudo systemctl daemon-reload
Sau đó, hãy khởi động và kích hoạt dịch vụ Etherpad bằng lệnh bên dưới.
Mã:
sudo systemctl start etherpad
sudo systemctl enable etherpad
Xác minh dịch vụ Etherpad bằng lệnh sau. Nếu dịch vụ Etherpad đang chạy, bạn sẽ nhận được kết quả như 'active (running)'.
Mã:
sudo systemctl status etherpad

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22157%22%3E%3C/svg%3E


Bạn cũng có thể xác minh danh sách các cổng mở trên hệ thống của mình bằng lệnh sau. Và bạn sẽ thấy Etherpad sử dụng cổng 9001 đó.
Mã:
ss -tulpn | grep 9001

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2295%22%3E%3C/svg%3E

Cấu hình Nginx làm Proxy ngược​

Lúc này, Etherpad đã hoạt động và chạy trên cổng 9001. Để người dùng cuối có thể truy cập, bạn có thể sử dụng Nginx, sẽ được sử dụng làm proxy ngược. Trước khi bắt đầu, hãy đảm bảo rằng bạn có tên miền sẽ được sử dụng cho Etherpad và đảm bảo rằng bạn đã tạo chứng chỉ SSL thông qua Letsencrypt và Certbot.

Tạo cấu hình khối máy chủ Nginx mới /etc/nginx/conf.d/etherpad.conf bằng lệnh nano editor bên dưới.
Mã:
sudo nano /etc/nginx/conf.d/etherpad.conf
Chèn cấu hình sau và đảm bảo thay đổi thông tin chi tiết về tên miền và đường dẫn của chứng chỉ SSL.
Mã:
# enforce HTTPS
server {
 listen 80;
 server_name etherpad.howtoforge.local;
 return 301 https://$host$request_uri;
}

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

server {
 listen 443 ssl http2;
 server_name etherpad.howtoforge.local;

 access_log /var/log/nginx/eplite.access.log;
 error_log /var/log/nginx/eplite.error.log;

 ssl_certificate /etc/letsencrypt/live/etherpad.howtoforge.local/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/etherpad.howtoforge.local/privkey.pem;

 ssl_session_timeout 5m;

 ssl_protocols TLSv1.2;
 ssl_prefer_server_ciphers on;
 ssl_ciphers "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://127.0.0.1:9001;
 proxy_buffering off; # be careful, this line doesn't override any proxy_buffering on set in a conf.d/file.conf
 proxy_set_header Host $host;
 proxy_pass_header Server;

 # Note you might want to pass these headers etc too.
 proxy_set_header X-Real-IP $remote_addr; # https://nginx.org/en/docs/http/ngx_http_proxy_module.html
 proxy_set_header X-Forwarded-For $remote_addr; # EP logs to show the actual remote IP
 proxy_set_header X-Forwarded-Proto $scheme; # for EP to set secure cookie flag when https is used
 proxy_http_version 1.1; # 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;
 }
}
Lưu tệp và đóng trình soạn thảo khi hoàn tất.

Bây giờ, hãy chạy lệnh sau để đảm bảo rằng bạn có cấu hình chính xác và phù hợp. Nếu thành công, bạn sẽ nhận được thông báo như sau "Cú pháp ổn - thử nghiệm thành công".
Mã:
sudo nginx -t
Tiếp theo, nhập lệnh sau để khởi động lại dịch vụ Nginx và áp dụng các thay đổi.
Mã:
sudo systemctl restart nginx

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22630%22%20height=%22196%22%3E%3C/svg%3E


Sau đó, hãy khởi chạy trình duyệt web của bạn và truy cập tên miền cài đặt Etherpad (ví dụ: https://etherpad.howtoforge.local/). Bạn sẽ thấy trang chủ mặc định của trình soạn thảo cộng tác Etherpad.

Bây giờ hãy tạo một pad mới bằng cách nhập tên pad và nhấp vào OK.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22380%22%3E%3C/svg%3E


Bên dưới, bạn có thể thấy bây giờ hãy bắt đầu sử dụng Etherpad làm trình soạn thảo cộng tác.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22246%22%3E%3C/svg%3E

Kết luận​

Xin chúc mừng, bạn đã hoàn tất cài đặt Etherpad với cơ sở dữ liệu MariaDB và máy chủ web Nginx trên máy chủ AlmaLinux 9. Bạn cũng đã bảo mật Etherpad bằng chứng chỉ SSL. Bây giờ bạn có thể bắt đầu sử dụng Etherpad làm trình soạn thảo cộng tác chính với bạn bè/nhóm/đội của mình.
 
Back
Bên trên