diff --git a/CHANGELOG.md b/CHANGELOG.md index a0b96abda..d45df9e08 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -46,6 +46,8 @@ - Update PublicApiController, refactor follower/following api endpoints to consume FollowerService instead of querying database ([b39f91b4](https://github.com/pixelfed/pixelfed/commit/b39f91b4)) - Update follower/following profile layout, optimized for mobile devices and use FollowerService ([78a5575d](https://github.com/pixelfed/pixelfed/commit/78a5575d)) - Update sidebar menu, when clicking on the active feed/timeline buttons force a reload and scroll to top of feed ([78a5575d](https://github.com/pixelfed/pixelfed/commit/78a5575d)) +- Update InboxPipeline, increase timeout from 60s to 300s ([d1b888b5](https://github.com/pixelfed/pixelfed/commit/d1b888b5)) +- Update backup config, fixes #3793, #3920, #3931 ([b0c4cc30](https://github.com/pixelfed/pixelfed/commit/b0c4cc30)) - ([](https://github.com/pixelfed/pixelfed/commit/)) ## [v0.11.4 (2022-10-04)](https://github.com/pixelfed/pixelfed/compare/v0.11.3...v0.11.4) diff --git a/config/backup.php b/config/backup.php index 9e1b99717..f4a65df43 100644 --- a/config/backup.php +++ b/config/backup.php @@ -8,7 +8,7 @@ return [ * The name of this application. You can use this name to monitor * the backups. */ - 'name' => config('app.name'), + 'name' => env('APP_NAME', 'pixelfed-backup'), 'source' => [ @@ -27,6 +27,7 @@ return [ * Directories used by the backup process will automatically be excluded. */ 'exclude' => [ + base_path('.git'), base_path('vendor'), base_path('node_modules'), ], @@ -34,29 +35,60 @@ return [ /* * Determines if symlinks should be followed. */ - 'followLinks' => false, - ], + 'follow_links' => false, - 'mysql' => [ - 'dump' => [ - 'useSingleTransaction' => true, - 'useQuick' => true, - ], + /* + * Determines if it should avoid unreadable folders. + */ + 'ignore_unreadable_directories' => false, + + /* + * This path is used to make directories in resulting zip-file relative + * Set to `null` to include complete absolute path + * Example: base_path() + */ + 'relative_path' => null, ], /* * The names of the connections to the databases that should be backed up * MySQL, PostgreSQL, SQLite and Mongo databases are supported. + * + * For a complete list of available customization options, see https://github.com/spatie/db-dumper */ + + 'mysql' => [ + 'dump' => [ + 'useSingleTransaction' => true, + 'useQuick' => true + ], + ], + 'databases' => [ 'mysql', ], ], /* - * The database dump can be gzipped to decrease diskspace usage. + * The database dump can be compressed to decrease diskspace usage. + * + * Out of the box Laravel-backup supplies + * Spatie\DbDumper\Compressors\GzipCompressor::class. + * + * You can also create custom compressor. More info on that here: + * https://github.com/spatie/db-dumper#using-compression + * + * If you do not want any compressor at all, set it to null. */ - 'gzip_database_dump' => true, + 'database_dump_compressor' => Spatie\DbDumper\Compressors\Bzip2Compressor::class, + + /* + * The file extension used for the database dump files. + * + * If not specified, the file extension will be .archive for MongoDB and .sql for all other databases + * The file extension should be specified without a leading . + */ + 'database_dump_file_extension' => '', 'destination' => [ @@ -69,27 +101,47 @@ return [ * The disk names on which the backups will be stored. */ 'disks' => [ - 'local' + 'local', ], ], + + /* + * The directory where the temporary files will be stored. + */ + 'temporary_directory' => storage_path('app/backup-temp'), + + /* + * The password to be used for archive encryption. + * Set to `null` to disable encryption. + */ + 'password' => env('BACKUP_ARCHIVE_PASSWORD'), + + /* + * The encryption algorithm to be used for archive encryption. + * You can set it to `null` or `false` to disable encryption. + * + * When set to 'default', we'll use ZipArchive::EM_AES_256 if it is + * available on your system. + */ + 'encryption' => 'default', ], /* * You can get notified when specific events occur. Out of the box you can use 'mail' and 'slack'. - * For Slack you need to install guzzlehttp/guzzle. + * For Slack you need to install laravel/slack-notification-channel. * * You can also use your own notification classes, just make sure the class is named after one of - * the `Spatie\Backup\Events` classes. + * the `Spatie\Backup\Notifications\Notifications` classes. */ 'notifications' => [ 'notifications' => [ - \Spatie\Backup\Notifications\Notifications\BackupHasFailed::class => ['mail'], - \Spatie\Backup\Notifications\Notifications\UnhealthyBackupWasFound::class => ['mail'], - \Spatie\Backup\Notifications\Notifications\CleanupHasFailed::class => ['mail'], - \Spatie\Backup\Notifications\Notifications\BackupWasSuccessful::class => ['mail'], - \Spatie\Backup\Notifications\Notifications\HealthyBackupWasFound::class => ['mail'], - \Spatie\Backup\Notifications\Notifications\CleanupWasSuccessful::class => ['mail'], + \Spatie\Backup\Notifications\Notifications\BackupHasFailedNotification::class => ['mail'], + \Spatie\Backup\Notifications\Notifications\UnhealthyBackupWasFoundNotification::class => ['mail'], + \Spatie\Backup\Notifications\Notifications\CleanupHasFailedNotification::class => ['mail'], + \Spatie\Backup\Notifications\Notifications\BackupWasSuccessfulNotification::class => ['mail'], + \Spatie\Backup\Notifications\Notifications\HealthyBackupWasFoundNotification::class => ['mail'], + \Spatie\Backup\Notifications\Notifications\CleanupWasSuccessfulNotification::class => ['mail'], ], /* @@ -99,7 +151,12 @@ return [ 'notifiable' => \Spatie\Backup\Notifications\Notifiable::class, 'mail' => [ - 'to' => '', + 'to' => env('BACKUP_EMAIL_ADDRESS', ''), + + 'from' => [ + 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), + 'name' => env('MAIL_FROM_NAME', 'Example'), + ], ], 'slack' => [ @@ -115,6 +172,20 @@ return [ 'icon' => null, ], + + 'discord' => [ + 'webhook_url' => '', + + /* + * If this is an empty string, the name field on the webhook will be used. + */ + 'username' => '', + + /* + * If this is an empty string, the avatar on the webhook will be used. + */ + 'avatar_url' => '', + ], ], /* @@ -122,22 +193,15 @@ return [ * If a backup does not meet the specified requirements the * UnHealthyBackupWasFound event will be fired. */ - 'monitorBackups' => [ + 'monitor_backups' => [ [ - 'name' => config('app.name'), - 'disks' => ['local'], - 'newestBackupsShouldNotBeOlderThanDays' => 1, - 'storageUsedMayNotBeHigherThanMegabytes' => 5000, + 'name' => env('APP_NAME', 'pixelfed-backup'), + 'disks' => ['local'], + 'health_checks' => [ + \Spatie\Backup\Tasks\Monitor\HealthChecks\MaximumAgeInDays::class => 1, + \Spatie\Backup\Tasks\Monitor\HealthChecks\MaximumStorageInMegabytes::class => 5000, + ], ], - - /* - [ - 'name' => 'name of the second app', - 'disks' => ['local', 's3'], - 'newestBackupsShouldNotBeOlderThanDays' => 1, - 'storageUsedMayNotBeHigherThanMegabytes' => 5000, - ], - */ ], 'cleanup' => [ @@ -152,38 +216,39 @@ return [ */ 'strategy' => \Spatie\Backup\Tasks\Cleanup\Strategies\DefaultStrategy::class, - 'defaultStrategy' => [ + 'default_strategy' => [ /* * The number of days for which backups must be kept. */ - 'keepAllBackupsForDays' => 7, + 'keep_all_backups_for_days' => 7, /* * The number of days for which daily backups must be kept. */ - 'keepDailyBackupsForDays' => 16, + 'keep_daily_backups_for_days' => 16, /* * The number of weeks for which one weekly backup must be kept. */ - 'keepWeeklyBackupsForWeeks' => 8, + 'keep_weekly_backups_for_weeks' => 8, /* * The number of months for which one monthly backup must be kept. */ - 'keepMonthlyBackupsForMonths' => 4, + 'keep_monthly_backups_for_months' => 4, /* * The number of years for which one yearly backup must be kept. */ - 'keepYearlyBackupsForYears' => 2, + 'keep_yearly_backups_for_years' => 2, /* * After cleaning up the backups remove the oldest backup until * this amount of megabytes has been reached. */ - 'deleteOldestBackupsWhenUsingMoreMegabytesThan' => 5000, + 'delete_oldest_backups_when_using_more_megabytes_than' => 5000, ], ], + ];