Cách cài đặt Trình chỉnh sửa web cộng tác Etherpad trên Ubuntu 20.04

Ngày đăng: December 8, 2022

Ubuntu

Giới thiệu

Etherpad là một ứng dụng web cho phép chỉnh sửa văn bản cộng tác trong thời gian thực trong trình duyệt. Nó được viết bằng Node.js và có thể tự lưu trữ trên nhiều nền tảng và hệ điều hành.

Trong hướng dẫn này, chúng ta sẽ cài đặt Etherpad trên máy chủ Ubuntu 20.04, sử dụng công cụ cơ sở dữ liệu SQLite để lưu trữ dữ liệu của chúng ta. Chúng ta cũng sẽ cài đặt và thiết lập cấu hình Nginx để hoạt động như một proxy ngược cho ứng dụng, đồng thời chúng ta sẽ tìm nạp và cài đặt chứng chỉ SSL từ cơ quan cấp chứng chỉ Let's Encrypt để kích hoạt kết nối HTTPS an toàn với phiên bản Etherpad của chúng ta.

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

Trước khi bắt đầu hướng dẫn này, bạn sẽ cần những thứ sau:

  • Máy chủ Ubuntu 20.04, với non-root, sudo-enabled user và bật tường lửa UFW. Vui lòng đọc Thiết lập máy chủ ban đầu với Ubuntu 20.04 của chúng tôi để tìm hiểu thêm về cách thiết lập các yêu cầu này.
  • Đã cài đặt Node.js, phiên bản 14 trở lên. Xem tùy chọn 2 của Cách cài đặt Node.js trên Ubuntu 20.04 để tìm hiểu cách cài đặt phiên bản cập nhật của Node.js bằng các gói NodeSource.
  • Một tên miền trỏ đến địa chỉ IP công cộng của máy chủ của bạn. Ví dụ như example.com hoặc etherpad.example.com.

Khi bạn có các điều kiện tiên quyết, hãy tiếp tục đến Bước 1, nơi chúng ta sẽ tải xuống và thiết lập cấu hình ứng dụng Etherpad.

Bước 1 — Tải xuống và thiết lập cấu hình Etherpad

Để cài đặt Etherpad, bạn cần tải xuống mã nguồn, cài đặt các phần phụ thuộc và thiết lập cấu hình systemd để chạy máy chủ.

Những người bảo trì Etherpad khuyên bạn nên chạy phần mềm với tư cách là user của chính nó, vì vậy bước đầu tiên của bạn sẽ là tạo một etherpad user mới bằng cách sử dụng lệnh adduser:

  1. sudo adduser --system --group --home /opt/etherpad etherpad

Điều này tạo ra một --system user, nghĩa là nó không thể đăng nhập trực tiếp và không được gán mật khẩu hoặc shell. Chúng ta cung cấp cho nó một thư mục chính /opt/etherpad, đây là nơi chúng ta sẽ tải xuống và thiết lập cấu hình phần mềm Etherpad. Chúng ta cũng tạo một nhóm etherpad bằng cờ --group.

Bây giờ bạn cần chạy một vài lệnh với tư cách là etherpad user. Để làm như vậy, bạn sẽ sử dụng lệnh sudo để mở bash shell với tư cách là etherpad user. Sau đó, bạn sẽ thay đổi thư mục (cd) thành /opt/etherpad:

  1. etherpad user

Shell prompt của bạn sẽ cập nhật để cho biết bạn là etherpad user. Nó sẽ trông giống như etherpad@host:~$.

Bây giờ hãy sao chép kho lưu trữ Etherpad vào /opt/etherpad bằng Git:

  1. git clone --branch master https://github.com/ether/etherpad-lite.git .

Thao tác này sẽ kéo master branch của mã nguồn Etherpad vào thư mục hiện tại (.). Khi đã xong, hãy chạy tập lệnh installDeps.sh của Etherpad để cài đặt các phụ thuộc:

  1. ./bin/installDeps.sh

Quá trình này có thể mất một phút. Khi hoàn tất, bạn sẽ cần cài đặt thủ công một phụ thuộc cuối cùng. Chúng ta cần cd vào thư mục Etherpad src và cài đặt gói sqlite3 để sử dụng SQLite làm cơ sở dữ liệu của chúng tôi.

Đầu tiên, thay đổi vào thư mục src:

  1. cd src

Sau đó cài đặt gói sqlite3 bằng npm:

  1. npm install sqlite3

Nhiệm vụ cuối cùng của bạn với tư cách là etherpad user là cập nhật tệp settings.json của Etherpad để sử dụng SQLite cho cơ sở dữ liệu của nó và để hoạt động tốt với Nginx. Di chuyển trở lại thư mục /opt/etherpad:

  1. cd /opt/etherpad

Sau đó mở tệp cài đặt bằng trình soạn thảo văn bản yêu thích của bạn:

  1. nano settings.json

Tệp được định dạng là JSON, nhưng có các nhận xét mở rộng trong suốt quá trình giải thích từng cài đặt. Có rất nhiều thứ bạn có thể thiết lập cấu hình, nhưng hiện tại chúng ta quan tâm đến hai giá trị cập nhật cấu hình cơ sở dữ liệu:

settings.json
"dbType": "dirty",
  "dbSettings": {
    "filename": "var/dirty.db"
  },

Cuộn xuống và tìm phần dbTypedbSettings, được hiển thị ở đây. Cập nhật cài đặt thành sqlite và tên tệp bạn chọn, như sau:

settings.json
"dbType": "sqlite",
  "dbSettings": {
    "filename": "var/sqlite.db"
  },

Cuối cùng, cuộn xuống một số chi tiết, tìm cài đặt trustProxy và cập nhật nó thành true:

settings.json
"trustProxy": true,

Lưu và đóng tệp cài đặt. Trong nano, bạn có thể lưu và đóng bằng cách gõ CTRL+O rồi ENTER để lưu và CTRL+X để thoát.

Khi đã xong, hãy đảm bảo thoát khỏi shell của etherpad user:

  1. exit

Bạn sẽ được đưa trở lại shell người dùng bình thường của mình.

Etherpad đã được cài đặt và cấu hình. Tiếp theo, chúng ta sẽ tạo một dịch vụ systemd để bắt đầu và quản lý quy trình Etherpad.

Bước 2 — Tạo Dịch vụ Systemd cho Etherpad

Để khởi động Etherpad khi khởi động và để quản lý quy trình bằng systemctl, chúng ta cần tạo một tệp dịch vụ systemd. Mở tệp mới trong trình soạn thảo văn bản yêu thích của bạn:

  1. sudo nano /etc/systemd/system/etherpad.service

Chúng ta sẽ tạo một định nghĩa dịch vụ dựa trên thông tin trong wiki tài liệu của Etherpad. Trang How to deploy Etherpad Lite as a service (Cách triển khai Etherpad Lite dưới dạng dịch vụ) đưa ra một cấu hình ví dụ chỉ cần một vài thay đổi để làm cho nó hoạt động với chúng ta.

Thêm nội dung sau vào trình soạn thảo văn bản của bạn, sau đó lưu và đóng tệp:

/etc/systemd/system/etherpad.service
[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/node_modules/ep_etherpad-lite/node/server.js
Restart=always

[Install]
WantedBy=multi-user.target

Tệp này cung cấp cho systemd thông tin cần thiết để chạy Etherpad, bao gồm người dùng và nhóm để chạy nó và lệnh được sử dụng để bắt đầu quá trình (ExecStart=...).

Sau khi đóng tệp, tải lại daemon systemd để lấy cấu hình mới:

  1. sudo systemctl daemon-reload

Tiếp theo, kích hoạt dịch vụ etherpad. Điều này có nghĩa là dịch vụ sẽ khởi động bất cứ khi nào máy chủ của bạn khởi động lại:

  1. sudo systemctl enable etherpad

Và cuối cùng, chúng ta có thể bắt đầu dịch vụ:

  1. sudo systemctl start etherpad

Kiểm tra xem dịch vụ đã bắt đầu đúng cách bằng trạng thái systemctl chưa:

  1. sudo systemctl status etherpad
Output
● etherpad.service - Etherpad, a collaborative web editor. Loaded: loaded (/etc/systemd/system/etherpad.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2021-09-09 14:12:43 UTC; 18min ago Main PID: 698 (node) Tasks: 13 (limit: 1136) Memory: 152.0M CGroup: /system.slice/etherpad.service └─698 /usr/bin/node --experimental-worker /opt/etherpad/node_modules/ep_etherpad-lite/node/server.js

Đầu ra sẽ chỉ ra rằng dịch vụ active (running).

Etherpad hiện đang chạy, nhưng nó không khả dụng cho công chúng vì cổng 9001 bị chặn bởi tường lửa của bạn. Trong bước tiếp theo, chúng ta sẽ công khai Etherpad bằng cách thiết lập Nginx làm proxy ngược trước quy trình Etherpad.

Bước 3 — Cài đặt và cấu hình Nginx

Đặt một máy chủ web chẳng hạn như Nginx trước máy chủ Node.js của bạn có thể cải thiện hiệu suất bằng cách giảm tải bộ nhớ đệm, nén và phân phối tệp tĩnh cho một quy trình hiệu quả hơn. Chúng ta sẽ cài đặt Nginx và thiết lập cấu hình nó thành các yêu cầu proxy tới Etherpad, nghĩa là nó sẽ xử lý các yêu cầu từ người dùng của bạn tới Etherpad và ngược lại.

Trước tiên, hãy làm mới danh sách gói của bạn, sau đó cài đặt Nginx bằng apt:

  1. sudo apt update
  2. sudo apt install nginx

Cho phép lưu lượng truy cập đến các cổng 80443 (HTTP và HTTPS) bằng cách sử dụng cấu hình ứng dụng UFW “Nginx Full”:

  1. sudo ufw allow "Nginx Full"
Output
Rule added Rule added (v6)

Tiếp theo, mở tệp cấu hình Nginx mới trong thư mục /etc/nginx/sites-available. Chúng tôi sẽ gọi tên của chúng tôi là etherpad.conf nhưng bạn có thể sử dụng một tên khác:

  1. sudo nano /etc/nginx/sites-available/etherpad.conf

Dán đoạn mã sau vào tệp cấu hình mới, đảm bảo thay thế your_domain_here bằng miền đang trỏ đến máy chủ Etherpad của bạn. Ví dụ như etherpad.example.com.

/etc/nginx/sites-available/etherpad.conf
server {
    listen       80;
    listen       [::]:80;
    server_name  your_domain_here;

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

    location / {
        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 "upgrade";
    }
}

Cấu hình này dựa trên cấu hình được cung cấp trên Etherpad wiki. Hiện tại, nó chỉ dành cho HTTP vì chúng tôi sẽ để Certbot đảm nhiệm việc thiết lập cấu hình SSL trong bước tiếp theo. Phần còn lại của cấu hình thiết lập các vị trí ghi nhật ký và sau đó chuyển tất cả lưu lượng truy cập đến http://127.0.0.1:9001, phiên bản Etherpad mà chúng tôi đã bắt đầu ở bước trước. Chúng tôi cũng đặt nhiều tiêu đề khác nhau cần thiết để ủy quyền hoạt động tốt và để ổ cắm web (kết nối HTTP liên tục cho phép giao tiếp hai chiều trong thời gian thực) hoạt động thông qua proxy.

Lưu và đóng tệp, sau đó kích hoạt cấu hình bằng cách liên kết nó vào /etc/nginx/sites-enabled/:

  1. sudo ln -s /etc/nginx/sites-available/etherpad.conf /etc/nginx/sites-enabled/

Sử dụng nginx -t để xác minh rằng cú pháp tệp cấu hình là chính xác:

  1. sudo nginx -t
Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

Và cuối cùng, tải lại dịch vụ nginx để nhận cấu hình mới:

  1. sudo systemctl reload nginx

Trang web Etherpad của bạn bây giờ sẽ khả dụng trên HTTP đơn giản và nó sẽ trông giống như sau:

description image

Bây giờ chúng ta đã thiết lập và chạy trang web của mình qua HTTP, đã đến lúc bảo mật kết nối với chứng chỉ Certbot và Let's Encrypt.

Bước 4 — Cài đặt Certbot và Thiết lập Chứng chỉ SSL

Nhờ có Certbot và cơ quan cấp chứng chỉ miễn phí Let's Encrypt, việc thêm mã hóa SSL vào ứng dụng Etherpad của chúng ta sẽ chỉ mất hai lệnh.

Đầu tiên, cài đặt Certbot và plugin Nginx của nó:

  1. sudo apt install certbot python3-certbot-nginx

Tiếp theo, hãy chạy certbot ở chế độ --nginx và chỉ định cùng một miền mà bạn đã sử dụng trong cấu hình Nginx server_name:

  1. sudo certbot --nginx -d your_domain_here

Bạn sẽ được nhắc đồng ý với các điều khoản dịch vụ của Let's Encrypt và nhập địa chỉ email.

Sau đó, bạn sẽ được hỏi có muốn chuyển hướng tất cả lưu lượng HTTP sang HTTPS hay không. Điều đó tùy thuộc vào bạn, nhưng điều này thường được khuyến nghị và an toàn để thực hiện.

Sau đó, Let's Encrypt sẽ xác nhận yêu cầu của bạn và Certbot sẽ tải xuống chứng chỉ của bạn:

Output
Congratulations! You have successfully enabled https://etherpad.example.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=etherpad.example.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/etherpad.example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/etherpad.example.com/privkey.pem Your cert will expire on 2021-12-06. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le

Certbot sẽ tự động tải lại Nginx để nhận cấu hình và chứng chỉ mới. Tải lại trang web của bạn và nó sẽ tự động chuyển bạn sang HTTPS nếu bạn chọn tùy chọn chuyển hướng.

description image

Bạn đã hoàn tất! Hãy dùng thử trình chỉnh sửa Etherpad mới của bạn và mời một số cộng tác viên.

Kết luận

Trong hướng dẫn này, chúng ta thiết lập Etherpad, với chứng chỉ SSL Nginx và Let's Encrypt. Etherpad của bạn hiện đã sẵn sàng để sử dụng, nhưng bạn có thể muốn thực hiện nhiều cấu hình hơn, bao gồm thêm người dùng được xác thực, thêm plugin và tùy chỉnh giao diện người dùng thông qua giao diện.

Phiên bản Etherpad được hỗ trợ bởi SQLite của bạn sẽ có thể xử lý một số lượng người dùng đang hoạt động vừa phải, nhưng nếu bạn dự đoán lưu lượng truy cập rất cao, thì bạn có thể xem xét việc định cấu hình cơ sở dữ liệu MySQL hoặc PostgreSQL để thay thế.

Tất cả các tùy chọn cấu hình này đều được ghi lại trên wiki chính thức của Etherpad.

Tham gia kênh Telegram của CloudFly để nhận thêm ưu đãi và không bỏ lỡ bất kỳ khuyến mãi nào từ CloudFly
Chia sẻ

0 câu trả lời