怎样在 Debian 11 上安装 Etherpad

在本教程中,我们将向您展示怎样在 Debian 11 上安装 Etherpad。对于那些不知道的人,Etherpad 是用 Node.js 编写的,并且支持成千上万的同时实时用户。 Etherpad 是一个高度可定制的编辑器,支持各种插件。 并且还支持现代文档格式,例如 doc、pdf 等。

本文假设您至少具备 Linux 的基本知识,知道怎样使用 shell,最重要的是,您将网站托管在自己的 VPS 上。 安装非常简单,假设您在 root 帐户下运行,如果不是,您可能需要添加 ‘sudo‘ 到命令以获取 root 权限。 我将向您展示在 Debian 11 (Bullseye) 上逐步安装 Etherpad。

先决条件

  • 运行以下操作系统之一的服务器:Debian 10 或 Debian 11。
  • 建议您使用全新的操作系统安装以防止任何潜在问题
  • 一种 non-root sudo user或访问 root user. 我们建议充当 non-root sudo user,但是,如果您在充当 root 时不小心,可能会损害您的系统。

在 Debian 11 Bullseye 上安装 Etherpad

第 1 步。在我们安装任何软件之前,重要的是通过运行以下命令确保您的系统是最新的 apt 终端中的命令:

sudo apt update
sudo apt upgrade
sudo apt install gzip git curl python libssl-dev pkg-config gcc g++ make build-essential

步骤 2. 安装 Node.js。

Etherpad 是用 Node.js 编写的,所以它必须安装在您的服务器上:

curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -

接下来,通过运行以下命令从 Nodesource 存储库安装 Node.js 16.x:

sudo apt install nodejs

验证 Node.js 版本:

node --version

步骤 3. 安装 MariaDB。

运行以下命令在您的服务器上安装 MariaDB:

sudo apt install mariadb-server

默认情况下,MariaDB 未加固。 您可以使用 mysql_secure_installation 脚本。 您应该仔细阅读下面的每个步骤,这些步骤将设置 root 密码、删除匿名用户、禁止远程 root 登录,以及删除测试数据库和访问安全 MariaDB:

mysql_secure_installation

像这样配置它:

- Set root password? [Y/n] y
- Remove anonymous users? [Y/n] y
- Disallow root login remotely? [Y/n] y
- Remove test database and access to it? [Y/n] y
- Reload privilege tables now? [Y/n] y

接下来,我们需要登录 MariaDB 控制台并为 Etherpad 创建一个数据库。 运行以下命令:

mysql -u root -p

这将提示您输入密码,因此输入您的 MariaDB 根密码并点击 Enter. 登录到数据库服务器后,您需要为 Etherpad 安装创建一个数据库:

MariaDB [(none)]> CREATE DATABASE etherpad_db;
MariaDB [(none)]> CREATE USER 'etherpad_user'@'localhost' IDENTIFIED BY 'your-strong-password';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON etherpad_db.* to [email protected]'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit

步骤 4. 在 Debian 11 上安装 Etherpad。

默认情况下,Etherpad 在 Debian 11 基础存储库中不可用。 所以,现在我们从官方页面下载最新的稳定版 Etherpad:

sudo adduser --system --no-create-home --home=/opt/etherpad-lite --group etherpad
git clone --branch master https://github.com/ether/etherpad-lite.git

我们将需要更改一些文件夹权限:

sudo chown -R etherpad:etherpad etherpad-lite

接下来,导航到目录’etherpad-lite/‘ 并使用安装程序脚本安装所有 Node.js 依赖项 ‘installDeps.sh‘:

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

步骤 5. 配置 Etherpad。

现在我们编辑 settings.json 文件并定义您的数据库设置:

nano settings.json

注释掉以下几行:

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

更改以下行:

  "dbType" : "mysql",
  "dbSettings" : {
    "user":     "etherpad_user",
    "host":     "localhost",
    "port":     3306,
    "password": "your-strong-password",
    "database": "etherpad_db",
    "charset":  "utf8mb4"
  },

步骤 6. 为 Etherpad 创建 Systemd 服务文件。

现在创建一个 systemd 用于管理 Etherpad 服务的服务文件:

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

添加以下文件:

[Unit]
Description=Etherpad-lite, the collaborative editor.
After=syslog.target network.target

[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

Save 和 close 文件,然后重新加载 systemd 经理应用新的服务文件:

sudo systemctl daemon-reload
sudo systemctl enable --now etherpad
sudo systemctl status etherpad

步骤 7. 为 Etherpad 配置 Nginx 反向代理。

首先,使用以下命令安装 Nginx:

sudo apt install nginx

安装 Nginx 后,使用以下命令启动并启用 Nginx 服务:

sudo systemctl start nginx
sudo systemctl enable nginx

接下来,创建一个 Nginx 虚拟主机配置文件:

sudo nano /etc/nginx/sites-available/etherpad

添加以下文件:

# enforce HTTPS
server {
    listen       80;
    listen       [::]:80;
    server_name  etherpad.example.io;
    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;
    listen       [::]:443 ssl http2;
    server_name  etherpad.your-domain.com;

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

    ssl_certificate      /etc/letsencrypt/live/etherpad.example.io/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/etherpad.example.io/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         https://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;
    }
}

Save 和 close 该文件,然后激活虚拟主机配置:

sudo ln -s /etc/nginx/sites-available/etherpad /etc/nginx/sites-enabled/
nginx -t
sudo systemctl restart nginx

步骤 8. 配置防火墙。

默认情况下,在 Debian 上启用了 UFW 防火墙。 取决于你的 Apache 虚拟主机配置文件,打开端口 80 和 443 以允许 HTTP 和 HTTPS 流量:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload

步骤 9. 访问 Etherpad Web 界面。

成功安装后,打开您的网络浏览器并使用 URL 访问 Matomo https://etherpad.your-domain.com. 您将被重定向到 Matomo 界面页面:

恭喜! 您已成功安装 Etherpad。 感谢您使用本教程在 Debian 11 Bullseye 上安装最新版本的 Etherpad。 如需更多帮助或有用信息,我们建议您查看 Etherpad 官方网站.