백업을 로컬 인스턴스에 안전하고 익명화된 방식으로 복원하기

로컬 환경에서 플러그인, 테마 등을 조금 실험해 보고 싶습니다. 실제 포럼이 깨지는 위험을 피하기 위해서입니다. 하지만 로컬 인스턴스를 실제 포럼과 유사한 상태로 설정하는 것이 어렵기 때문에, 백업을 로컬 인스턴스로 복원할 수 있으면 좋겠습니다.

하지만 로컬 인스턴스에서 실제 사용자에게 이메일을 보내는 등의 위험을 피하려면 어떻게 해야 할까요? 또한 제가 인지하지 못하고 있는 다른 함정이 있을까요?

백업에 포함된 모든 사용자 데이터를 익명화(최소한 이메일을 제거)하는 방법이 있을까요? 아니면 사용자 데이터를 제외한 모든 것을 복원할 수 있는 방법이 있을까요?

스태프를 제외한 모든 사용자를 익명화하려면 rails 콘솔에서 다음을 실행하세요:

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

모든 발신 메일을 비활성화하는 게 더 간단하지 않나요? 이건 사이트 전역 설정이에요.

네, 아마 이 설정을 변경하는 것이 더 쉬울 것 같습니다. 다만 제 이해로는 백업이 모든 설정을 덮어쓰기 때문에, 복원 완료와 이메일 비활성화 사이에 일부 이메일이 발송될 가능성이 있습니다. 물론 원본 인스턴스가 백업 당시에도 이메일을 비활성화해 두었다면 별 문제가 없겠지만요.


참고로, 로컬 도커 개발 환경 대신 별도의 서버와 도메인을 사용하는 것이 더 나을 것 같다는 점을 깨달았습니다.

제 이해로는 백업 복원이 app.yml에는 영향을 주지 않는 것 같은데, 테스트 서버의 app.yml에 SMTP 설정을 입력하지 않으면 이메일을 발송할 기회가 전혀 없게 되는 건가요?

CCPA를 포함한 많은 법률에서, 개발 및 테스트 환경에 비가명식화된 프로덕션 데이터를 사용하는 것은 불법적 처리로 간주됩니다. 버그가 있을 수 있는 시스템, 노트북에 데이터베이스가 있는 경우, 또는 권한이 없는 개인이 접근할 수 있는 시스템에서는 데이터 유출 가능성이 더 높습니다.

아니요, 복원 작업 동안 Sidekiq가 일시 정지되므로 그렇지 않습니다.

네, 하지만 저는 복구 중에가 아니라, 복구가 완료된 후(제 이해로는 그 후 모든 프로세스가 즉시 재개되는 것 같은데)와 제가 이메일을 비활성화하기 위해 이 설정을 변경하기 전을 말씀드린 것입니다.

죄송합니다. 제 답변이 실제로는 불완전했습니다. Discourse 백업을 복원할 때, 복원 작업의 일부로 나가는 이메일이 자동으로 비활성화됩니다. 복원 후 명시적으로 활성화해야 합니다.

POP 폴링이 설정되어 있다면 수동으로 비활성화해야 합니다. 그렇지 않으면 테스트 인스턴스가 실제 인스턴스 대신 수신된 이메일을 처리하기 시작할 수 있습니다.

고마워요 :slight_smile: 다른 폴링 모드를 사용하는 것 같아요. Configure direct-delivery incoming email for self-hosted sites with Mail-Receiver

아마 비활성화해야 할 또 다른 설정은 allow index in robots txt입니다.

그리고 Restrict access to your Discourse site with HTTP Basic Authentication 도 추가했습니다.

관리자에게 발신 이메일을 활성화하라는 알림 메시지가 전송됩니까?

네, 페이지 상단의 경고 메시지입니다.