Задача Cron для синхронизации локальных резервных копий с DigitalOcean Spaces

Если логи Forbidden исходят от Discourse, а не от s3fs при попытке сохранения в бакет Spaces, то, скорее всего, у вас неверные учётные данные или неверное имя бакета.

Ах!

   Failed to list backups from S3:

Ага. Я думаю, это и есть проблема. Система пытается получить список бакетов, но не может. Я не совсем уверен, как это исправить, но именно эту проблему нужно решить, так что, возможно, стоит обновить тему. Если вы хотите исправить резервное копирование в S3, вы можете получить помощь здесь; если же вы настраиваете s3fs, вам, скорее всего, потребуется обратиться за помощью в другое место.

Попробуйте добавить эту переменную окружения в ваш app.yml:

  FORCE_S3_UPLOADS: 1

Правильно ли указан ваш endpoint? Посмотрите раздел Digital Ocean в статье Использование объектного хранилища для загрузки файлов (S3 и аналоги).