本文最后更新于 2024-01-26,文章内容可能已经过时。

Etherpad在线文档协作编辑工具

TOC

一、前言

Etherpad是一种开源的实时协作编辑器,允许多个用户同时编辑同一文档,并实时显示每个用户的输入内容。Etherpad最初由Etherpad基金会开发,后来被Google收购,现在由Apache软件基金会维护。Etherpad可以用于协作编辑文档、记录会议纪要、编写代码等多种场景。现已开源

image-20230608103410911

  • 共享编辑

  • 可以记录整个协同写作的过程

  • 在线聊天

二、安装部署

  • 环境信息
名称 版本 备注
Centos centos7.9 操作系统
Node.js v14.18.0 Node.js

2.1 安装Node.js 环境

 #下载node-v14.18.0
 [root@sre ~]# wget https://npm.taobao.org/mirrors/node/v14.18.0/node-v14.18.0-linux-x64.tar.xz


#解压并重命名
[root@sre ~]# tar -xf node-v14.18.0-linux-x64.tar.xz -C /usr/local
[root@sre ~]# mv /usr/local/node-v14.18.0-linux-x64 /usr/local/nodejs

#设置环境变量
[root@sre ~]# vim /etc/profile
#在最下面追加几行

#nodejs
export PATH=/usr/local/nodejs/bin:$PATH


#使环境变量生效
[root@sre ~]# source /etc/profile

#通过这个命令进行测试
[root@sre ~]# node -v
v14.18.0

[root@sre ~]# npm -v
6.14.15


#设置淘宝npm加速
[root@sre ~]# npm config set registry https://registry.npm.taobao.org

#通过这个命令进行测试
[root@sre ~]# npm config get registry

2.2 安装Etherpad

#下载最新的包
[root@sre ~]# wget https://github.com/ether/etherpad-lite/archive/1.8.18.zip

#重命名包并查看包内容
[root@sre ~]# mv etherpad-lite-1.8.18/ etherpad-lite

[root@sre ~]# ll etherpad-lite
总用量 156
lrwxrwxrwx 1 root root     7 6月   8 10:43 bin -> src/bin
-rw-r--r-- 1 root root 53690 5月   6 2022 CHANGELOG.md
-rw-r--r-- 1 root root  8922 5月   6 2022 CONTRIBUTING.md
drwxr-xr-x 6 root root   249 5月   6 2022 doc
-rw-r--r-- 1 root root  3412 5月   6 2022 Dockerfile
-rw-r--r-- 1 root root 11353 5月   6 2022 LICENSE
-rw-r--r-- 1 root root   849 5月   6 2022 Makefile
drwxr-xr-x 2 root root    30 5月   6 2022 node_modules
-rw-r--r-- 1 root root 12525 5月   6 2022 README.md
-rw-r--r-- 1 root root   118 5月   6 2022 SECURITY.md
-rw-r--r-- 1 root root 21473 5月   6 2022 settings.json.docker
-rw-r--r-- 1 root root 19295 5月   6 2022 settings.json.template
drwxr-xr-x 8 root root   208 5月   6 2022 src
-rw-r--r-- 1 root root   695 5月   6 2022 start.bat
lrwxrwxrwx 1 root root     9 6月   8 10:43 tests -> src/tests
drwxr-xr-x 2 root root    24 5月   6 2022 var

#安装Etherpad依赖初始化
[root@sre ~]# cd etherpad-lite/bin
[root@sre bin]# ./installDeps.sh 

2.3 修改Etherpad配置文件

  • Etherpad 默认的数据库是SQLite,本次我们修改成mysql,并且提前创建好数据库实列
  • trustProxy = 'true' ,用于指示Etherpad是否应该信任代理服务器发送的X-Forwarded-*标头。用于使用 nginx 的代理到Etherpad
  • 开启Etherpad 后台管理功能,修改默认的用户名密码

2.3.1 修改数据据库类型

#为Etherpad创建一个数据库和用户,用户名/密码: etherpad/etherpad@2023
MariaDB [(none)]> CREATE DATABASE etherpad;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON etherpad.* TO 'etherpad'@'localhost' IDENTIFIED BY 'etherpad@2023';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> \q


#根据模板文件创建新的配置文件
[root@sre ~]# cd /root/etherpad-lite/

[root@sre etherpad-lite]# cp settings.json.template  settings.json


[root@sre etherpad-lite]#  vim settings.json

#修改配置文件
#注释掉dbType": "dirty 几行
/*
  "dbType": "dirty",
  "dbSettings": {
    "filename": "var/dirty.db"
  },
/*

#去掉mysql的注释,配置mysql 用户信息
  "dbType" : "mysql",
  "dbSettings" : {
    "user":     "etherpad",
    "host":     "localhost",
    "port":     3306,
    "password": "etherpad@2023",
    "database": "etherpad",
    "charset":  "utf8mb4"
  },

image-20230608112949917

2.3.2 配置trustProxy = 'true'

用于指示Etherpad是否应该信任代理服务器发送的X-Forwarded-*标头。用于使用 nginx 的代理到Etherpad

[root@sre ~]# cd /root/etherpad-lite/
[root@sre etherpad-lite]#  vim settings.json

  "trustProxy": true,

image-20230608113511279

2.3.3 开启Etherpad 后台管理,修改管理员用户名密码

[root@sre ~]# cd /root/etherpad-lite/
[root@sre etherpad-lite]#  vim settings.json

  "users": { 
    "admin": {
      "password": "etherpad@2023",
      "is_admin": true
    },
  },

image-20230608135416673

2.4 前台运行Etherpad

官方默认的启动脚本 会运行在控制台前台

[root@sre ~]# cd etherpad-lite/bin
[root@sre bin]# ./run.sh --root

image-20230608105027324

  • 端口监听在 0.0.0.0:9001 上 ,关闭控制台 Etherpad服务就会退出了,不推荐前台运行Etherpad

2.5 后台运行Etherpad

编写一个启动脚本,放在后台运行即可

[root@sre ~ ]# cd /root/etherpad-lite

[root@sre etherpad-lite ]# vim start.sh 
nohup /root/etherpad-lite/bin/run.sh --root >> /root/etherpad-lite/output.log 2>&1 &

[root@sre etherpad-lite ]# ./stgart.sh

2.6 访问Etherpad

image-20230608105148029

三、常用插件安装

Etherpad提供丰富的插件库,截至文本时间,已经有超过290款插件。

  • 使用管理界面安装插件
        使用管理界面 `http://ip:port/admin/plugins`, 在线安装
    
插件名称 版本 备注
font_color 0.0.63 支持修改字体颜色
font_size 0.0.63 支持修改字体大小
image_upload 1.0.101 支持上传图片
markdown 0.1.50 支持编辑并导出markdown格式
sticky_attributes 0.1.13 支持添加对属性的支持,以粘贴在插入符号位置IE按下加粗按钮,创建粗体文本。适用于下划线、斜体、粗体
tables4 1.0.5 支持将表格插入到文档中
todo_list 0.1.2 支持将待办事项列表插入到文档中
ether-o-meter 0.0.11 显示指标,比如CPU 磁盘 内存 等等
desktop_notifications 0.1.34 接收聊天桌面通知

3.1 使用管理界面在线安装插件

  • 登录插件管理的后台,输入管理员用户名密码

image-20230608140425995

  • 找到自己需要的插件直接 Install 即可

image-20230608141327997

四、其他功能配置

4.1 自定义界面风格

通过访问http://172.16.10.37:9001/p/test#skinvariantsbuilder,即设置编辑器的风格。

Etherpad 支持设置顶部菜单、背景区、编辑区的背景,提供了四种不同的样式用于选择,想用哪种随你选。

4.2 使用Nginx 代理

Nginx 安装过程省略,这里只贴出代理的nginx配置文件,注意Etherpad 的配置文件中的要设置成 trustProxy = 'true'

[root@sre offline]# cat etherpad.conf 
server {
        listen       80;
        listen 443 ssl;
        server_name  etherpad.xxx.link;
        root         /usr/share/nginx/html;
        ssl_certificate /etc/opt/rh/rh-nginx116/nginx/cert/xxx/xxx.crt;
        ssl_certificate_key /etc/opt/rh/rh-nginx116/nginx/cert/xxx.link/xxx.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;

        location / {
        proxy_pass http://172.16.10.37:9001;
        client_max_body_size 200m;
        proxy_set_header            Host $host;
        proxy_set_header            X-real-ip $remote_addr;
        proxy_set_header            X-Forwarded-For $remote_addr;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

五、参考