Cách cài đặt Etherpad trên Debian 12

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 trình soạn thảo cộng tác Etherpad trên máy chủ Debian 12. Chúng tôi sẽ hướng dẫn bạn cài đặt Etherpad với máy chủ cơ sở dữ liệu MariaDB và máy chủ web Nginx, đồng thời bảo mật Etherpad bằng UFW (Tường lửa đơn giản) và SSL thông qua Certbot và Letsencrypt.

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

Để hoàn tất hướng dẫn này, hãy đảm bảo bạn có những điều sau:
  • Máy chủ Debian 12.
  • Người dùng không phải root có quyền quản trị viên.
  • Tên miền trỏ đến địa chỉ IP máy chủ của bạn.

Cài đặt Dependencies​

Etherpad là phần mềm nguồn mở dành cho trình soạn thảo cộng tác được viết bằng JavaScript. Để cài đặt Etherpad, bạn phải cài đặt JavaScript runtime trên máy chủ Debian của mình.

Trong bước đầu tiên, bạn sẽ cài đặt các phụ thuộc sau cho Etherpad:
  • Node.js 18: một JavaScript runtime để chạy Etherpad, được viết bằng JavaScript.
  • Npm: Trình quản lý gói Node.js.
  • MariaDB Server: là cơ sở dữ liệu cho Etherpad.
  • Nginx web server: là proxy ngược cho Etherpad.
Chúng ta hãy tiếp tục.

Chạy lệnh apt update bên dưới để cập nhật và làm mới gói Debian của bạn index.
Mã:
sudo apt update

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


Sau đó, cài đặt các gói phụ thuộc thông qua lệnh apt install bên dưới. Nhập y để xác nhận và nhấn ENTER để tiếp tục cài đặt.
Mã:
sudo apt install mariadb-server nginx ufw nodejs npm gzip git curl python3 libssl-dev

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


Sau khi cài đặt xong các phần phụ thuộc, hãy xác minh phiên bản Node.js thông qua lệnh nodejs bên dưới. Bạn nên cài đặt Node.18.
Mã:
nodejs --version

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


Sau đó, kiểm tra trạng thái dịch vụ mariadb bằng lệnh systemctl bên dưới. Bạn nên bật dịch vụ mariadb và dịch vụ này sẽ tự động chạy khi hệ thống khởi động, và trạng thái của dịch vụ mariadb đang chạy.
Mã:
sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

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


Cuối cùng, hãy kiểm tra dịch vụ nginx bằng lệnh sau. Đảm bảo rằng dịch vụ nginx đang chạy và được bật. Khi được bật, dịch vụ sẽ tự động khởi động khi hệ thống khởi động.
Mã:
sudo systemctl is-enabled nginx
sudo systemctl status nginx

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

Cấu hình UFW (Tường lửa đơn giản)​

Sau khi cài đặt các phần phụ thuộc, bây giờ bạn sẽ thiết lập UFW (Uncomplicated Firewall) để bảo mật cài đặt Etherpad của bạn. Bạn đã cài đặt UFE trước đó, hãy tiếp tục cấu hình UFW.

Trước tiên, hãy chạy lệnh bên dưới để bật cấu hình OpenSSH và cho phép kết nối SSH. Sau đó, hãy khởi động và bật UFW (Uncomplicated Firewall).
Mã:
sudo ufw allow OpenSSH
sudo ufw enable
Khi được nhắc, hãy nhập y để khởi động và bật UFW. Khi thành công, 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=%22723%22%20height=%22187%22%3E%3C/svg%3E


Tiếp theo, chạy lệnh ufw bên dưới để lấy các cấu hình tường lửa khả dụng và bật cấu hình "Nginx Full" để mở cả cổng HTTP và HTTPS.
Mã:
sudo ufw app list
sudo ufw allow "Nginx Full"
Cuối cùng, tải lại UFW để áp dụng các thay đổi và xác minh các quy tắc và cấu hình đã bật trên UFW.
Mã:
sudo ufw reload
sudo ufw status
Bạn sẽ thấy UFW đang hoạt động với các cấu hình OpenSSHNginx Full được bật.


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

Cấu hình Máy chủ cơ sở dữ liệu MariaDB​

Trong phần sau, bạn sẽ bảo mật máy chủ MariaDB của mình thông qua tiện ích mariadb-secure-installation và tạo cơ sở dữ liệu và người dùng mới cho Etherpad.

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

Thực hiện lệnh máy khách mariadb bên dưới để đăng nhập vào máy chủ MariaDB. Nhập mật khẩu cho người dùng gốc MariaDB của bạn.
Mã:
sudo mariadb -u root -p
Sau khi đăng nhập, hãy chạy các truy vấn sau để tạo cơ sở dữ liệu mới etherpad_lite_db và người dùng etherpaduser. hãy đảm bảo thay đổi mật khẩu StrongPasswordEtherpadDB bằng mật khẩu cơ sở dữ liệu mới của bạn.
Mã:
CREATE DATABASE etherpad_lite_db;
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=%22179%22%3E%3C/svg%3E


Bây giờ hãy xác minh người dùng MariaDB etherpaduser thông qua truy vấn sau để đảm bảo rằng người dùng etherpaduser có thể truy cập cơ sở dữ liệu etherpad_lite_db.
Mã:
SHOW GRANTS FOR etherpaduser@localhost;
Đảm bảo bạn có đầu ra như sau, xác nhận rằng người dùng etherpaduser có thể truy cập 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=%22176%22%3E%3C/svg%3E


Loại quit để thoát khỏi máy chủ MariaDB và hoàn tất bước này.

Tải xuống và cấu hình Etherpad​

Trong phần này, bạn sẽ tải xuống mã nguồn Etherpad và cài đặt các phần phụ thuộc của nó. Sau đó, bạn cũng sẽ cấu hình Etherpad để chỉ chạy trong máy chủ cục bộ và cấu hình Etherpad với máy chủ MariaDB.

Thực hiện lệnh sau để thêm người dùng hệ thống mới etherpad với thư mục gốc mặc định /opt/etherpad-lite.
Mã:
sudo adduser --system --no-create-home --home=/opt/etherpad-lite --group etherpad
Bây giờ hãy tải xuống mã nguồn Etherpad qua git vào thư mục /opt/etherpad-lite và thay đổi quyền sở hữu thư mục /opt/etherpad-lite thành người dùng và nhóm etherpad. Điều này cho phép người dùng etherpad truy cập vào mã nguồn.
Mã:
cd /opt && git clone --branch master https://github.com/ether/etherpad-lite.git 
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=%22224%22%3E%3C/svg%3E


Tiếp theo, di chuyển đến thư mục /opt/etherpad-lite và chạy tập lệnh ./bin/run.sh để chuẩn bị môi trường hệ thống cho việc cài đặt Etherpad. Thao tác này sẽ cài đặt các phụ thuộc cần thiết cho Etherpad và chạy Etherpad với cấu hình mặc định.
Mã:
cd /opt/etherpad-lite
sudo su -s /bin/bash -c "./bin/run.sh" etherpad
Cài đặt các phụ thuộc của Node.js.


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


Sau khi các phụ thuộc được cài đặt, Etherpad sẽ chạy với cấu hình mặc định và bên dưới là kết quả đầu ra mà bạn sẽ thấy lấy.


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


Nhấn Ctrl+c để kết thúc tiến trình Etherpad. Bạn sẽ sửa đổi cấu hình Etherpad settings.json để cấu hình cài đặt của bạn.

Mở tệp settings.json bằng lệnh trình chỉnh sửa nano sau.
Mã:
nano settings.json
Thay đổi tiêu đề mặc định của cài đặt Etherpad của bạn.
Mã:
"title": "Etherpad Debian 12",
Thay đổi ip thành localhost hoặc 127.0.0.1 để chạy Etherpad chỉ trên máy chủ cục bộ.
Mã:
"ip": "127.0.0.1",
 "port": 9001,
Bình luận về phần dbType để vô hiệu hóa cấu hình cơ sở dữ liệu mặc định. Bạn cũng có thể xóa các dòng sau.
Mã:
/*
 *"dbType": "dirty",
 *"dbSettings": {
 * "filename": "var/dirty.db"
 *},
 */
Thêm cấu hình dbType mới với mysql làm cơ sở dữ liệu mặc định cho cài đặt Etherpad của bạn. Hãy đảm bảo thay đổi thông tin chi tiết về tên cơ sở dữ liệu, người dùng và mật khẩu trong cấu hình sau.
Mã:
"dbType" : "mysql",
 "dbSettings" : {
 "user": "etherpaduser",
 "host": "127.0.0.1",
 "port": 3306,
 "password": "StrongPasswordEtherpadDB",
 "database": "etherpad_lite_db",
 "charset": "utf8mb4"
 },
Lưu các thay đổi và đóng trình chỉnh sửa khi hoàn tất.

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

Sau khi cài đặt và cấu hình Etherpad, bạn sẽ tạo một tệp dịch vụ systemd mới cho Etherpad. Điều này cho phép bạn chạy Etherpad ở chế độ nền và quản lý Etherpad dễ dàng thông qua tiện ích systemctl.

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

[Service]
Type=simple
User=etherpad
Group=etherpad
WorkingDirectory=/opt/etherpad-lite
Environment=NODE_ENV=production
ExecStart=/usr/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
Sau khi hoàn tất, hãy lưu tệp và thoát khỏi trình chỉnh sửa.

Tiếp theo, chạy lệnh systemctl sau để tải lại trình quản lý systemd và áp dụng các dịch vụ systemd mới.
Mã:
sudo systemctl daemon-reload
Bây giờ hãy khởi động và kích hoạt dịch vụ etherpad thông qua lệnh systemctl bên dưới. Etherpad sẽ chạy ở chế độ nền như một dịch vụ systemd và sẽ tự động khởi động khi hệ thống khởi động.
Mã:
sudo systemctl start etherpad
sudo systemctl enable etherpad

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


Cuối cùng, hãy xác minh dịch vụ etherpad bằng cách chạy lệnh sau để đảm bảo rằng etherpad đang chạy.
Mã:
sudo systemctl status etherpad
Đầu ra bên dưới xác nhận rằng dịch vụ etherpad đang chạy và đang chạy trên máy chủ cục bộ với cổng 9001.


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


Nhập lệnh ss bên dưới để đảm bảo rằng cổng 9001 là được sử dụng bởi ứng dụng Node.js, đó là Etherpad.
Mã:
ss -tulpn | grep 9001
Tại thời điểm này, Etherpad đã được cài đặt, nhưng để có được hầu hết các tính năng của nó, bạn sẽ thiết lập Nginx làm proxy ngược và bảo mật Etherpad thông qua chứng chỉ SSL/TLS.


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

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

Trong phần này, bạn sẽ tạo một khối máy chủ Nginx mới sẽ được sử dụng làm proxy ngược cho Etherpad. Vì vậy, hãy đảm bảo bạn đã trỏ tên miền đến địa chỉ IP máy chủ Debian của mình trước khi bắt đầu.

Tạo cấu hình khối máy chủ Nginx mới /etc/nginx/sites-available/etherpad.conf bằng lệnh nano.
Mã:
sudo nano /etc/nginx/sites-available/etherpad.conf
Chèn cấu hình sau và đảm bảo thay đổi tên miền bằng tên miền etherpad của bạn.
Mã:
server {
 listen 80;
 server_name etherpad.howtoforge.local;

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

 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à thoát khỏi trình chỉnh sửa khi hoàn tất.

Tiếp theo, chạy lệnh sau để kích hoạt tệp khối máy chủ etherpad.conf và xác minh cấu hình Nginx tổng thể.
Mã:
sudo ln -s /etc/nginx/sites-available/etherpad.conf /etc/nginx/sites-enabled/
sudo nginx -t
Nếu bạn có cấu hình Nginx chính xác và phù hợp, bạn sẽ nhận được đầu ra như syntax is ok - test is thành công.


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


Bây giờ hãy chạy lệnh systemctl sau để khởi động lại Nginx và áp dụng các thay đổi.
Mã:
sudo systemctl restart nginx
Cuối cùng, để đảm bảo cấu hình Nginx của bạn thành công, hãy truy cập tên miền Etherpad của bạn (ví dụ: http://etherpad.howtoforge.local/) bằng trình duyệt web ưa thích của bạn. Nếu thành công, bạn sẽ nhận được màn hình Etherpad.

Bảo mật Etherpad bằng Chứng chỉ SSL/TLS​

Sau khi cấu hình Nginx làm proxy ngược, bây giờ bạn sẽ bảo mật Etherpad bằng chứng chỉ SSL/TLS sẽ được tạo qua Certbot và Letsencrypt. Bạn cũng sẽ cấu hình tự động chuyển hướng từ HTTP sang HTTPS trong Etherpad thông qua plugin Certbot Nginx.

Chạy lệnh apt install bên dưới để cài đặt Cetbot và plugin Cetbot Nginx. Nhập y để xác nhận và nhấn ENTER để tiếp tục cài đặt.
Mã:
sudo apt install certbot python3-certbot-nginx

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


Sau khi Certbot được cài đặt, hãy chạy lệnh certbot bên dưới để tạo SSL/TLS Letsencrypt cho tên miền Etherpad của bạn. Hãy chắc chắn thay đổi tên miền và địa chỉ email trong lệnh sau.
Mã:
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [emailprotected] -d etherpad.howtoforge.local
Sau khi quá trình hoàn tất, các chứng chỉ SSL mới sẽ có trong thư mục /etc/letsencrypt/live/domain.com. Và cấu hình khối máy chủ Nginx cho Etherpad sẽ tự động được cấu hình bằng HTTPS.

Khởi chạy trình duyệt web của bạn và truy cập tên miền Etherpad của bạn (ví dụ: http://etherpad.howtoforge.local/). Bạn sẽ tự động được chuyển hướng đến kết nối HTTPS an toàn, được cấu hình thông qua plugin Certbot Nginx.

Bây giờ hãy nhập tên pad mới để đảm bảo rằng bạn có thể tạo pad hoặc tài liệu mới. Nhấp OK để xác nhận.


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


Sau khi tạo xong pad, hãy tận hưởng tính năng cộng tác Tài liệu tự lưu trữ thông qua Etherpad.


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

Kết luận​

Vậy là xong! Bạn đã hoàn tất cài đặt Etherpad trên máy Debian 12 của mình. Bạn đã cài đặt Etherpad với máy chủ cơ sở dữ liệu MariaDB và máy chủ web Nginx. Bạn cũng đã bảo mật Etherpad của mình bằng chứng chỉ SSL/TLS từ Letsencrypt và UFW (Uncomplicated Firewall).

Từ đây, giờ bạn có thể sử dụng Etherpad như một trình soạn thảo cộng tác với bạn bè. Hoặc bạn cũng có thể cài đặt các plugin/addons Etherpad để tận dụng chức năng phù hợp với nhu cầu của mình.
 
Back
Bên trên