로컬 로그인이 비활성화된 경우

안녕하세요,

포럼을 시작했는데, Discourse에는 완전히 초보이며 DigitalOcean에 호스팅하고 있습니다. 이유를 알 수 없게 SMTP 또는 포트 관련 문제가 발생하고 있습니다. 혹시 구글 로그인이나 소셜 로그인을 사용하시는지, 그리고 로컬 가입/로그인이 포럼에 없어도 문제가 없는지 확인하고 싶었습니다.

SMTP는 DO에서 기본적으로 차단되어 있습니다. 메일을 사용하려면 어딘가에서 프록시를 찾아야 합니다. 많은 사람들이 클라우드에서 Discourse에 잘 작동하는 것이 Mailgun이라고 말하지만, 저는 그 부분에 대한 경험이 없습니다.

이것이 찾으시는 내용일 수 있습니다:

네, SMTP 없이 소셜 로그인(Discord, Google, …) 또는 Discourse ID(설정 불필요)를 사용할 수 있습니다. 다이제스트와 이메일 알림은 사용할 수 없게 되지만, 목표가 단순히 커뮤니티를 만드는 것이라면 참여도가 낮더라도 잘 작동할 것입니다(다이제스트는 사용자 유지에 도움이 되도록 설계되어 있음).

좋아요, Sendgrid, Mailgun, Resend를 모두 시도해 봤는데 같은 문제가 발생했어요. 포트 문제일 수도 있겠네요. 모든 포트를 시도해 봤습니다. 당분간 소셜 로그인이 정상적으로 작동하는지 확인하고, 로컬 로그인은 제거하려고 합니다.

로컬 로그인을 제거하려면 enable local logins 사이트 설정을 비활성화할 수 있습니다. 또한 Discourse ID를 사용해보실 수도 있습니다.

@abeen 안녕하세요, 환영합니다 :wave:
Digitalocean(그리고 다른 클라우드 서버)에서 Mailgun과 Resend를 사용한 자체 호스팅 설치를 여러 번 해봤습니다. 어떤 문제가 발생하는지 좀 더 자세히 알려 주실 수 있나요? app.yml 파일을 적절한 설정으로 편집하고 계신가요? 표준 설치 환경인 것으로 추정됩니다.

Resend의 경우:

  DISCOURSE_HOSTNAME: <forum.yourforum.etc>
  DISCOURSE_DEVELOPER_EMAILS: <your-email@emailaddress.com>
  DISCOURSE_SMTP_ADDRESS: smtp.resend.com
  DISCOURSE_SMTP_PORT: 2525
  DISCOURSE_SMTP_USER_NAME: resend
  DISCOURSE_SMTP_PASSWORD: "xxxx"

Mailgun의 경우

  DISCOURSE_HOSTNAME: <forum.yourforum.etc>
  DISCOURSE_DEVELOPER_EMAILS: <your-email@emailaddress.com>
  DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
  DISCOURSE_SMTP_PORT: 2525
  DISCOURSE_SMTP_USER_NAME: <your.mailgun.acccount.email>
  DISCOURSE_SMTP_PASSWORD: "xxxx"

DO는 다음과 같이 공지했습니다: “이전에 차단된 25 포트 외에도, 2025년 3월 6일부터 드롭렛(Droplet)에서 465 포트와 587 포트가 차단되었습니다. 이는 DigitalOcean 서버가 스팸 이메일 전송에 사용되지 않도록 하기 위한 조치입니다.”

관리자 패널에서 다음 메시지를 확인했습니다.
“실패한 이메일 작업이 30개 있습니다. app.yml 파일을 확인하고 메일 서버 설정이 올바른지 점검하십시오. Sidekiq에서 실패한 작업 보기.”

resend API를 다시 생성하고, 포트를 587로 변경했으며, 2525로도 시도해 보았습니다. 하지만 제 환경에서는 아무것도 작동하지 않습니다.

제 yaml 설정은 다음과 같습니다.


LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
DISCOURSE_HOSTNAME: dobato.au
DISCOURSE_DEVELOPER_EMAILS: myemail@outlook.com
DISCOURSE_SMTP_ADDRESS: smtp.resend.com
DISCOURSE_SMTP_USER_NAME: resend
DISCOURSE_SMTP_PASSWORD: “re_my password here”
DISCOURSE_SMTP_PORT: 2525
DISCOURSE_SMTP_ENABLE_START_TLS: true
DISCOURSE_NOTIFICATION_EMAIL: noreply@dobato.au
DISCOURSE_SMTP_DOMAIN: dobato.au
  • 이것은 아마도 문제를 일으키는 주요 원인일 것입니다: 당신은 곡선 따옴표(curly quotes)를 사용하고 있습니다. YML 파일은 이를 허용하지 않으며 보통 오류가 발생합니다. 'password' 또는 "password"와 같은 직선 따옴표(single or double straight quotes)를 사용해야 합니다.
  • 서브도메인으로 표준 설치를 했나요, 아니면 루트 도메인으로 설치했나요? 전자인 경우, forum.dobato.au 또는 discourse.dobato.au와 같은 형태여야 합니다(네임서버에 설정된 내용을 확인하십시오). 루트 도메인 설치를 의도한 것이 아니라면, 이 부분을 수정해야 합니다. 포럼이 서브도메인에 있다면 DISCOURSE_NOTIFICATION_EMAIL: noreply@dobato.au도 변경해야 합니다.
  • 이 줄은 불필요하므로 삭제하십시오.
  • 이 줄은 필요하지 않습니다. 메일 전송기에 STARTTLS를 강제하는 것은 의미가 없습니다. 기본 루비 메일 전송기(ActionMailer)는 enable_starttls_auto: true를 사용하므로, 서버(Resend)가 TLS를 지원하면 자동으로 연결을 TLS로 업그레이드합니다. 이 줄을 삭제하십시오.

올바른 app.yml 섹션은 다음과 같이 보아야 합니다:

DISCOURSE_HOSTNAME: dobato.au # (이것을 확인하십시오 - 부정확할 수 있습니다!)
DISCOURSE_DEVELOPER_EMAILS: myemail@outlook.com
DISCOURSE_SMTP_ADDRESS: smtp.resend.com
DISCOURSE_SMTP_USER_NAME: resend
DISCOURSE_SMTP_PASSWORD: "re_actual_api_key_here" # 직선 따옴표에 유의!
DISCOURSE_SMTP_PORT: 2525
DISCOURSE_NOTIFICATION_EMAIL: noreply@dobato.au

YML 파일은 문법과 공백에 매우 엄격하므로, 기존 템플릿 파일의 형식을 유지하는 것이 중요합니다(discourse_docker/samples/standalone.yml at main · discourse/discourse_docker · GitHub 참고)

또한, app.yml 파일에 변경 사항을 적용한 후 재빌드(rebuild)해야 합니다:

cd /var/discourse
./launcher rebuild app

failed jobs in Sidekiq

우리는 당신의 포럼 관리자가 아니므로 해당 링크를 해결할 수 없습니다. :wink: 하지만 위에서 언급한 문제를 수정한 후, Sidekiq에서 실패한 이메일 작업 목록을 볼 수 있다면 Retry All을 클릭하여 대기열을 즉시 비우고 백업된 이메일들을 전송할 수 있습니다.
정말 삭제하고 싶다면(예: 자신에게 보낸 수백 통의 테스트 이메일이 쌓여서 메일이 범람하는 것을 원치 않는 경우): 같은 /sidekiq/retries 페이지로 가서 대신 Delete All을 클릭할 수 있습니다.

이 모든 내용은 네임서버의 도메인 설정에 적절한 기록이 있다고 가정합니다.

하지만 DigitalOcean은 587 포트를 차단하고 있으며, 그래서 2525 포트가 사용됩니다.

아, DO를 잊었네 ㅋㅋ :woman_facepalming:t2: 얼마 전에 그거에서 떠났거든. 머릿속에는 resend와 hetzner를 생각하고 있었어. 그래서 2525를 써 (이거도 마이그레이션할 때 바꿨던 거 기억나네).
수정: 내 글을 고쳤어. Jakee 고마워

위에서 제시된 훌륭한 조언 외에도, rake emails:test를 실행하면(Troubleshoot email on a new Discourse install 참조) 에러를 즉시 확인할 수 있어 도움이 될 것입니다.

내 사이트가 이제 충돌했습니다. 회원 수가 적은 신규 사이트인데, 내 커스텀 페이지와 회원 데이터를 어떻게 다운로드해야 할지 모르겠습니다. SMTP는 전혀 사용하지 않기를 바랍니다.

이런 일이 일어나고 있어서 정말 죄송합니다.

네, yml 파일이 깨진 것 같습니다. 이메일 주소와 비밀번호를 제외하고 전체 내용을 여기에 올려주세요. 이 정도는 이렇게까지 어렵게 설정되지 않아야 합니다.

참고로 Digitalocean에서 어떤 크기의 드롭레트를 사용하고 계신가요?

네임서버가 올바르게 구성되었는지 확인해 보셨나요?

안녕하세요,

기본 / 1 vCPU / 2 GB RAM / 50 GB 디스크 구성을 사용 중입니다.

env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
DISCOURSE_HOSTNAME: dobato.au
DISCOURSE_DEVELOPER_EMAILS: ``myemail@outlook.com
DISCOURSE_SMTP_ADDRESS: ``smtp.resend.com
DISCOURSE_SMTP_USER_NAME: resend
DISCOURSE_SMTP_PASSWORD: “re_mypassword”
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_ENABLE_START_TLS: true
DISCOURSE_NOTIFICATION_EMAIL: noreply@dobato.au
DISCOURSE_SMTP_DOMAIN: dobato.au
DISCOURSE_SMTP_AUTHENTICATION: login
DISCOURSE_SMTP_FROM_ADDRESS: noreply@dobato.au
UNICORN_WORKERS: 4

smtp를 사용하고 싶지 않습니다. 관련 명령어로 검색해 보니 - Nginx와 Unicorn이 실행되지 않는다는 문제가 나옵니다.

이전 포스트를 주의 깊게 읽어주세요. yml 파일이 잘못되었습니다.

비활성적인(non-busy) 포럼이라면 이 구성으로 작동해야 합니다. 스왑 파일이 아예 없는 건가요? 명령줄에서 free -h를 실행하고 출력을 여기에 올려주세요. 다음과 같은 형태여야 합니다(숫자는 더 작을 수 있음):

~# free -h
               total        used        free      shared  buff/cache   available
Mem:           3.7Gi       2.5Gi       324Mi       116Mi       1.2Gi       1.2Gi
Swap:          2.0Gi       366Mi       1.6Gi

curl: (52) Empty reply from server
root@dobato:~# free -h
total used free shared buff/cache available
Mem: 1.9Gi 201Mi 1.2Gi 4.0Mi 507Mi 1.6Gi
Swap: 2.0Gi 0B 2.0Gi

Amazon Lightsail에 대한 토론은 어떨까요? Amazon SES SMTP 이메일도 지원하거든요.

@abeen 이 부분을 직선 따옴표(straight quotes)로 변경해 보셨나요?

대신 다음을 사용해 보세요:

"

이것은 " (더블 쿼트)입니다

알겠습니다. Lightsail에 SES를 사용하여 Discourse를 호스팅하는 것이 가능합니다(여기서 그렇게 하는 사용자가 몇 분 계십니다). 아직 시도하지 않았다면 포트 2525를 사용해 볼 수도 있습니다. 하지만 이러한 포트 관련 문제를 피하고 싶다면 Hetzner나 Lightsail과 같은 다른 호스트로 이전하는 것도 방법입니다.

이 설정으로 재빌드(rebuild)가 너무 빨리 종료됩니다 .. 왜 그런지 모르겠어요?