Compare commits

...

5 commits

View file

@ -10,9 +10,8 @@ let
user = "misskey-backup"; user = "misskey-backup";
group = user; group = user;
# shell script file to be sourced. must have values "MISSKEY_BACKUP_BUCKET" "MISSKEY_BACKUP_PREFIX" and "S3CFG"
# $S3CFG must be a path to a .s3cfg file compatible with s3cmd
backupConfigFile = "/etc/misskey-backup/conf"; backupConfigFile = "/etc/misskey-backup/conf";
s3Cfg = "/etc/misskey-backup/s3cfg";
backupScript = pkgs.writeShellApplication { backupScript = pkgs.writeShellApplication {
name = "misskey-backup"; name = "misskey-backup";
@ -21,13 +20,36 @@ let
config.services.postgresql.package config.services.postgresql.package
s3cmd s3cmd
coreutils coreutils
age
]; ];
excludeShellChecks = [ "SC1091" ];
text = '' text = ''
source "${backupConfigFile}" configFile="$1"
pg_dump misskey | gzip | s3cmd put --config "$S3CFG" - "s3://$MISSKEY_BACKUP_BUCKET/\$\{MISSKEY_BACKUP_PREFIX}misskey-pgdump-$(date --iso-8601).sql.gz" s3cfg="$2"
ageRecipient="age17ckyc69njpryytc63ynn545jswyucg28k5xg3043g3j6q38dxqwq0wzhm2"
bucket="$(cat "$configFile" | grep 'bucket=' | sed 's/bucket \?= \?')"
prefix="$(cat "$configFile" | grep 'prefix=' | sed 's/prefix \?= \?')"
s3Dir="s3://$bucket/\$\{prefix}misskey-$(date --iso-8601)"
echo "Uploading backups to '$s3Dir'"
function upload () {
name="$1"
age -r "$ageRecipient" | s3cmd put --config "$s3cfg" - "$s3Dir/$name.age"
}
echo "Uploading config"
tar -cz -C /srv/misskey/.config . | upload "config.tar.gz"
echo "Dumping postgres database..."
pg_dump misskey | gzip | upload "pg_dump.sql.gz"
echo "Uploading redis database..."
tar -cz -C /var/lib/redis-misskey . | upload "redis.tar.gz"
echo "Backup complete to '$s3Dir'"
''; '';
}; };
in { in {
@ -42,7 +64,7 @@ in {
enable = true; enable = true;
systemCronJobs = [ systemCronJobs = [
# run every monday at ass in the morning, EST" # run every monday at ass in the morning, EST"
"0 8 0 0 1 ${user} ${backupScript}" "0 8 0 0 1 ${user} ${backupScript} ${backupConfigFile} ${s3Cfg}"
]; ];
}; };
} }