Backups

We backup the persistent data storage of vmst.io multiple times per day/week and to different locations.

Database Backups

Posts made to vmst.io are stored in backend PostgreSQL databases with Redis used as a key-value store and timeline cache.

  • For the backup of PostgreSQL, we use pg_dump with some custom scripts that process each task and then fire off notifications to our backend channels.
  • Full database backups are currently made every week and replicated twice across geographies.
  • In addition to full backups, DigitalOcean provides transaction-level rollback functionality as part of their managed database service.

Media/CDN Store Backups

  • The CDN/media data is synced directly to another DigitalOcean object store via the rclone utility.
  • This is done using some custom scripts that process each task and then fire off notifications to our backend channels.
  • CDN backups currently run every day.
  • Only the latest copy of CDN data is retained.

Configuration Backups

  • All configuration files for core applications, documentation, and web clients are stored on GitHub with changes committed there before being applied to servers.

Backup Image

We have a customized container image available from both Docker and GitHub container registries used for backup purposes. This image is designed for backup, replication, and maintenance of container-based Mastodon implementations. It includes rclone, PostgreSQL, and Redis utilities.

  • The version tags for the image represent the version of rclone used.
  • The image is based on Debian 12.
  • PostgreSQL utilities are based on version 16.
  • Redis utilities are based on version 7.

There are /root/backups and /root/scripts directories suitable for mounting and processing relevant files.

In order to use rclone, you'll need to mount an existing rclone.conf file to /root/.config/rclone/rclone.conf.