etherpad共享文档教程

首先声明:本文档不会一步一步指导操作,主要介绍思路,以及当前(2024.9.4)遇到的问题的解决方案,详细命令可以请教AI

什么是etherpad

Etherpad allows you to edit documents collaboratively in real-time, much like a live multi-player editor that runs in your browser. Write articles, press releases, to-do lists, etc. together with your friends, fellow students or colleagues, all working on the same document at the same time. All instances provide access to all data through a well-documented API and support import/export to many major data exchange formats. And if the built-in feature set isn't enough for you, there's tons of plugins that allow you to customize your instance to suit your needs. You don't need to set up a server and install Etherpad in order to use it. Just pick one of the publicly available instances that friendly people from everywhere around the world have set up. Alternatively, you can set up your own instance by following our installation guide.

上面直接粘贴的官网的介绍,简言之就是一个共享文档的开源项目。

从git开始

主流的安装方式应该是git和docker两种,但是docker的etherpad的库好像有问题,而且国内目前docker的墙太厚了,镜像站也不好找,所以docker虽然方便但是没法直接用,因此我这里选择git源码编译运行。

首先在一个合适的目录新建一个etherpad的工作目录

cd 到工作目录,再git clone源码

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

这里阿里云的服务器不对github设墙,所以我可以直接git源码,如果你的服务器无法访问github,那么可以选择本地先git或者下载zip源码包,然后ssh上传到服务器上解压缩。

然后就是搭建node.js的环境,这也是etherpad的本地运行环境。

可怕的node环境

由于我原本装的服务器操作系统是centos7.6(官方已经暂停维护),对于node18及以上的版本都不支持(etherpad需要pnpm构建工具,npm低版本不支持pnpm),然后我换了好几个操作系统(centos stream、docker(阿里云的奇怪设置,docker是软件系统,但是操作系统没明说我怀疑还是centos系列),debian)都失败了。最后我先选择了ubuntu22.04(阿里云配置),然后将其升级到了ubuntu24版本。不得不说,阿里云的轻量应用服务器这一点是真的坑,不仅支持的系统少而且老旧,还不允许使用其它镜像(但是ecs云服务器可以使用其它镜像)。这里的升级系统的操作就不讲了,不是很复杂,请自行咨询AI。

好在ubuntu24没有让我失望,成功安装了nvm(非最新版本),然后我又升级到nvm(0.4版本),再设置nvm、npm镜像源,然后下载了node18.20.4(node20不知道为什么无法下载,我怀疑是腾讯的镜像源没有引入。)

现在几乎配好了全部node环境(后面还涉及到一部分的ts环境)

这里有个坑,虽然设置了nvm和npm镜像源,但是还是有可能(记不太清了)无法下载node(不知道为什么),所以这里可以给vps挂上代理,这里安利一个教程(v2rayA - 文档

容器启动

进入工作目录,由于最新版的etherpad使用了TypeScript作为代码基础,所以还得将TypeScript代码编译成JavaScript代码,再进行运行。

安装tsc(typescript编译器):npm install -g typescript

初始化(创建tsconfig.json):tsc --init

编译:tsc

启动:node dist/node/server.js

现在你可以在IP:9001默认端口查看到你的etherpad服务了,不过进程会随着终端的关闭而关闭,因此我们需要将其改成守护进程(daemon)。

这里我选择使用PM2来管理进程

先关闭etherpad(ctrl + c)

全局安装:npm install -g pm2

启动:pm2 start src/node/server.js --name etherpad

生成开机自启脚本(可选):pm2 startup

保存当前进程列表:pm2 save

这里已经成功实现etherpad的守护进程的运行了,更多pm2命令请自行查阅

接下来我们用nginx来绑定域名并转发端口

nginx转发端口

下载nginx(包管理工具会默认下载到/etc文件夹中),你也可以选择源码编译安装,这里省事就直接apt下载安装了。

编辑nginx配置文件(这也是nginx的核心工作指导文件):sudo nano /etc/nginx/sites-available/etherpad

复制粘贴以下内容,注意替换其中的域名:

server {
listen 80;
server_name example.com; # 替换为您的域名

location / {
proxy_pass http://localhost:9001; # Etherpad运行的端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}


重启新的nginx配置:sudo ln -s /etc/nginx/sites-available/etherpad /etc/nginx/sites-enabled/

检测nginx配置文件格式:sudo nginx -t

重新加载nginx:sudo systemctl reload nginx

congratulations!

现在请直接通过域名访问你的etherpad网页吧!congratulations!