Pleroma | 在 Debian 上搭建 pleroma 实例
前置步骤
安装依赖
# 更新
apt-get update
# 安装依赖
apt install unzip libncurses5 postgresql postgresql-contrib nginx snapd libmagic-dev
apt install imagemagick ffmpeg libimage-exiftool-perl
PostgreSQL 性能调优
根据 pgTune 修改配置文件
vim /etc/postgresql/13/main/postgresql.conf
重启 PostgreSQL
systemctl restart postgresql
安装 Pleroma
- 创建 Pleroma 用户
adduser --system --shell /bin/false --home /opt/pleroma pleroma
创建 pleroma 用户,指定家目录为 /opt/pleroma
,用于配置 pleroma 的环境和文件,并禁止登录
- 检测系统架构与 libc 版本,并根据结果设置环境变量 FLAVOUR
arch="$(uname -m)";if [ "$arch" = "x86_64" ];then arch="amd64";elif [ "$arch" = "armv7l" ];then arch="arm";elif [ "$arch" = "aarch64" ];then arch="arm64";else echo "Unsupported arch: $arch">&2;fi;if getconf GNU_LIBC_VERSION>/dev/null;then libc_postfix="";elif [ "$(ldd 2>&1|head -c 9)" = "musl libc" ];then libc_postfix="-musl";elif [ "$(find /lib/libc.musl*|wc -l)" ];then libc_postfix="-musl";else echo "Unsupported libc">&2;fi;echo "$arch$libc_postfix"
# 输出
amd64
所以设置环境变量为
export FLAVOUR="amd64"
- 下载 pleroma 文件到 /tmp 目录并解压
su pleroma -s $SHELL -lc "
curl 'https://git.pleroma.social/api/v4/projects/2/jobs/artifacts/stable/download?job=$FLAVOUR' -o /tmp/pleroma.zip
unzip /tmp/pleroma.zip -d /tmp/
"
- 移动文件到 /opt/pleroma 并删除 /tmp
su pleroma -s $SHELL -lc "
mv /tmp/release/* /opt/pleroma
rmdir /tmp/release
rm /tmp/pleroma.zip
"
- 创建各种目录及赋权操作 uploads 目录并赋权
# uploads 目录 & 赋权
mkdir -p /var/lib/pleroma/uploads
chown -R pleroma /var/lib/pleroma
# static 目录 & 设置所有者为 pleroma
mkdir -p /var/lib/pleroma/static
chown -R pleroma /var/lib/pleroma
# 配置文件目录 & 设置所有者为 pleroma
mkdir -p /etc/pleroma
chown -R pleroma /etc/pleroma
- 生成配置文件
su pleroma -s $SHELL -lc "./bin/pleroma_ctl instance gen --output /etc/pleroma/config.exs --output-psql /tmp/setup_db.psql"
回答若干问题
- 创建 postgres 数据库
su postgres -s $SHELL -lc "psql -f /tmp/setup_db.psql"
- 更新数据库 schema
su pleroma -s $SHELL -lc "./bin/pleroma_ctl migrate"
- 启动实例
su pleroma -s $SHELL -lc "./bin/pleroma daemon"
- 等待一会检测实例运行情况
curl http://localhost:4000/api/v1/instance
- 暂停实例运行
su pleroma -s $SHELL -lc "./bin/pleroma stop"
通配符 SSL 证书自动续期
如果预装了certbot要先删掉 apt-get remove certbot
安装 certbot
snap install core
snap refresh core
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot
snap set certbot trust-plugin-with-root=ok
snap install certbot-dns-cloudflare
放置凭据
Token 在 https://dash.cloudflare.com/profile/api-tokens 生成
sudo mkdir -p /root/.secrets/
sudo touch /root/.secrets/cloudflare.ini
# 添加/.secrets目录与cloudflare.ini文件
sudo chmod 0700 /root/.secrets/
sudo chmod 0400 /root/.secrets/cloudflare.ini
# 指定权限
vim /root/.secrets/cloudflare.ini
# Cloudflare API token used by Certbot
dns_cloudflare_api_token = 0123456789abcdef0123456789abcdef01234567
申请证书
certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials ~/.secrets/cloudflare.ini \
-d example.com
-d *.example.com
测试自动延期
certbot renew --dry-run
Nginx
复制 Pleroma 的 nginx 配置到 nginx 目录
cp /opt/pleroma/installation/pleroma.nginx /etc/nginx/sites-available/pleroma.conf
ln -s /etc/nginx/sites-available/pleroma.conf /etc/nginx/sites-enabled/pleroma.conf
编辑 Pleroma 的 nginx 配置文件,改成自己的域名
vim /etc/nginx/sites-available/pleroma.conf
这里改成
location / {
return 301 https://<domain>$request_uri;
}
重启 nginx
nginx -t
systemctl start nginx
# or
nginx -s reload
设置系统服务
cp /opt/pleroma/installation/pleroma.service /etc/systemd/system/pleroma.service
systemctl start pleroma
systemctl enable pleroma
可以访问啦
创建管理员账户
cd /opt/pleroma/bin
su pleroma -s $SHELL -lc "./bin/pleroma_ctl user new <joeuser> <joeuser@sld.tld> --admin"
参考 & 致谢
在 Debian 10 / Ubuntu 20.04 上安装 Pleroma