Migrant ot Akkoma

Posted on Jul 31, 2023

准备

🌟备份

➡️账号: Settings – Data import/export,全部导出

以下文件夹用 FTP 客户端(FileZilla)备份到电脑

➡️数据库:

mkdir -p /pleromabackup
chmod 777 /pleromabackup

登入数据库

su - postgres
psql -U postgres
postgres=# \! pg_dump pleroma -f /pleromabackup/pleroma.pgdump

➡️Pleroma 配置:/etc/pleroma/

➡️Pleroma 静态文件:/var/lib/pleroma

🌟把域名的IP指向新服务器

搭建过程

安装依赖

apt update
apt upgrade
apt install curl unzip libncurses5 postgresql postgresql-contrib nginx libmagic-dev
apt install imagemagick ffmpeg libimage-exiftool-perl

安装本体:注意 Ubuntu22 的FLAVOUR变量是amd64-ubuntu-jammy

adduser --system --shell  /bin/false --home /opt/akkoma akkoma
export FLAVOUR="amd64-ubuntu-jammy"

su akkoma -s $SHELL -lc "
curl 'https://akkoma-updates.s3-website.fr-par.scw.cloud/stable/akkoma-$FLAVOUR.zip' -o /tmp/akkoma.zip
unzip /tmp/akkoma.zip -d /tmp/
"
su akkoma -s $SHELL -lc "
mv /tmp/release/* /opt/akkoma
rmdir /tmp/release
rm /tmp/akkoma.zip
"

mkdir -p /var/lib/akkoma/uploads
chown -R akkoma /var/lib/akkoma
mkdir -p /var/lib/akkoma/static
chown -R akkoma /var/lib/akkoma
mkdir -p /etc/akkoma
chown -R akkoma /etc/akkoma

su akkoma -s $SHELL -lc "./bin/pleroma_ctl instance gen --output /etc/akkoma/config.exs --output-psql /tmp/setup_db.psql"


su postgres -s $SHELL -lc "psql -f /tmp/setup_db.psql"
su akkoma -s $SHELL -lc "./bin/pleroma_ctl migrate"
su akkoma -s $SHELL -lc "./bin/pleroma daemon"
sleep 20 && curl http://localhost:4000/api/v1/instance
su akkoma -s $SHELL -lc "./bin/pleroma stop"

申请SSL证书:参考通配符 SSL 证书自动续期

Nginx:

cp /opt/akkoma/installation/akkoma.nginx /etc/nginx/sites-available/akkoma.conf

修改所有 example.tld 为准备好的域名

vim /etc/nginx/sites-available/akkoma.conf 
nginx -t
systemctl restart nginx

cp /opt/akkoma/installation/akkoma.service /etc/systemd/system/akkoma.service

systemctl start akkoma
systemctl enable akkoma

创建管理员账户、安装前端

cd /opt/akkoma
su akkoma -s $SHELL -lc "./bin/pleroma_ctl user new admin cyouike@duck.com --admin"

./bin/pleroma_ctl frontend install pleroma-fe --ref stable
./bin/pleroma_ctl frontend install admin-fe --ref stable

本地定时备份

mkdir /opt/local_backup
cd /opt/local_backup
vim backup.sh

脚本内容:

#!/bin/sh

source /etc/profile

echo "————————————backup to local directory——————————" | tee -a /opt/local_backup/backuplog.txt
echo  `date +"%Y-%m-%d %H:%M:%S"` "now starting backup" | tee -a /opt/local_backup/backuplog.txt

echo 'stop akkoma' | tee -a /opt/local_backup/backuplog.txt
sudo systemctl stop akkoma

echo "0.create a backup day directory" | tee -a /opt/local_backup/backuplog.txt

if [ -d /opt/local_backup/`date +%Y%m%d``date +%Y%m%d` ];then
    echo "Floder" `date +%Y%m%d` "already exists." 
else
    mkdir /opt/local_backup/`date +%Y%m%d`
    echo "New floder" `date +%Y%m%d`  | tee -a /opt/local_backup/backuplog.txt
fi
chmod +777 /opt/local_backup/`date +%Y%m%d`
cd /opt/local_backup/`date +%Y%m%d`

echo "1.dump database" | tee -a /opt/local_backup/backuplog.txt
sudo -Hu postgres pg_dump -d akkoma --format=custom -f /opt/local_backup/`date +%Y%m%d`/akkoma.pgdump
echo "2. copy upload & static folder" | tee -a /opt/local_backup/backuplog.txt
cp -r /var/lib/akkoma/static /opt/local_backup/`date +%Y%m%d`
cp -r /var/lib/akkoma/uploads /opt/local_backup/`date +%Y%m%d`
echo "3. copy config file" | tee -a /opt/local_backup/backuplog.txt
cp /etc/akkoma/config.exs /opt/local_backup/`date +%Y%m%d`

echo "restart akkoma" | tee -a /opt/local_backup/backuplog.txt
sudo systemctl start akkoma

echo `date +"%Y-%m-%d %H:%M:%S"` "finished" | tee -a /opt/local_backup/backuplog.txt
echo "Backup for" `date +%Y%m%d` "done!" | tee -a /opt/local_backup/backuplog.txt

删除超过15天的备份

vim clear.sh
find /opt/local_backup/ -type d -mtime +15 -exec rm -rf {} \;

设置定时任务

crontab -e
00 04 * * 6 root /bin/bash /opt/local_backup/backup.sh   
00 23 1 * * root /bin/bash /opt/local_backup/clear.sh

参考 & 致谢

Installing on Linux using OTP releases

备份pleroma记录

Managing instance configuration