Plume轻博客网站的搭建和优化:作为同人文集中地的潜力?

Plume是什么?它的优缺点?

Plume是一款轻博客软件,可以在上面放置简单的图文。它相较其他轻博客软件的优势在于,它和Mastodon等同样隶属于Fediverse,也因此与Fediverse主流软件,尤其是Mastodon、Pleroma等这样的文字社交软件互通。你可以通过Mastodon帐号关注Plume帐号,并且获取其更新、在公开时间轴搜索其tag、在文章底下评论等等。

由于其完善的高级搜索功能、各站很强的互通性以及tag系统,非常适合作为同人文存放和交流站点。各站相对独立又互相联通,也可以避免出现某个站点被墙/某个站长一言堂的出现。

然而由于Plume仍在开发中,仍有许多问题存在,如个人主页需自行设置目录,否则无法完整显示文章;以及无法屏蔽特定用户等。此外由于Plume多由个人搭建,稳定性并不能保证。因此,如果仅作为博客存档而不注重与Fediverse的互通,以及如果更注重排版等美观问题的话,建议使用其他更成熟的博客软件作为自建选择。即使作为同人文存放,也强烈建议同时在Archive of our Own上存档。

如何搭建Plume?

步骤与搭建Mastodon相似,基本步骤依旧是以下4步:

  1. 购买域名
  2. 设置邮件服务
  3. 购买服务器
  4. 搭建站点

其中,前3步可参考技术小白搭建Mastodon指南的前3步,购买服务器可不仅限于Digital Ocean,而可选择任意服务器供应商。此外,Plume对CPU和内存的配置要求较小,内存占用一般不到200m,购买最低配置(一般为$5/月)就足够,如果有打折还可以更优惠。

第4步可参考官方教程,其中任何方法均有详细步骤。对新手稍微简单一些的是其中的docker方式,也可以参考这篇Docker搭建中文教程

官方教程未提及的优化

支持外链图片

Plume本身作为Markdown编辑器支持外链图片插入,但是官方nginx文件配置有疏漏,会使外界图片无法显示,需要修改nginx文件。

修改add_header Content-Security-Policy "default-src 'self' 'unsafe-inline'; frame-ancestors 'self'; frame-src https:";一行,改为:

add_header Content-Security-Policy "default-src 'self' 'unsafe-inline'; frame-ancestors 'self'; frame-src https:; img-src *";

systemctl reload nginx重启nginx,即可显示所有外链图片。

针对中文搜索的优化:ngram搜索模式

默认搜索以空格和标点符号为边界(英文格式),但我们可以在参数中改为更适合中文的模式ngram:

如果你使用docker安装:

systemctl stop nginx   #停止nginx反代,这是为了保证切换期间不受外界影响
cd /【你的plume安装文件夹】
docker-compose down   #关闭Plume
cd search_index
rm -rf *      #清空搜索索引
cd ..
nano .env

随后在.env文件中添加两行:

SEARCH_TAG_TOKENIZER=ngram
SEARCH_CONTENT_TOKENIZER=ngram

Ctrl+X保存并退出。随后:

docker-compose up -d
docker-compose run --rm plume plm search init    #重建搜索引擎

重建完成之后,

docker-compose down && docker-compose up -d     #重启plume
systemctl start nginx      #重启nginx反代

如果你是源码安装:

systemctl stop plume.service
cd /【你的Plume安装文件夹】
cd search_index
rm -rf *      #清空搜索索引
cd ..
nano .env     

随后在.env文件中添加两行:

SEARCH_TAG_TOKENIZER=ngram
SEARCH_CONTENT_TOKENIZER=ngram

Ctrl+X保存并退出。随后:

plm search init
systemctl start plume.service

更改之后,文本与tag会以最少2字符、最多8字符的方式索引,更加适合中文的搜索模式。

(可选)魔改:扩展ngram搜索模式的字符上限

上述方法支持最多8字符的搜索,对中文而言足够,但对一些较长的英文单词又不太方便。我们可以采用修改源码的方式提升搜索字符上限。

如果你觉得过于麻烦,可以直接采用本人的Plume镜像:pullopen/plume,将docker-compose.yml中的plumeorg/plume换成pullopen/plume,随后按上述方式重建索引即可。

如果你愿意探索,可以参考以下方法:

按照这个commit修改文件plume-models/src/search/tokenizer.rs,将8改为其他数字即可。

如果你采用docker方式安装,可以通过Github Action自己推送魔改镜像至dockerhub(详细教程类似Mastodon魔改教程,但官方已有流程文件,只需在仓库中设置好DOCKERHUB_USERNAMEDOCKERHUB_TOKEN,并且按照这个Commit将plumeorg改为自己在dockerhub上的用户名之后,可以自动创建并推送属于你自己的Plume镜像。

随后按照上一部分的方法重建搜索索引。

(可选)提升字数上限

官方默认每篇文章的字数上限为一万多字,可以通过这样的方法提升:

.env中添加:

FORM_SIZE=xx(数值)

该数字默认为128,亦即默认上限是128*1024字节,每中文字符占9字节,即差不多1万多字。可提升为512等,即可提升字数上限至5万多字。

修改完成后需重启Plume。

(可选)每2小时重启1次

Plume早期版本曾有会自动掉线的问题,重启后可解决。现在虽然这个问题已经解决,但设置自动重启似乎仍可减轻Plume对CPU和内存的占用。

创建重启脚本:

nano rebootplume.sh

在脚本中填入下列内容:

#!/bin/sh

set -e

echo "Commencing docker-compose reboot `date`" >> /var/log/plume/docker-compose-reboot.log
/usr/local/bin/docker-compose -f /【Plume安装文件夹】/docker-compose.yml down >> /var/log/plume/docker-compose-reboot.log 2>&1
/usr/local/bin/docker-compose -f /【Plume安装文件夹】/docker-compose.yml up -d >> /var/log/plume/docker-compose-reboot.log 2>&1
echo "Finishing docker-compose reboot `date`" >> /var/log/plume/docker-compose-reboot.log

给脚本赋权:

chmod u+x rebootplume.sh

随后crontab -e设置定时任务:

3 */2    * * *   【脚本存放文件夹】/rebootplume.sh

退出保存。

由于现在已经不存在长时间运转后的掉线问题,而重启本身也会导致大约10秒的掉线,可能会影响部分用户的保存,这个重启间隔也可以自行考虑加长,如改为每天1次等等。

总结

Plume互相联通的优势,以及完善的tag和搜索功能,使得它非常适合作为同人文站点。各站相对独立又互相联通的搭建模式,当其中某个站点出现问题(被墙/站长一言堂)时,只要还有其他站点存在,就可以获取到这个站点的文章并且与之互动。(当然Plume目前的迁移尚未像Mastodon那样完善,需要手动迁移和手动存档,因此依旧强烈建议自己保留一份存档!)因此,尽管目前存在许多问题,我依然认为它有潜力成为一个很好的同人交流平台,也希望更多朋友能够参与搭建。

发布者:叼走禁令的鹅

当我伸出手来,总希望能抓住些什么,不至于落入对空虚无尽的恐慌之中。

留下评论

通过 WordPress.com 设计一个这样的站点
从这里开始