Какие самые простые, но надёжные способы гарантируют, что форум на Discourse всегда можно будет восстановить?

За эти годы я помогал друзьям, которые размещали свои форумы самостоятельно.

Я убедил их арендовать сервер Hetzner, настроил автоматическое резервное копирование в Discourse, а затем синхронизировал эти бэкапы с моим Google Drive с помощью rclone и cron-задачи. Каждый администратор каждого форума имеет доступ к своим собственным резервным копиям в моём Drive. Для человека, не являющегося системным администратором, это, на мой взгляд, самое простое и безопасное решение.

Несколько раз я замечал, что токены в rClone не обновлялись (хотя бы на одном из инстансов), и мне приходилось настраивать его заново. Поскольку у меня нет никаких уведомлений о том, что синхронизация не удалась, я просто периодически вручную проверяю свой Drive, чтобы убедиться, что последние резервные копии свежие.

Если бы вы добровольно помогали кому-то или какой-либо организации разместить форум, какое решение вы бы предложили, чтобы гарантировать наличие резервных копий в надёжном месте, которые можно безопасно восстановить, если форум по какой-либо причине выйдет из строя?

Я делаю резервные копии с помощью rsync по SSH, используя ограниченный аккаунт, и запускаю это из cron. Хотя на самом деле я не делаю этого, но один из моих модераторов — да. Я создаю и скачиваю резервную копию, когда выполняю обновление. Таким образом, в первом случае мы можем потерять несколько дней активности на форуме, а во втором — месяц или больше.

Мне, пожалуй, стоит настроить собственный crontab. Я также мог бы увеличить частоту резервного копирования — сейчас она установлена в 2 дня.

В обоих случаях мы должны быть достаточно компетентными администраторами собственных систем. Форум пропадёт только в том случае, если мы оба потеряем свои скачанные копии и собственные резервные копии, а также сам сервер.

Редактирование: хорошее замечание, необходимо иметь какой-то положительный контроль того, что процесс работает, и хотя бы поверхностное представление о том, что скачанные резервные копии в порядке.

Я не уделял особого внимания домену: в идеале он тоже должен иметь двойное администрирование и совместное владение в какой-то форме. Если мы потеряем контроль, форуму придётся появиться на новом домене — он мог бы отправлять дайджесты и уведомления членам по электронной почте, так что, при некотором доверии, они могли бы вернуться.

Для резервного копирования я бы рекомендовал S3. Если хотите быть на стороне безопасности, делайте ежедневные резервные копии форума. А если хотите быть на стороне максимальной безопасности — делайте резервные копии VPS.

Есть также:

Ну, я делаю резервное копирование базы данных каждый час :man_shrugging: Это тот же принцип, что и в электронной коммерции — нужно учитывать, какой максимальный период времени мы можем и/или хотим восстановить.

Резервное копирование на S3 и на внешний диск при помощи restic

Согласен. Если у вас есть файлы YML с конфигурацией S3, а сами резервные копии хранятся в S3, то для восстановления форума на новом сервере вам понадобятся только эти файлы YML. В качестве дополнительного преимущества это позволяет не забивать диск резервными копиями.

ВАЖНО: Не забывайте оплачивать счета за бакет S3, а также за виртуальную машину. Думаю, у Cloudflare тарифы самые дешевые?

У меня был случай, когда кто-то потерял доступ к своему аккаунту AWS, и все изображения были утеряны. Так что просто напоминание об оплате счетов — это расходы, которые нельзя недооценивать.

Именно так — не храните все копии своих данных у одного провайдера.

Я предпочитаю хранить три зашифрованные копии: одну на хосте, другую в облаке (с совместимостью с S3) и третью на оптическом диске или USB-накопителе.

Я планирую делать резервные копии в децентрализованном хранилище и в настоящее время изучаю надёжность доступных вариантов.

Сейчас я выполняю резервное копирование и загрузку данных один раз в день.
База данных резервируется с помощью встроенной функции резервного копирования Discourse, а оригинальные изображения ежедневно бэкапятся с помощью restic в режиме инкрементального резервного копирования.
Всё загружается в облачное хранилище, но в настоящее время поддерживается загрузка только в одно хранилище. В будущем было бы желательно иметь возможность загружать данные в несколько облачных хранилищ одновременно.

Используйте резервное копирование на внешних серверах и объектное хранилище. Я применяю Cloudflare R2 (совместимый с S3) и уже не раз восстанавливал данные на разных серверах. Это легко в управлении и восстановлении. Также используйте сборку с двумя контейнерами.

Полезный подход к таким вопросам — рассмотреть модель угроз.

Мы уже видели некоторые из них:

  • пожар уничтожает здание, в котором находится ваш сервер
  • вы теряете контроль над аккаунтом у провайдера
  • лицо, управляющее вашим доменом, становится постоянно недоступным
  • вы теряете доступ к электронной почте
  • ваши резервные копии оказываются устаревшими, потому что что-то перестало работать
  • вы не можете восстановить резервные копии по какой-либо технической причине
  • администратор вашего форума постоянно недоступен или не готов сотрудничать

Коротко говоря:

  • здания горят или затопляются
  • люди ссорятся или умирают
  • компании меняют политику и принимают произвольные решения
  • любая единственная копия данных может оказаться испорченной или недоступной

Рассмотрите каждый из этих факторов для каждого человека, компании и копии, и посмотрите, как выглядит ваша уязвимость.