ローカルログインが無効化されている場合

こんにちは、

Discourseを初めて利用し、DigitalOceanでホストしているフォーラムを立ち上げているのですが、SMTPまたはポートに関連する問題が発生しています。そこで、Googleログインやソーシャルログインを採用しており、ローカルでのサインアップ/ログインが不要な場合でも問題ないか、ご経験をお聞かせください。

デフォルトでは、DO では SMTP がブロックされています。 メールを使用したい場合は、どこかにプロキシを用意する必要があります。多くの人が、クラウド上の 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日以降、ポート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
  • これが問題の主な原因でしょう:カーリークォート(装飾的な引用符)を使用しています。YML ファイルはこれを好まず、通常はエラーになります。単一または二重のストレートクォート('password' または "password")を使用する必要があります。
  • サブドメインに標準インストールを行いましたか、それともルートドメインインストールですか?前者の場合、forum.dobato.audiscourse.dobato.au のような形式にする必要があります(ネームサーバーの設定を確認してください)。ルートドメインインストールを意図していない限り、これを修正する必要があります。
  • この行は不要です。削除してください。
  • Resend はこのポートをサポートしており動作する可能性はありますが、標準は 587 です。
  • この行も不要です。メーラーに STARTTLS の開始を強制する意味はありません。基盤となる Ruby メーラー(ActionMailer)は enable_starttls_auto: true を使用しており、サーバー(Resend)が対応していれば自動的に接続を 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: 587
DISCOURSE_NOTIFICATION_EMAIL: noreply@dobato.au

YML ファイルは構文とスペースに非常に厳格です。既存のテンプレートファイルの書式を維持することが重要です(discourse_docker/samples/standalone.yml at main · discourse/discourse_docker · GitHub を参照してください)。

しかし、DigitalOcean は 587 をブロックしているため、2525 が使用されています。

あ、DOのこと忘れてたわ、笑。:woman_facepalming:t2: だいぶ前に移行したからな。頭の中では Resend と Hetzner しか考えてなかった。だから 2525 を使えばいい(移行時に切り替えたことを今思い出した)。編集:投稿を修正した。ありがとう、Jakee

上記の優れたアドバイスに加えて、rake emails:testTroubleshoot email on a new Discourse install を参照)を実行して直ちにエラーを表示させることが、おそらく役立つでしょう。

私のサイトがクラッシュしました。新しいサイトで会員数も少ないため、カスタムページと会員データをどうダウンロードすればよいか分かりません。SMTPは全く使いたくありません。

そのような事態になってしまい、お気の毒です。

はい、おそらく yml ファイルに問題があるのでしょう。メールアドレスやパスワードを伏せて、ファイル全体をここに貼り付けてください。起動までこんなに苦労するはずはありません。

気になったのですが、DigitalOcean で使用しているドロプレットのサイズはどれくらいですか?

ネームサーバーの設定が正しく行われているか確認はできましたか?

こんにちは、

私は Basic / 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 ファイルが正しくありません。

これは活発ではないフォーラムであれば動作するはずです。スワップファイルは設定されていますか?コマンドラインで free -h を実行し、その出力をここに投稿してください。

curl: (52) サーバーからの返信が空です
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

DiscourseをAmazon Lightsailで運用するのはどうでしょうか?Amazon SESのSMTPメール機能も利用可能です。

@abeen これらを直線クォートに変更しましたか?

代わりにこれらを使用してみてください:

"

私は「 」、二重引用符を持っています

なるほど。Lightsail で SES を使って Discourse をホストすることは可能です(ここにはそうしているユーザーもいます)。もしまだ試していないなら、ポート 2525 を試してみるのも一案です。ただ、これらのポートに関する手間を避けたい場合は、Hetzner や Lightsail などの別のホスティングサービスへ移行する選択肢もあります。

これで再構築があまりにも早く終了してしまいます。なぜでしょうか?