本教程适用于以下操作系统版本
- 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

安装 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 目录中。

安装 MariaDB 服务器
默认情况下,安装的 Etherpad 使用 SQLite 作为数据库。对于大规模部署,你可以将 MariaDB/MySQL 用作 Etherpad 安装的数据库。
运行以下 dnf 命令来安装 MariaDB 服务器。出现提示时,输入 y 确认并按 ENTER。
sudo dnf install mariadb-server

安装 MariaDB 后,运行以下命令来启动并启用 MariaDB 服务。
sudo systemctl start mariadb
sudo systemctl enable mariadb
然后,使用以下命令验证 MariaDB 服务状态。
sudo systemctl status mariadb
如果 MariaDB 服务器正在运行,输出应如下所示:

安装 Nginx Web 服务器
安装 MariaDB 服务器后,你将安装用作 Etherpad 反向代理的 Nginx Web 服务器。因此,在继续之前,请确保你已拥有一个指向服务器 IP 地址的域名,以及通过 Letsencrypt 和 Certbot 生成的 SSL 证书。
运行以下 dnf 命令来安装 Nginx Web 服务器。出现提示时,输入以确认并按 ENTER。
sudo dnf install nginx

现在,运行以下命令来启动并启用 Nginx 服务。
sudo systemctl start nginx
sudo systemctl enable nginx
之后,输入以下命令来验证 Nginx 服务,确保该服务正在运行。
sudo systemctl status nginx
如果 Nginx 服务正在运行,你应该会看到类似以下的输出:

接下来,运行以下命令在服务器上开放 HTTP 和 HTTPS 端口。
sudo firewall-cmd --add-service={http,https} --permanent
sudo firewall-cmd --reload
使用以下命令验证开放的端口和服务列表。你应该会看到 HTTP 和 HTTPS 都已在 firewalld 上启用。
sudo firewall-cmd --list-all

配置 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;

现在,运行以下查询以验证 MariaDB 用户 etherpaduser 的权限。
SHOW GRANTS FOR etherpaduser@localhost;
quit
你会注意到 MariaDB 用户 etherpaduser 拥有访问数据库 etherpad_lite_db 的权限。

输入 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

接下来,将工作目录切换到 /opt/etherpad-lite 目录,并使用以下命令安装 Etherpad 依赖项。
cd /opt/etherpad-lite
sudo su -s /bin/bash -c "./bin/installDeps.sh" 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 安装成功,将显示以下输出:

按 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

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

将 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

之后,打开你的 Web 浏览器并访问 Etherpad 安装所用的域名(即:https://etherpad.howtoforge.local/)。你应该会看到 Etherpad 协同编辑器的默认主页。
现在输入 pad 名称并点击 OK 来创建一个新的 pad。

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

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