以安全/匿名的方式将备份恢复到本地实例

我想在本地对插件、主题等进行一些实验,以避免破坏真实论坛的风险。但将本地环境配置成与真实论坛完全一致比较困难,因此如果能直接将备份恢复到本地实例就太好了。

但我该如何操作才能避免诸如从本地实例向真实用户发送邮件等风险?此外,是否还有其他我尚未意识到的潜在问题?

是否有任何方法可以对备份中的所有用户数据进行匿名化处理(至少移除邮箱地址)?或者能否恢复除用户数据之外的所有内容?

在 Rails 控制台中运行以下代码以匿名化除管理员外的所有用户:

acting_user = User.find(-1)
User.all.each do |u|
  next if u.staff? 
  user = UserAnonymizer.new(u, acting_user).make_anonymous
end

禁用所有出站邮件不是更简单吗?这是一个全局站点设置。

是的,设置这个选项可能更简单。不过据我理解,备份会覆盖所有设置,因此在恢复完成到禁用邮件发送之间,仍有可能发出一些邮件,除非源实例在备份期间也已禁用了邮件功能。


顺便一提,我意识到使用独立的服务器和域名可能比本地 Docker 开发环境更好。

据我理解,备份恢复不会影响 app.yml 文件。因此,如果我在测试服务器的 app.yml 中不配置 SMTP,它是否就没有机会发送任何邮件?

根据包括《加州消费者隐私法案》(CCPA)在内的许多法律,在非匿名化的生产数据用于开发和测试环境被视为非法数据处理。在可能存在漏洞、数据库位于笔记本电脑上或由非授权人员访问的系统中,数据泄露的风险更高。

不会,因为在恢复操作期间 Sidekiq 会被暂停。

是的,但我指的是恢复完成后(据我所知,之后所有进程会立即恢复),而不是在恢复过程中,而且是在我更改此设置以禁用邮件之前。

抱歉,我的回答确实不完整。当恢复 Discourse 备份时,作为恢复操作的一部分,出站邮件会被自动禁用。恢复后需要显式启用它们。

您仍需要手动禁用已配置的 POP 轮询,否则您的测试实例可能会开始处理本应由真实实例接收的入站邮件。

谢谢 :slight_smile: 我想我使用的是另一种轮询模式,详见 Configure direct-delivery incoming email for self-hosted sites with Mail-Receiver

另一个可能应该禁用的设置是 在 robots.txt 中允许索引

此外,我还添加了 https://meta.discourse.org/t/restrict-access-to-your-discourse-site-with-http-basic-authentication/168192。

管理员会收到提醒他们启用出站邮件的通知吗?

是的,就是页面顶部的警告。