本教程适用于以下操作系统版本

  • AlmaLinux 9
  • AlmaLinux 8

本页目录

  • 先决条件
  • 安装依赖项 安装开发工具(Development Tools) 安装 Node.js 和 NPM 安装 MariaDB 服务器 安装 Nginx Web 服务器
  • 配置 MariaDB 服务器
  • 下载并安装 Etherpad
  • 将 Etherpad 作为 systemd 服务运行
  • 将 Nginx 配置为反向代理
  • 结论
  • 安装开发工具(Development Tools)
  • 安装 Node.js 和 NPM
  • 安装 MariaDB 服务器
  • 安装 Nginx Web 服务器

Etherpad 是 Google Docs 和 Zoho Writer 等服务的免费开源替代品。Etherpad 是面向团队的协同实时文本编辑器,由于它是基于 Web 的文本编辑器,因此随时随地都可访问。

Etherpad 上的任何改动都是实时发生的,并且 Etherpad 支持版本控制和面向团队的内置格式设置功能。Etherpad 是一款高度可定制的编辑器,提供多种插件支持,同时还支持 doc、pdf、odt、markdown 等现代文档格式。

本教程将向你展示如何在 AlmaLinux 9 服务器上安装 Etherpad,并搭配 MariaDB 数据库服务器与 Nginx Web 服务器。你还将通过 SSL 证书保护 Etherpad,以实现安全访问。

先决条件

完成本教程前,请确保你具备以下条件:

  • 一台 AlmaLinux 9 服务器 —— 本演示使用主机名为 almalinux9 的 AlmaLinux。
  • 一个具有 sudo 权限的非 root 用户。
  • 一个指向服务器 IP 地址的域名。
  • 通过 Letsecnrypt 和 Certbot 生成的 SSL 证书。

安装依赖项

在安装 Etherpad 之前,你必须安装 Etherpad 所需的一些依赖项,包括:

  • 开发工具(Development Tools)
  • Node.js 和 NPM(Node Package Manager,Node 包管理器)
  • MariaDB 数据库服务器
  • Nginx Web 服务器

完成以下步骤以安装 Etherpad 依赖项。

安装开发工具(Development Tools)

首先,你必须在 AlmaLinux 服务器上安装 " Development Tools "。输入以下 dnf 命令来安装 " Development Tools ",输入 y,然后按 ENTER 继续。

sudo dnf group install "Development Tools"

接下来,运行以下命令以安装一些额外的依赖项。出现提示时,输入 y 确认并按 ENTER。

sudo dnf install gzip git curl python3-devel openssl-devel pkg-config

在 AlmaLinux 9 系统上安装部署 Etherpad 协同编辑平台

安装 Node.js 和 NPM

Etherpad 是一款主要使用 Node.js 编写的基于 Web 的协同实时编辑器。要安装它,你必须安装 Node.js JavaScript 运行时和 NPM(Node Package Manager)。

在撰写本文时,Etherpad 至少需要 Node.js v16,该版本在 AlmaLinux appstream 仓库中默认可用,你可以通过 DNF 安装它。

运行以下 dnf 命令来安装 Node.js 和 NPM。输入 y 确认安装并按 ENTER。

sudo dnf install nodejs npm

安装 Node.js 后,运行以下命令将 /usr/local/bin 目录添加到 PATH 环境变量中。这将确保通过 NPM 安装的一些二进制文件可以在服务器上运行。

echo "export PATH=$PATH:/usr/local/bin" >> ~/.bashrc
source ~/.bashrc

接下来,运行以下命令来定位 Node.js 和 NPM 的两个二进制文件。

which node
which npm

然后,使用以下命令验证 Node.js 和 NPM 的版本。

node --version
npm --version

显示的输出确认已安装 Node.js v16 和 NPM 8.x,且两个二进制文件都位于 /bin 目录中。

在 AlmaLinux 9 系统上安装部署 Etherpad 协同编辑平台

安装 MariaDB 服务器

默认情况下,安装的 Etherpad 使用 SQLite 作为数据库。对于大规模部署,你可以将 MariaDB/MySQL 用作 Etherpad 安装的数据库。

运行以下 dnf 命令来安装 MariaDB 服务器。出现提示时,输入 y 确认并按 ENTER。

sudo dnf install mariadb-server

在 AlmaLinux 9 系统上安装部署 Etherpad 协同编辑平台

安装 MariaDB 后,运行以下命令来启动并启用 MariaDB 服务。

sudo systemctl start mariadb
sudo systemctl enable mariadb

然后,使用以下命令验证 MariaDB 服务状态。

sudo systemctl status mariadb

如果 MariaDB 服务器正在运行,输出应如下所示:

在 AlmaLinux 9 系统上安装部署 Etherpad 协同编辑平台

安装 Nginx Web 服务器

安装 MariaDB 服务器后,你将安装用作 Etherpad 反向代理的 Nginx Web 服务器。因此,在继续之前,请确保你已拥有一个指向服务器 IP 地址的域名,以及通过 Letsencrypt 和 Certbot 生成的 SSL 证书。

运行以下 dnf 命令来安装 Nginx Web 服务器。出现提示时,输入以确认并按 ENTER。

sudo dnf install nginx

在 AlmaLinux 9 系统上安装部署 Etherpad 协同编辑平台

现在,运行以下命令来启动并启用 Nginx 服务。

sudo systemctl start nginx
sudo systemctl enable nginx

之后,输入以下命令来验证 Nginx 服务,确保该服务正在运行。

sudo systemctl status nginx

如果 Nginx 服务正在运行,你应该会看到类似以下的输出:

在 AlmaLinux 9 系统上安装部署 Etherpad 协同编辑平台

接下来,运行以下命令在服务器上开放 HTTP 和 HTTPS 端口。

sudo firewall-cmd --add-service={http,https} --permanent
sudo firewall-cmd --reload

使用以下命令验证开放的端口和服务列表。你应该会看到 HTTP 和 HTTPS 都已在 firewalld 上启用。

sudo firewall-cmd --list-all

在 AlmaLinux 9 系统上安装部署 Etherpad 协同编辑平台

配置 MariaDB 服务器

在本节中,你将使用 mariadb-secure-installation 工具加固 MariaDB 服务器,然后创建一个供 Etherpad 使用的新数据库和用户。

运行以下命令开始加固 MariaDB 服务器。

sudo mariadb-secure-installation

命令执行后,系统将询问你以下配置:

  • 将 MariaDB root 用户的认证方式更改为 unix_socket。输入 n 表示否。设置 MariaDB root 密码。输入 y 确认,并输入新的 MariaDB root 密码并重复。禁用 MariaDB root 用户的远程登录。输入 y 确认。从 MariaDB 中删除默认的 test 数据库。输入 y 确认。从 MariaDB 中删除匿名用户。输入 y 确认。最后,再次输入 y 以重新加载表权限使更改生效。

在 MariaDB 服务器加固完成后,接下来你将创建一个新的 MariaDB 数据库和用户。

使用以下 mariadb 命令登录 MariaDB 服务器。

sudo mariadb -u root -p

运行以下查询,为 Etherpad 创建一个新的 MariaDB 数据库和用户。在本示例中,你将创建一个新数据库 etherpad_lite_db,以及用户 etherpaduser,密码为 StrongPasswordEtherpadDB。

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;

在 AlmaLinux 9 系统上安装部署 Etherpad 协同编辑平台

现在,运行以下查询以验证 MariaDB 用户 etherpaduser 的权限。

SHOW GRANTS FOR etherpaduser@localhost;
quit

你会注意到 MariaDB 用户 etherpaduser 拥有访问数据库 etherpad_lite_db 的权限。

在 AlmaLinux 9 系统上安装部署 Etherpad 协同编辑平台

输入 quit 退出 MariaDB。

下载并安装 Etherpad

在本节中,你将通过创建系统用户、下载 Etherpad 源代码、安装 Etherpad 依赖项、将 Etherpad 与 MariaDB 数据库集成,然后通过在命令行中运行它来验证安装,从而开始 Etherpad 的安装。

首先,运行以下命令创建一个新的系统用户和组 ' etherpad '。该用户将用于运行 Etherpad 服务。

sudo groupadd etherpad
sudo adduser -r -M -d /opt/etherpad-lite -g etherpad etherpad

通过 git 将 Etherpad 源代码下载到目标目录 /opt/etherpad-lite。

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

下载 Etherpad 源代码后,运行以下命令将目录 /opt/etherpad-lite 的所有权更改为用户和组 ' etherpad '。

sudo chown -R etherpad:etherpad /opt/etherpad-lite

在 AlmaLinux 9 系统上安装部署 Etherpad 协同编辑平台

接下来,将工作目录切换到 /opt/etherpad-lite 目录,并使用以下命令安装 Etherpad 依赖项。

cd /opt/etherpad-lite
sudo su -s /bin/bash -c "./bin/installDeps.sh" etherpad

执行命令后,你应该会看到如下安装过程:

在 AlmaLinux 9 系统上安装部署 Etherpad 协同编辑平台

安装完成后,使用以下 nano 编辑器命令打开 Etherpad 配置文件 settings.json。

nano settings.json

修改你的 Etherpad 安装的标题。

  "title": "Etherpad AlmaLinux 9",

将 Etherpad 运行的默认 IP 地址更改为 localhost 或 127.0.0.1。

  "ip": "127.0.0.1",
  "port": 9001,

删除下面的默认数据库配置。

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

将数据库详情更改为使用 MySQL/MariaDB 服务器,如下所示。并确保修改数据库名称、用户和密码。

  "dbType" : "mysql",
  "dbSettings" : {
    "user":     "etherpaduser",
    "host":     "localhost",
    "port":     3306,
    "password": "StrongPasswordEtherpadDB",
    "database": "etherpad_lite_db",
    "charset":  "utf8mb4"
  },

完成后保存文件并退出编辑器。

接下来,执行以下命令验证并运行 Etherpad。

/bin/node --experimental-worker /opt/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js

如果数据库配置和 Etherpad 安装成功,将显示以下输出:

在 AlmaLinux 9 系统上安装部署 Etherpad 协同编辑平台

按 Ctrl+c 终止该进程。

将 Etherpad 作为 systemd 服务运行

安装 Etherpad 后,你现在将把 Etherpad 设置为 systemd 服务。这样你就可以在后台运行 Etherpad,并通过 systemctl 命令行轻松管理 Etherpad。

首先,使用以下 nano 编辑器命令创建新的 systemd 服务文件 /lib/systemd/system/etherpad.service。

sudo nano /lib/systemd/system/etherpad.service

将以下配置插入到文件中。

[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

完成后保存并关闭文件。

现在,运行以下命令重新加载 systemd 管理器,并将 Etherpad 服务文件应用到你的系统。

sudo systemctl daemon-reload

然后,使用以下命令启动并启用 Etherpad 服务。

sudo systemctl start etherpad
sudo systemctl enable etherpad

使用以下命令验证 Etherpad 服务。如果 Etherpad 服务正在运行,你应该会看到类似 ' active (running) ' 的输出。

sudo systemctl status etherpad

在 AlmaLinux 9 系统上安装部署 Etherpad 协同编辑平台

你也可以使用以下命令验证系统上开放的端口列表。你应该会看到 Etherpad 使用了 9001 端口。

ss -tulpn | grep 9001

在 AlmaLinux 9 系统上安装部署 Etherpad 协同编辑平台

将 Nginx 配置为反向代理

此时,Etherpad 已在 9001 端口上启动并运行。为了让最终用户能够访问,你可以使用 Nginx 作为反向代理。在开始之前,请确保你拥有将用于 Etherpad 的域名,并确认已通过 Letsencrypt 和 Certbot 生成 SSL 证书。

使用以下 nano 编辑器命令创建新的 Nginx 服务器块配置文件 /etc/nginx/conf.d/etherpad.conf。

sudo nano /etc/nginx/conf.d/etherpad.conf

插入以下配置,并确保修改域名详情和 SSL 证书的路径。

# 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;
    }
}

完成后保存文件并关闭编辑器。

现在,运行以下命令以确保配置正确无误。如果成功,你应该会看到类似 " Syntax is ok - test is successful " 的提示。

sudo nginx -t

接下来,输入以下命令重启 Nginx 服务以使更改生效。

sudo systemctl restart nginx

在 AlmaLinux 9 系统上安装部署 Etherpad 协同编辑平台

之后,打开你的 Web 浏览器并访问 Etherpad 安装所用的域名(即:https://etherpad.howtoforge.local/)。你应该会看到 Etherpad 协同编辑器的默认主页。

现在输入 pad 名称并点击 OK 来创建一个新的 pad。

在 AlmaLinux 9 系统上安装部署 Etherpad 协同编辑平台

如下图所示,你现在可以开始使用 Etherpad 作为协同编辑器了。

在 AlmaLinux 9 系统上安装部署 Etherpad 协同编辑平台

结论

恭喜,你已在 AlmaLinux 9 服务器上完成了 Etherpad 与 MariaDB 数据库和 Nginx Web 服务器的安装。此外,你还通过 SSL 证书对 Etherpad 进行了保护。现在你可以开始使用 Etherpad 作为与朋友/群组/团队协同的主要编辑器了。