Pleroma | 维护日志(一)

Posted on May 15, 2023

搭建步骤完全参考 在 Debian 10 / Ubuntu 20.04 上安装 Pleroma,感谢 Suica!

关闭/开启注册

Settings > Instance > Registrations open

(站点名称、字数上限、投票选项上限、封禁其它实例等等都在 instance

更换实例图标

分为三步:

  • 准备好 LOGO 文件
  • 找到放 favicon 的位置
  • 上传

具体来说:

找到本地要上传的图片的绝对路径,例如:/Users/user/Pictures/favicon.png

定位服务器中 favicon 位置

find / -type f -iname favicon.png

参数说明:

find 命令:根据用户指定的表达式在目录层次结构中搜索文件和目录

/:在根目录范围内搜索

-type f:指定文件类型 常规文件

-iname:目标文件名(不区分大小写)

得到 favcion 的路径

/opt/pleroma/lib/pleroma-2.4.5-2-gd8e32646/priv/static/favicon.png

上传图标:另开一个终端窗口(因为当前终端已经登录了服务器,在服务器里查找还未上传的文件是找不到的),执行

rsync /Users/user/Pictures/favicon.png admin@149.248.0.119:/opt/pleroma/lib/pleroma-2.4.5-2-gd8e32646/priv/static/favicon.png

参数说明:

scp <本地文件路径>< vps用户名@服务器IP>:<目标路径>

以及,网页 logo 在 Settings > Frontend ,记得取消 Settings > Frontend > Logo mask

刷新网页,图标更改完毕 🎉

怎么换一个前端

# 下载到 /tmp
cd /tmp && curl -L https://gitlab.com/soapbox-pub/soapbox-fe/-/jobs/artifacts/v3.0.0-beta.1/download?job=build-production -o soapbox-fe.zip
# 解压到 /var/lib/pleroma
busybox unzip soapbox-fe.zip -o -d /var/lib/pleroma

刷新网页

自定义表情

表情来源:

https://emojos.in/

https://slackmojis.com/

https://fedi.absturztau.be/emoji-packs/

https://stickersurge.com/sticker-packs

或者 如何装饰你的站点:自定义CSS、中继站和自定义表情 里提到的「偷表情神器」

把偷来的表情(…)通过 SSH 客户端的 SFTP 功能上传到服务器的 /var/lib/pleroma/static/emoji 目录下(或者你的自定义路径)

在 Admin FE 的 Settings > Emoji > Settings > Shortcode globs 里添加表情包目录的路径,比如:/emoji/**/*.png/emoji/**/*.gif ,意味着 emoji 及其子目录下所有 png/gif 格式的文件都会被视作自定义表情包

点击 Reload emoji,OK

https://stickersurge.com/pack/8bit

我觉得这组表情包好好笑🤭

放大 Emoji

Pleroma-fe 的 emoji 放大配置(?)

实例展示页面

在 Settings > Frontend > Redirect root no login 里改成 /about

在 Admin FE > Settings > Others 改站点规则

Hello!

Ponderduck is a private instance and is not normally open for registration, so if you would like to join, please contact the admin with your fediverse account.

Thanks to those who have helped me in the build process! Sending lots of love and respect!

See the Pleroma documentation for more information.

禁止未验证用户浏览时间线:Settings > Instance > Public/Timelines/Profiles/Activites 根据需要更改

自定义主题

获取主题 or 自制:

五分钟设计一个漂亮的pleroma主题

关于 Docker 下 Pleroma 实例部署的一些推荐设置

或者 Google 「Pleroma FE theme json」

一些漂亮主题展示:

https://mindpalace.michaelis.website/tech/pleroma-theme.html

https://plthemes.vulpes.one/

https://suicablog.cobaltkiss.blue/posts/themes-gallery/

添加主题的步骤:

  • 找到 themes 文件夹 find / -type d -iname themes

  • 把下载的 .json 文件添加到目标目录,比如我添加到了 /var/lib/pleroma/static/static/themes

  • 然后在 /var/lib/pleroma/static/static/styles.json 把刚刚的自定义主题添加进去,按如下格式

{
  "takeabreak":"/static/themes/takeabreak.json",
  "break":"/static/themes/break.json"
}

刷新网页,在设置里找到自定义主题,可以用了

本站默认主题在 Admin FE/Pleroma FE 里改,路径:Settings > Frontend > Themes

连接中继

中继的简介、重要性和中文中继推荐:https://mstdn.one/@list/106729842177738917

加不上某些中继,但是又想tl上出现更多嘟文怎么办?

  • Kana告诉我一个办法:对于 Pleroma 实例而言,把 https://Pleroma实例域名/relay 当作中继连接来输入是可以关注这个实例的。
  • 所以,我们可以访问 (https://the-federation.info/pleroma )和(https://fedidb.org/network )这两个fediverse黄页,手动添加自己心仪的pleroma实例。可以一口气关注所有的中文pleroma(因为太少),还可以关注几个头部外文实例(bae.st的人发黄图不选NFSW!)

——来自 我的pleroma搭建笔记

几个中文中继:https://mstdn.one/@list/106729842177738917

备份

Pleroma 需要备份的地方有三个:

  • /etc/pleroma:存储启动时的配置文件。如果你开启了数据库存储配置,也可以不用备份;
  • /var/lib/pleroma:存储用户创建的静态文件(自定义表情、头像、上传的文件、前端、……),如果不是经常上传文件,可以按月备份;
  • PostgreSQL 中的 pleroma 数据库,可以通过 pg_dump 备份:
sudo -Hu postgres pg_dump -d pleroma --format=custom -f /var/lib/postgresql/pleroma.pgdump

续期SSL证书

根据 官方文档

apt-get update

apt install snapd
snap install core
snap install hello-world
hello-world

snap install --classic certbot
snap set certbot trust-plugin-with-root=ok
snap install certbot-dns-cloudflare

(?有点困惑,上面折腾了一大堆,最后简简单单敲个 certbot 然后跟着选就好了)

常用命令

查看服务状态

systemctl status	[options]

查看内存

top

查看负载

htop

如何在Debian Linux上安装htop

502 Bad Gateway

查看 Nginx 错误日志

vim /var/log/nginx/error.log
[error] 825#825 :*8459 connect() failed (111: Connection refused) 
while connecting to upstream, client: x.x.x.x, server: ponderduck.cc, 
request: "POST /inbox HTTP/2.0", 
upstream: "http:127.0.0.1:4000/inbox", 
host: "ponderduck.cc"

分析:client请求资源时,转发到127.0.0.1:4000去了

检查4000端口,返回为空

telnet <ip> 4000

netstat没有发现占用端口4000的程序

附上 Debula 原话:

OTP安装的Pleroma默认监听的是本机的127.0.0.1:4000 也就是说,在VPS上你可以直接通过 http://127.0.0.1:4000 访问 Pleroma,比如 curl -v http://127.0.0.1:4000/api/v1/instance

NginX负责把外部的连接请求转发到 127.0.0.1:4000,得到响应后转发回去

如果你用 netstat 没发现 4000 端口的程序,说明 Pleroma 挂了,该去检查 Pleroma 的错误日志 :ablobsweats:

(不过确实很奇怪,OTP版本应该会自动重启的……)

pleroma位置 /opt/pleroma

查看pleroma日志journalctl -u pleroma,为空

-- Logs begin at Wed 2023-03-08 16:18:56 HKT, end at Wed 2023-03-08 19:38:34 HKT. --
-- No entries --

于是去 /var/log/syslog 看日志,都是info,好像也没什么问题

重启之后莫名其妙好了

过了4天,又502了……

Update: 20230528再次 502

检查进程是否存在,存在

ps aux | grep pleroma

查看 pleroma 日志

journalctl -u pleroma

pleroma: cat: write error: No space left on device
pleroma: ERROR: Cannot start release because it could not write /opt/pleroma/tmp/pleroma-2.4.5-2-gd8e32646-2

没有足够空间写入运行时配置文件

查看内存使用情况

free -m

              total        used        free      shared  buff/cache   available
Mem:            987         144         117          30         724         634
Swap:          2399           3        2396

查看磁盘使用情况(满了耶…

df -h

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        24G   24G     0 100% /

查看各个文件占用大小

cd /
du -sh * 

2.4G    swapfile
2.7G    usr
19G     var
# 清空日志,稍微腾出一点空间了
cat /dev/null > filename

/usr/lib/postgresql/11/bin/pg_ctl

/etc/postgresql/11/main# 
.
├── conf.d
├── environment
├── pg_ctl.conf
├── pg_hba.conf
├── pg_ident.conf
├── postgresql.conf
└── start.conf

数据库常用命令

# 登录 PG 数据库
psql -U postgres
# 查看所有数据库
\l
# 进入某数据库
\c pg-name
# 查看某数据库中的所有表名
select tablename from pg_tables;
# 退出数据库
ctrl + z

查看数据库大小,是小服务器不能承受之重

postgres=# SELECT pg_size_pretty( pg_database_size('pleroma') );
 pg_size_pretty 
----------------
 14 GB
(1 row)

升级服务器,然后查看磁盘占用情况

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        52G   23G   27G  46% /

查看 postgresql 日志

vim /var/log/postgresql/postgresql.log

创建数据库文件的备份目录并赋权

mkdir -p /pleromabackup
chmod 777 /pleromabackup

允许 pleroma 用户免密登录数据库

vim /etc/postgresql/11/main/pg_hba.conf

host    replication repl        127.0.0.1/32            md5

备份数据库

# 切换用户为 postgres
su - postgres
# 登录数据库
psql -U postgres
# 备份
postgres=# \! pg_dump pleroma -f /pleromabackup/pleroma.pgdump

删除 15 天前的外站缓存(这个 n 天是在 Admin FE - settings - instance - Remote post retention days 里修改的)

su pleroma -s $SHELL -lc "./bin/pleroma_ctl database prune_objects"

11:32:27.912 [info]  Pruning objects older than 15 days

如果报错:–rpc-eval : RPC failed with reason :nodedown,可能是因为没启动 Pleroma。感谢 Seviche !!

整理数据库

su pleroma -s $SHELL -lc "./bin/pleroma_ctl database vacuum full"

0530执行记录

# 重新生成数据库配置文件
su pleroma -s $SHELL -lc "./bin/pleroma_ctl instance gen --output /tmp/config.exs --output-psql /tmp/setup_db.psql"
# 清空数据库
sudo -Hu postgres psql -c 'DROP DATABASE pleroma;';
DROP DATABASE
sudo -Hu postgres psql -c 'DROP USER pleroma;'
DROP ROLE
# 接下来该重建数据库了
sudo -Hu postgres psql -f /tmp/setup_db.psql
# 重建后的数据库size
postgres=# SELECT pg_size_pretty( pg_database_size('pleroma') );
 pg_size_pretty 
----------------
 8045 kB
(1 row)

# 恢复数据16:17-
sudo -u postgres psql pleroma < /pleromabackup/pleroma.pgdump

参考 & 致谢

pleroma中添加自定义表情包

我的pleroma检修笔记1

社交网络:Pleroma

https://bigshans.github.io/post/troubleshoot-pleroma/

https://wiki.iroiro.party/doku.php?id=start&do=index

Psql 占满磁盘怎么办:

https://dba.stackexchange.com/questions/17057/i-need-to-run-vacuum-full-with-no-available-disk-space