pleromer-stuff/backup.md

30 lines
1.6 KiB
Markdown
Raw Permalink Normal View History

2025-01-12 14:02:10 -06:00
This is the script I use for routine backups of a pleroma server where I don't have access to the hypervisor. We need a few things:
- The pgsql database dumped to a file
- The contents of /opt/pleroma, mostly the uploads directory
- And it doesn't hurt to grab all of /etc to make sure we've got the latest nginx config and anything else that could make restoring to a new server easier.
```
#!/bin/bash
cd /opt/pleroma
echo Backup started at $(date)
sudo -Hu postgres pg_dump -d pleroma --format=custom -f /var/tmp/pleroma.pgsql
rsync -e "ssh -i $HOME/.ssh/backup_rsa -p 22" -avzh /opt/pleroma /etc /var/tmp/pleroma.pgsql pleroma-backup@server.example.com:/data
rm -f /var/tmp/pleroma.pgsql
```
For restoring the database and files, the easiest way I've found to do so is installing a fresh copy of pleroma of the same or later version and then restoring the backed up copy over top of it.
```
sudo -Hu pleroma git clone -b develop https://git.pleroma.social/pleroma/pleroma /opt/pleroma
sudo -Hu pleroma mix deps.get
sudo -Hu pleroma MIX_ENV=prod mix pleroma.instance gen
sudo -Hu postgres psql -c 'DROP DATABASE pleroma;';
sudo -Hu postgres psql -c 'DROP USER pleroma;'
sudo -Hu postgres psql -f config/setup_db.psql
sudo -Hu postgres pg_restore -d pleroma -v /opt/pleroma/backup.pgsql -j 5
sudo -Hu pleroma MIX_ENV=prod mix ecto.migrate
sudo -Hu postgres vacuumdb --all --analyze-in-stages
sudo -Hu pleroma MIX_ENV=prod mix pleroma.frontend install pleroma-fe
systemctl start pleroma
```
After that, the uploads directory, custom emoji, and theme will need to go back in place, but it should be 99% working.