Etherpad là trình soạn thảo trực tuyến mã nguồn mở cung cấp khả năng chỉnh sửa cộng tác theo thời gian thực trên trình duyệt. Nó được viết bằng Node.js và có thể tự lưu trữ để hoạt động với nhiều nền tảng khác nhau như WordPress, Drupal, Odoo, Discourse, Joomla, v.v.
Trong hướng dẫn này, chúng ta sẽ cài đặt Etherpad trên máy chủ Rocky Linux 8, sử dụng cơ sở dữ liệu MariaDB để lưu trữ dữ liệu của mình. Chúng ta cũng sẽ sử dụng Nginx làm proxy ngược cho ứng dụng và cài đặt chứng chỉ SSL bằng Let's Encrypt để bật kết nối HTTPS với phiên bản Etherpad của chúng ta.
Điều này cho biết tường lửa đã hoạt động thành công.
Tường lửa hoạt động với các vùng khác nhau và vùng công khai là vùng mặc định, chúng ta sẽ sử dụng vùng này. Liệt kê tất cả các dịch vụ và cổng đang hoạt động trên tường lửa.
Nó sẽ hiển thị đầu ra sau.
Cho phép các cổng HTTP và HTTPS.
Mở cổng 9001 được Etherpad sử dụng ứng dụng.
Kiểm tra lại trạng thái của tường lửa.
Bạn sẽ thấy đầu ra tương tự.
Tải lại tường lửa để kích hoạt các thay đổi.
Xác minh cài đặt.
Thêm cấu hình ban đầu.
Liệt kê cấu hình bạn vừa thiết lập.
Kho lưu trữ Rocky Linux AppStream đi kèm với MariaDB. Để liệt kê tất cả các phiên bản MariaDB đã cài đặt, hãy chạy lệnh sau.
Phiên bản mặc định được đặt thành 10.3. Tuy nhiên, bạn có thể cài đặt phiên bản mới nhất bằng lệnh sau.
Cài đặt MariaDB.
Kích hoạt và khởi động dịch vụ MariaDB.
Kiểm tra trạng thái của dịch vụ.
Bảo mật máy chủ MariaDB.
Bạn sẽ thấy nhiều lời nhắc khác nhau. Trả lời chúng như sau.
Bây giờ bạn có thể kết nối với máy chủ MariaDB bằng lệnh sau.
Tạo cơ sở dữ liệu mới cho Etherpad.
Tạo người dùng cơ sở dữ liệu mới.
Sử dụng mật khẩu mạnh.
Cấp quyền trên cơ sở dữ liệu cho người dùng.
Thoát khỏi shell MySQL.
Bước đầu tiên là tạo một người dùng etherpad mới bằng lệnh sau.
Lệnh này tạo một người dùng --system, nghĩa là người dùng này không thể đăng nhập và không có mật khẩu. Chúng tôi cũng cung cấp cho người dùng này một thư mục gốc /opt/etherpad, đây là nơi chúng tôi sẽ tải xuống Etherpad. Cờ --create-home tạo thư mục gốc với các quyền chính xác. Cờ --user-group tạo một nhóm có cùng tên với tên người dùng.
Chuyển sang người dùng etherpad để tải xuống và cài đặt ứng dụng.
Chuyển sang thư mục /opt/etherpad.
Sao chép kho lưu trữ Etherpad vào thư mục /opt/etherpad.
Chuyển sang thư mục vừa tải xuống.
Chạy Tập lệnh run.sh của Etherpad để thiết lập và cài đặt các phụ thuộc.
Bạn có thể khởi chạy URL http://yourserverip:9001 trong trình duyệt để khởi chạy Etherpad. Bạn sẽ nhận được màn hình sau.
Có một vấn đề với cài đặt ở trên. Nó yêu cầu bạn phải giữ shell hiện tại mở với Node đang chạy ở phía trước. Để biến nó thành cài đặt liên tục, chúng ta cần chạy Etherpad dưới dạng dịch vụ. Nhấn Ctrl + C trên thiết bị đầu cuối của bạn để dừng Etherpad chạy.
Mở tệp để chỉnh sửa.
Tệp thiết lập được định dạng là JSON. Điều đầu tiên bạn cần cấu hình là các thiết lập cơ sở dữ liệu.
Tìm mã sau và chú thích bằng cách đặt // ở phía trước.
Sau đó, tìm mã sau và thay đổi các giá trị của nó như sau. Đảm bảo xóa /* và */ ở đầu và cuối.
Cuối cùng, cuộn xuống một chút để tìm cài đặt trustProxy và thay đổi giá trị của cài đặt này từ false thành true.
Cài đặt này là cần thiết để Etherpad hoạt động cùng với Nginx.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc sau khi hoàn tất.
Thoát khỏi shell người dùng Etherpad.
Tạo và mở tệp dịch vụ.
Dán mã sau vào đó.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc sau khi hoàn tất.
Tải lại dịch vụ daemon để kéo cấu hình mới vào.
Kích hoạt Bắt đầu dịch vụ Etherpad.
Kiểm tra trạng thái của dịch vụ.
Trước tiên, bạn cần tải xuống và cài đặt kho lưu trữ EPEL.
Chạy các lệnh sau để cài đặt Certbot.
Tạo chứng chỉ SSL.
Lệnh trên sẽ tải chứng chỉ xuống thư mục /etc/letsencrypt/live/etherpad.example.com trên máy chủ của bạn.
Tạo chứng chỉ nhóm Diffie-Hellman.
Tạo thư mục webroot thử thách để tự động gia hạn Let's Encrypt.
Tạo Cron Job để gia hạn SSL. Nó sẽ chạy hàng ngày để kiểm tra chứng chỉ và gia hạn nếu cần. Để thực hiện việc đó, trước tiên, hãy tạo tệp /etc/cron.daily/certbot-renew và mở tệp đó để chỉnh sửa.
Dán mã sau.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Thay đổi quyền trên tệp tác vụ để làm cho tệp đó có thể thực thi được.
Tạo và mở tệp /etc/yum.repos.d/nginx.repo để chỉnh sửa.
Dán mã sau vào đó.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc sau khi hoàn tất.
Cài đặt Nginx.
Kích hoạt dịch vụ Nginx.
Tiếp theo, tạo và mở /etc/nginx/conf.d/etherpad.conf để chỉnh sửa.
Dán mã sau vào nó.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc sau khi hoàn tất.
Kiểm tra cú pháp tệp cấu hình Nginx.
Nếu bạn gặp lỗi sau, bạn sẽ cần chỉnh sửa tệp /etc/nginx/nginx.conf để thêm/điều chỉnh kích thước của biến server_names_hash_bucket_size.
Mở tệp /etc/nginx/nginx.conf để chỉnh sửa.
Thêm dòng sau vào trước dòng include /etc/nginx/conf.d/*.conf;.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc. Xác thực Nginx một lần nữa.
Cuối cùng, hãy khởi động dịch vụ Nginx để kích hoạt cấu hình mới.
Khởi chạy URL https://etherpad.example.com trong trình duyệt của bạn và trang chủ Etherpad sẽ mở ra. Bây giờ bạn có thể sử dụng nó để chỉnh sửa tài liệu và mời cộng tác viên.
Chuyển sang thư mục /opt/etherpad/etherpad-lite.
Kéo kho lưu trữ Etherpad mới nhất vào thư mục /opt/etherpad/etherpad-lite.
Chạy tập lệnh run.sh của Etherpad để thiết lập phiên bản Etherpad mới nhất.
Nếu bạn có bất kỳ câu hỏi nào, hãy đăng chúng trong phần bình luận bên dưới.
Trong hướng dẫn này, chúng ta sẽ cài đặt Etherpad trên máy chủ Rocky Linux 8, sử dụng cơ sở dữ liệu MariaDB để lưu trữ dữ liệu của mình. Chúng ta cũng sẽ sử dụng Nginx làm proxy ngược cho ứng dụng và cài đặt chứng chỉ SSL bằng Let's Encrypt để bật kết nối HTTPS với phiên bản Etherpad của chúng ta.
Điều kiện tiên quyết
-
Một hệ thống chạy Rocky Linux 8.
-
Một người dùng không phải root có quyền sudo.
-
Một tên miền trỏ đến máy chủ.
-
Nodejs đã được cài đặt. Làm theo hướng dẫn của chúng tôi về cách cài đặt Nodejs trên máy chủ Rocky Linux 8. Sử dụng bất kỳ phương pháp nào trong hai phương pháp được chỉ định.
-
Đảm bảo mọi thứ đều được cập nhật.
Mã:$ sudo dnf update
Bước 1 - Cấu hình Tường lửa
Rocky Linux sử dụng Tường lửa Firewalld. Kiểm tra trạng thái của tường lửa.
Mã:
$ sudo firewall-cmd --staterunning
Tường lửa hoạt động với các vùng khác nhau và vùng công khai là vùng mặc định, chúng ta sẽ sử dụng vùng này. Liệt kê tất cả các dịch vụ và cổng đang hoạt động trên tường lửa.
Mã:
$ sudo firewall-cmd --permanent --list-services
Mã:
cockpit dhcpv6-client ssh
Mã:
$ sudo firewall-cmd --permanent --add-service=http$ sudo firewall-cmd --permanent --add-service=https
Mã:
$ sudo firewall-cmd --permanent --add-port=9001/tcp
Mã:
$ sudo firewall-cmd --permanent --list-services
Mã:
cockpit dhcpv6-client http https ssh
Mã:
$ sudo firewall-cmd --reload
Bước 2 - Cài đặt Git
Trước khi cài đặt Etherpad, chúng ta cần cài đặt Git. Chạy lệnh sau để cài đặt Git.
Mã:
$ sudo dnf install git
Mã:
$ git --versiongit version 2.27.0
Mã:
$ git config --global user.name "YourName"$ git config --global user.email "[emailprotected]"
Mã:
$ git config --listuser.name=YourName[emailprotected]
Bước 3 - Cài đặt MariaDB
Vì chúng ta sẽ sử dụng cơ sở dữ liệu MariaDB để lưu trữ dữ liệu của Etherpad, nên trước tiên chúng ta cần cài đặt và cấu hình nó.Kho lưu trữ Rocky Linux AppStream đi kèm với MariaDB. Để liệt kê tất cả các phiên bản MariaDB đã cài đặt, hãy chạy lệnh sau.
Mã:
$ sudo dnf module list mariadbKiểm tra thời hạn hết hạn siêu dữ liệu gần nhất: 1:15:26 trước vào Thứ năm, ngày 21 tháng 10 năm 2021, 10:20:01 sáng UTC.Rocky Linux 8 - AppStreamTên Hồ sơ luồng Tóm tắtmariadb 10.3 [d] máy khách, galera, máy chủ [d] Mô-đun MariaDBmariadb 10.5 máy khách, galera, máy chủ [d] Mô-đun MariaDBGợi ý: [d]mặc định, [e]có thể, [x]vô hiệu hóa, [i]cài đặt
Mã:
$ sudo dnf module enable mariadb:10.5
Mã:
$ sudo dnf install mariadb-server
Mã:
$ sudo systemctl enable mariadb --now
Mã:
$ sudo systemctl status mariadb
Mã:
$ sudo mysql_secure_installation
Mã:
Nhập mật khẩu hiện tại cho root (enter nếu không có): Nhấn EnterChuyển sang xác thực unix_socket [Y/n] Nhập yĐổi mật khẩu root? [Y/n] Nhập nXóa người dùng ẩn danh? [Y/n] Nhập yKhông cho phép đăng nhập root từ xa? [Y/n] Nhập yXóa cơ sở dữ liệu thử nghiệm và quyền truy cập vào cơ sở dữ liệu đó? [Y/n] Nhập yTải lại bảng đặc quyền ngay bây giờ? [Y/n] Nhập y
Mã:
$ sudo mysql
Bước 4 - Cấu hình MariaDB
Đăng nhập vào shell MariaDB.
Mã:
$ sudo mysql
Mã:
$ create database `etherpad_lite_db`;
Mã:
$ CREATE USER 'etherpaduser'@'localhost' được xác định bởi 'password';
Cấp quyền trên cơ sở dữ liệu cho người dùng.
Mã:
$ grant CREATE,ALTER,SELECT,INSERT,UPDATE,DELETE on `etherpad_lite_db`.* to ''@'localhost';
Mã:
$ exit
Bước 5 - Tải xuống và cài đặt Etherpad
Để cài đặt Etherpad, chúng ta sẽ tải xuống mã nguồn của nó và xây dựng nó.Bước đầu tiên là tạo một người dùng etherpad mới bằng lệnh sau.
Mã:
$ sudo adduser --system --home /opt/etherpad --create-home --user-group etherpad
Chuyển sang người dùng etherpad để tải xuống và cài đặt ứng dụng.
Mã:
$ sudo -u etherpad bash
Mã:
[etherpad@etherpad user] cd /opt/etherpad
Mã:
[etherpad@etherpad ~]$ git clone --branch master git://github.com/ether/etherpad-lite.git
Mã:
[etherpad@etherpad ~]$ cd etherpad-lite
Mã:
[etherpad@etherpad etherpad-lite]$ src/bin/run.sh
Có một vấn đề với cài đặt ở trên. Nó yêu cầu bạn phải giữ shell hiện tại mở với Node đang chạy ở phía trước. Để biến nó thành cài đặt liên tục, chúng ta cần chạy Etherpad dưới dạng dịch vụ. Nhấn Ctrl + C trên thiết bị đầu cuối của bạn để dừng Etherpad chạy.
Bước 6 - Cấu hình Etherpad
Trước khi tiếp tục, chúng ta cần thiết lập một số cài đặt và cấu hình cài đặt của mình theo nhu cầu. Etherpad lưu trữ các thiết lập của nó trong tệp settings.json trong thư mục cài đặt.Mở tệp để chỉnh sửa.
Mã:
[etherpad@etherpad etherpad-lite]$ nano settings.json
Tìm mã sau và chú thích bằng cách đặt // ở phía trước.
Mã:
// "dbType": "dirty",// "dbSettings": {// "filename": "var/dirty.db"// },
Mã:
"dbType" : "mysql", "dbSettings" : { "user": "etherpaduser", "host": "localhost", "port": 3306, "password": "password", "database": "etherpad_lite_db", "charset": "utf8mb4" },
Mã:
"trustProxy": true,
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc sau khi hoàn tất.
Thoát khỏi shell người dùng Etherpad.
Mã:
[etherpad@etherpad etherpad-lite]$ exit
Bước 7 - Tạo dịch vụ 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ụ.Tạo và mở tệp dịch vụ.
Mã:
$ sudo nano /etc/systemd/system/etherpad.service
Mã:
[Unit]Mô tả=Etherpad, một trình soạn thảo web cộng tác.After=syslog.target network.target[Service]Type=simpleUser=etherpadGroup=etherpadWorkingDirectory=/opt/etherpadEnvironment=NODE_ENV=productionExecStart=/usr/bin/node --experimental-worker /opt/etherpad/etherpad-lite/node_modules/ep_etherpad-lite/node/server.jsRestart=always[Install]WantedBy=multi-user.target
Tải lại dịch vụ daemon để kéo cấu hình mới vào.
Mã:
$ sudo systemctl daemon-reload
Mã:
$ sudo systemctl enable etherpad --now
Mã:
$ sudo systemctl status etherpad? etherpad.service - Etherpad, trình soạn thảo web cộng tác. Đã tải: đã tải (/etc/systemd/system/etherpad.service; đã tắt; cài đặt trước của nhà cung cấp: đã tắt) Đang hoạt động: đang hoạt động (đang chạy) kể từ Thu 2021-10-21 15:06:53 UTC; 6 giây trước PID chính: 47228 (nút) Nhiệm vụ: 13 (giới hạn: 11411) Bộ nhớ: 102,8M CGroup: /system.slice/etherpad.service ??47228 /usr/bin/node --experimental-worker /opt/etherpad/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js.......
Bước 8 - Cài đặt SSL bằng Let's Encrypt
Để cài đặt chứng chỉ SSL bằng Let's Encrypt, chúng ta cần cài đặt công cụ Certbot.Trước tiên, bạn cần tải xuống và cài đặt kho lưu trữ EPEL.
Mã:
$ sudo dnf install epel-release
Mã:
$ sudo dnf install certbot
Mã:
$ sudo certbot certonly --standalone --agree-tos --preferred-challenges http -m [emailprotected] -d example.com
Tạo chứng chỉ nhóm Diffie-Hellman.
Mã:
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Mã:
$ sudo mkdir -p /var/lib/letsencrypt
Mã:
$ sudo nano /etc/cron.daily/certbot-renew
Mã:
#!/bin/shcertbot renew --cert-name etherpad.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Thay đổi quyền trên tệp tác vụ để làm cho tệp đó có thể thực thi được.
Mã:
$ sudo chmod +x /etc/cron.daily/certbot-renew
Bước 9 - Cài đặt và cấu hình Nginx
Rocky Linux đi kèm với phiên bản Nginx cũ hơn. Để cài đặt phiên bản mới nhất, bạn cần thêm kho lưu trữ Nginx.Tạo và mở tệp /etc/yum.repos.d/nginx.repo để chỉnh sửa.
Mã:
$ sudo nano /etc/yum.repos.d/nginx.repo
Mã:
[nginx-stable]name=nginx stable repobaseurl=http://nginx.org/packages/centos/$releasever/$basearch/gpgcheck=1enabled=1gpgkey=https://nginx.org/keys/nginx_signing.keymodule_hotfixes=true[nginx-mainline]name=nginx mainline repobaseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/gpgcheck=1enabled=0gpgkey=https://nginx.org/keys/nginx_signing.keymodule_hotfixes=true
Cài đặt Nginx.
Mã:
$ sudo dnf install nginx
Mã:
$ sudo systemctl enable nginx
Mã:
$ sudo nano /etc/nginx/conf.d/etherpad.conf
Mã:
server { lắng nghe 443 ssl http2; lắng nghe [::]:443 ssl http2; tên_máy_chủ etherpad.example.com; nhật_nhật_truy_cập /var/log/nginx/etherpad.access.log; nhật_nhật_lỗi /var/log/nginx/etherpad.error.log; chứng_chỉ_ssl /etc/letsencrypt/live/etherpad.example.com/fullchain.pem; khóa_chứng_chỉ_ssl /etc/letsencrypt/live/etherpad.example.com/privkey.pem; chứng_chỉ_tin_cậy_ssl /etc/letsencrypt/live/etherpad.example.com/chain.pem; thời gian chờ ssl_session_timeout 5 phút; bộ nhớ đệm ssl_session_cache được chia sẻ:MozSSL:10 phút; # khoảng 40000 phiên ssl_session_tickets tắt; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers bật; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_stapling bật; ssl_stapling_verify bật; ssl_dhparam /etc/ssl/certs/dhparam.pem; location / { viết lại ^/$ / ngắt; viết lại ^/locales/(.*) /locales/$1 ngắt; viết lại ^/locales.json /locales.json ngắt; viết lại ^/admin(.*) /admin/$1 ngắt; viết lại ^/p/(.*) /p/$1 ngắt; viết lại ^/static/(.*) /static/$1 ngắt; viết lại ^/pluginfw/(.*) /pluginfw/$1 ngắt; viết lại ^/javascripts/(.*) /javascripts/$1 ngắt; viết lại ^/socket.io/(.*) /socket.io/$1 break; viết lại ^/ep/(.*) /ep/$1 break; viết lại ^/minified/(.*) /minified/$1 break; viết lại ^/api/(.*) /api/$1 break; viết lại ^/ro/(.*) /ro/$1 break; viết lại ^/error/(.*) /error/$1 break; viết lại ^/jserror(.*) /jserror$1 break; viết lại ^/redirect(.*) /redirect$1 break; viết lại /favicon.ico /favicon.ico break; viết lại /robots.txt /robots.txt break; viết lại /(.*) /p/$1; proxy_pass http://127.0.0.1:9001; proxy_buffering tắt; proxy_set_header Máy chủ $host; proxy_pass_header Máy chủ; # tiêu đề proxy 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; # proxy websocket proxy_set_header Nâng cấp $http_upgrade; proxy_set_header Kết nối $connection_upgrade; }}# chúng ta đang ở trong ngữ cảnh http ở đâymap $http_upgrade $connection_upgrade { nâng cấp mặc định; '' đóng;}# thực thi HTTPSserver { lắng nghe 80; lắng nghe [::]:80; tên máy chủ etherpad.example.com; trả về 301 https://$host$request_uri;}
Kiểm tra cú pháp tệp cấu hình Nginx.
Mã:
$ sudo nginx -tnginx: cú pháp tệp cấu hình /etc/nginx/nginx.conf là oknginx: tệp cấu hình /etc/nginx/nginx.conf đã kiểm tra thành công
Mã:
nginx: [emerg] không thể xây dựng server_names_hash, bạn nên tăng server_names_hash_bucket_size
Mã:
$ sudo nano /etc/nginx/nginx.conf
Mã:
server_names_hash_bucket_size 64;
Cuối cùng, hãy khởi động dịch vụ Nginx để kích hoạt cấu hình mới.
Mã:
$ sudo systemctl start nginx
Cập nhật Etherpad
Cập nhật Etherpad rất dễ dàng. Bước đầu tiên là chuyển sang shell người dùng Etherpad.
Mã:
$ sudo -u etherpad bash
Mã:
[etherpad@etherpad user] cd /opt/etherpad/etherpad-lite
Mã:
[etherpad@etherpad ~]$ git pull origin
Mã:
[etherpad@etherpad etherpad-lite]$ src/bin/run.sh
Kết luận
Trong hướng dẫn này, chúng tôi thiết lập Etherpad Trình chỉnh sửa cộng tác với máy chủ Nginx và được bảo mật bằng chứng chỉ SSL Let's Encrypt. Cài đặt Etherpad của bạn đã sẵn sàng để sử dụng, bạn có thể mở rộng thêm nhiều tính năng bao gồm người dùng đã xác thực, plugin và tùy chỉnh giao diện người dùng.Nếu bạn có bất kỳ câu hỏi nào, hãy đăng chúng trong phần bình luận bên dưới.