Pleroma 是一个参与 Fediverse 的轻量级服务器。Peroma是Mastodon服务器软件的替代品。与Mastodon相比,Pleroma不需要那么多的处理器或RAM进行类似的安装。本教程记录了 Pleroma 服务器的安装步骤。服务器可以是个人的 Fediverse 主实例,也可以是与朋友、家人或感兴趣的社区共享的实例。
一、准备工作
- 一个新的 Vultr Ubuntu 22.04 LTS 服务器实例。单用户实例将在具有 1 GB RAM 的实例上运行良好。主机名应设置为完全限定的域名 (FQDN),例如用于服务器。Pleroma 软件和操作系统文件将使用大约 8.2 GB 的磁盘空间。
pleroma.example.com
- 非根 sudo 用户。使用Vultr 的最佳实践指南在 Ubuntu 上创建一个 sudo 用户。
- 指向服务器 IP 地址的完全限定域名 (FQDN)。
二、案例
本教程使用示例:
- 服务器主机名:普莱罗马
- 服务器完全限定域名 (FQDN):pleroma.example.com
- IP地址:192.0.2.1
三、初始步骤
3.1、验证主机名和 FQDN
验证实例的主机名是否设置为用于服务器的主机名。
$ hostname
pleroma
如果主机名不正确,请按照Vultr 的说明更改主机名或使用正确的主机名重新安装映像。重新安装映像以修改主机名将完全擦除实例上的所有内容,因此必须在进行任何进一步配置之前完成此操作。
设置常用项的环境变量:
这应该看起来像,,和export FQDN=pleroma.example.com
export EMAIL=admin@example.com
export USER=admin
$ export FQDN=<fully qualified domain name>
$ export EMAIL=<email address>
$ export USER=<username to use on Pleroma instance>
验证 DNS 记录是否指向 FQDN。
$ dig +short $FQDN
192.0.2.1
应在Vultr 控制面板中配置将服务器的 IP 地址与其完全限定域名相关联的 DNS PTR 记录。
3.2、确保系统软件是最新的并启用自动更新
系统应运行当前软件以获得最佳性能和安全性。
$ sudo apt update
$ sudo apt -y full-upgrade
删除任何不必要/过时的软件包:
$ sudo apt autoremove
启用软件更新的自动安装。
(对有关下载和安装稳定更新的问题回答“是”)
$ sudo apt-get install unattended-upgrades
$ sudo dpkg-reconfigure -plow unattended-upgrades
3.3、安装邮政和支持软件
$ sudo apt -y install git build-essential postgresql postgresql-contrib cmake libmagic-dev
3.4、安装 Elixir 和 Erlang
$ sudo apt -y install elixir erlang-dev erlang-nox
3.5、安装图像处理工具
$ sudo apt -y install imagemagick ffmpeg libimage-exiftool-perl
四、安装普莱罗马
创建一个用户来运行 Pleroma 软件:
$ sudo useradd -r -s /bin/false -m -d /var/lib/pleroma -U pleroma
创建 Pleroma 目录
$ sudo mkdir -p /opt/pleroma
$ sudo chown -R pleroma:pleroma /opt/pleroma
将 Pleroma git 存储库克隆为 Pleroma 用户
$ sudo -Hu pleroma git clone -b stable https://git.pleroma.social/pleroma/pleroma /opt/pleroma
更改为 pleroma 子目录
$ cd /opt/pleroma
安装 Pleroma 的支持包。当要求安装十六进制时,回答Yes。
$ sudo -Hu pleroma mix deps.get
生成肋骨配置。这可能需要几分钟时间。当被要求安装钢筋3时,回答Yes。
$ sudo -Hu pleroma MIX_ENV=prod mix pleroma.instance gen
配置程序将询问一系列问题,应按如下方式回答:
您的实例将使用哪个域?(例如 pleroma.soykaf.com)[]把 FQDN 放在这里 ENTER
您的实例的名称是什么?(例如玉米狗商场)[]服务器名称 ENTER
您的管理员电子邮件地址是什么?[]电子邮件地址 ENTER
您想使用哪个电子邮件地址发送电子邮件通知?[]电子邮件地址 ENTER
您希望搜索引擎索引您的网站吗?(是/否)[y]ENTER
是否要将配置存储在数据库中(允许从 admin-fe 控制它)?(是/否)[n]Y ENTER
数据库的主机名是什么?[本地主机]ENTER
您的数据库的名称是什么?[胸膜瘤]ENTER
用户使用什么连接到数据库?[胸膜瘤]ENTER
用于连接到数据库的密码是什么?[自动生成]ENTER
是否要使用 RUM 索引?[n]ENTER
应用程序将侦听哪个端口(如果您使用的是nginx的默认设置,请保留它)?[4000]ENTER
应用程序将侦听什么 ip(如果您使用的是 nginx 的默认设置,请保留它)?[127.0.0.1]ENTER
媒体上传应该进入哪个目录(使用本地上传程序时)?[上传]ENTER
应该从哪个目录中读取自定义公共文件(自定义表情符号、前端包覆盖、robots.txt 等)?[实例/静态/]ENTER
是否要从上传的图像中剥离位置 (GPS) 数据?这需要exiftool,它被检测为已安装。(是/否)[y]ENTER
您想匿名化上传的文件名吗?(是/否)[n]Y ENTER
是否要删除重复的上传文件?(是/否)[n]Y ENTER
将 config 写入 config/generated_config.exs。
将 postgres 脚本编写到 config/setup_db.psql。
编写 /opt/pleroma/instance/static/robots.txt。
所有文件都已成功写入!有关后续步骤,请参阅平台的安装说明。
请在运行数据库迁移后将您的配置传输到数据库。有关更多信息,请参阅文档的“将配置传输到/传出数据库”部分。
4.1、将配置文件移动到其最终位置:
$ sudo -Hu pleroma mv config/{generated_config.exs,prod.secret.exs}
五、改进安全配置
设置为 true,以便通过安全连接发送 Cookie。secure_cookie_flag
$ sudo sed -i 's/secure_cookie_flag: false/secure_cookie_flag: true/g' config/config.exs
启用严格的传输安全性,以便攻击者无法将HTTPS 连接降级为 HTTP。
$ sudo sed -i 's/ sts: false/ sts: true/g' config/config.exs
5.1、更新ca-certificate.crt文件并将其添加到pleroma配置中:
$ sudo update-ca-certificates --fresh
$ sudo sed -i 's,path/to/file/with/PEM/cacerts,/etc/ssl/certs/ca-certificates.crt,' config/description.exs
5.2、创建 Postgres 数据库:
$ sudo -Hu postgres psql -f config/setup_db.psql
5.3、运行数据库迁移:
$ sudo -Hu pleroma MIX_ENV=prod mix ecto.migrate
六、安装 Nginx
Nginx将在Pleroma面前充当反向代理,处理TLS和会话管理。
$ sudo apt -y install nginx
6.1、停止 Nginx 以允许 Certbot 使用端口 80:
$ sudo service nginx stop
6.2、配置防火墙 (ufw) 以允许端口 80 和 443 上的入站 TCP 连接:
$ sudo ufw allow http
$ sudo ufw allow https
七、安装证书机器人并请求 TLS 证书
$ sudo apt -y install certbot
$ sudo mkdir -p /var/lib/letsencrypt/
Certbot将要求批准Let’s Encrypt的(强制性)服务和报价条款
对(可选)邮件列表的订阅。Certbot 将自行配置为自动刷新 TLS 证书。
$ sudo certbot certonly --email $EMAIL -d $FQDN --standalone
7.1、安装 Nginx 配置
$ sudo cp /opt/pleroma/installation/pleroma.nginx /etc/nginx/sites-available/pleroma.nginx
$ sudo ln -s /etc/nginx/sites-available/pleroma.nginx /etc/nginx/sites-enabled/pleroma.nginx
7.2、将域名添加到 Nginx 配置
$ sudo sed -i "s,example.tld,$FQDN," /etc/nginx/sites-available/pleroma.nginx
7.3、使 Nginx 能够在启动时启动并立即启动
$ sudo systemctl enable --now nginx.service
7.4、安装 systemd 服务文件:
$ sudo cp /opt/pleroma/installation/pleroma.service /etc/systemd/system/pleroma.service
7.5、使 Pleroma 在引导时启动并立即启动:
$ sudo systemctl enable --now pleroma.service
7.6、创建管理性 Pleroma 用户:
$ sudo -Hu pleroma MIX_ENV=prod mix pleroma.user new $USER $EMAIL --admin
系统将显示一个 URL 以设置指定用户名的密码。
八、最后
使用提供的链接设置密码,然后单击“主页”。
使用刚刚创建的用户名/密码登录,然后单击屏幕右上角的地球图标转到“管理”菜单,然后在左侧面板上选择“设置”,然后选择“实例”。向下滚动并修改“注册打开”设置以允许(默认选项)或拒绝公共用户注册和状态帖子,并根据需要设置其他选项。修改“联合”设置以允许(默认)或拒绝与Fediverse 中其他服务器的连接。
选择“提交”按钮将配置更改发送到服务器。安装完成。