Pleroma | 维护日志(一)
搭建步骤完全参考 在 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://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
实例展示页面
在 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 自制:
关于 Docker 下 Pleroma 实例部署的一些推荐设置
或者 Google 「Pleroma FE theme json」
一些漂亮主题展示:
https://mindpalace.michaelis.website/tech/pleroma-theme.html
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
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 的错误日志
(不过确实很奇怪,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
参考 & 致谢
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