Cloudflare Tunnelを使った家庭用インターネットへのDiscourseインストール

こんにちは。

R-Pi 4にDiscourseとCloudflaredをインストールし、元の投稿の指示に従いましたが、Discourseのホストとして何を入力すればよいかわかりません。Cloudflaredトンネルが転送するので、localhostを入力すればよいのでしょうか?
Falcoさん、お手伝いいただけますか?

ちなみに、スレッドを上げ直してすみません。

「いいね!」 2

このガイドでは、ドメインを所有している必要があります。そのため、ホストの値は、Discourse およびトンネル用に設定したドメインのルートまたはサブドメインのいずれかになります。

「いいね!」 2

ということは、ホストの値はDiscourseにしたいサブドメインになるということですか?

「いいね!」 2

はい、Discourse を配置したい URL になるはずです。

「いいね!」 3

本当ですか?
もしそうした場合、このエラーが発生します。


何か間違ったことをしたと思いますか?

Discourseのホスト名を、Discourseを配置したい正確なサブドメインに設定しました。
Cloudflare Oneのドキュメント(Set up your first tunnel · Cloudflare One docs
そして、元の投稿で説明されているとおりにDiscourseをインストールしました。私はかなり確信しています。

「いいね!」 2

ドメインを共有していただけますか?

DMでお送りしてもよろしいでしょうか?見ず知らずの人に見られたくありません。

「いいね!」 1

これで正しいドメインを設定したので、動作しますか?

「いいね!」 2

はい!起動しました!ご協力ありがとうございます!SMTPで使用しているメールプロバイダーであるMailJetで、確認メールが事前にブロックされるという問題が発生しています。

「いいね!」 2

投稿が新しいトピックに分割されました: MailJetの代替案はありますか?

投稿が既存のトピックにマージされました: MailJetの代替案はありますか?

こんにちは、インストールがうまくいきました!ちょっとした質問ですが、4GBのRAMを搭載したR-Pi 4 Model Bは、どのくらいの活動/メンバーを処理できると思いますか?

「いいね!」 2

それは良い質問ですね。Discourseのような複雑なシステムでは、ユーザー数とサーバー負荷の直接的な相関関係を把握するのは難しいため、Raspberry Piシステムにおける主なボトルネックはストレージIOPSであると認識するのが妥当です。

したがって、必要なリソースのほとんどがRAM内に収まっている限り、プロセスRSSとLinuxキャッシュの間で、スムーズな体験が得られるはずです。CloudflareがキャッシュCDNのように機能することもかなりの助けとなり、しばらくするとオブジェクトストレージをアップロードに使用する(S3とクローン)を使用することで、Piセットアップの寿命を延ばすことさえできます。

「いいね!」 5

Docker の一部でこのエラーが発生しました。

FAILED
--------------------
Pups::ExecError: /usr/local/bin/ruby -e 'if ENV["DISCOURSE_HOSTNAME"] == "discourse.example.com"; puts "Aborting! Domain is not configured!"; exit 1; end' がリターン #<Process::Status: pid 115 exit 1> で失敗しました
失敗場所: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec はパラメータ "/usr/local/bin/ruby -e 'if ENV[\"DISCOURSE_HOSTNAME\"] == \"discourse.example.com\"; puts \"Aborting! Domain is not configured!\"; exit 1; end'" で失敗しました
ブートストラップが終了コード 1 で失敗しました
** ブートストラップに失敗しました ** 上にスクロールして、以前のエラーメッセージを探してください。複数ある場合があります。
./discourse-doctor が問題を診断するのに役立つ場合があります。
9ba0db264ae559f3f748cc1e42a8683ea0b4e355b0d45da0f472afea7ff7c472

ドメインが正しく設定されていないことを意味します。機能させるには有効なドメインが必要です。再度 ./discourse-setup を実行するか、app.yml ファイルを編集して修正してください。

「いいね!」 1

返信ありがとうございます。
RockPi4に正常にデプロイできました :+1:

「いいね!」 3

こんにちは @Falco

ガイド通りに設定したつもりですが、奇妙なことに気づきました。

コンテナの設定では、SSLテンプレートをロードしておらず、DISCOURSE_FORCE_HTTPS 環境変数を true に設定しています。これが何をするかはわかりませんが、SiteSetting.force_httpstrue に設定し、管理ダッシュボードで無効化されないように非表示にするのだと思います。

私のCFトンネルの設定は次のとおりです。

ingress:
  - hostname: dc.example.com
    service: http://dc:80 # dc は私の Discourse スタンドアロンアプリコンテナ名です

問題は、http://dc.example.com にアクセスでき、HTTPS にリダイレクトされないことです。これは期待される動作でしょうか?

再現できますか?バグではないかと思います。

私の関連するCF設定は次のとおりです。

  • SSL/TLS > 概要 > SSL/TLS 暗号化モード: フル (フル(厳格)ではありません)
  • SSL/TLS > エッジ証明書 > HTTPS を常に使用: オフ

CFにリダイレクトを実行させることはわかっています(HTTPS を常に使用 または一括リダイレクトルールを使用)。しかし、force_https がオンの場合、Discourse がそれを処理し、すべての内部URIをリダイレクトすると想定していました。どう思われますか?

リダイレクトの問題はさておき、https://dc.example.com の閲覧は、DISCOURSE_FORCE_HTTPS または SiteSetting.force_https の値に関係なく正常に機能します。

編集: force_https が実際に何をしているのか理解していませんが(SSLテンプレートが含まれていない場合は何もしていないだけかもしれませんか?)、トンネルの設定は、Discourse が実際にすべてをHTTPSにリダイレクトした場合、そのままでは機能しないだろうことに気づきました。もしそうであれば、argotunnel は HTTP(service: http://dc:80 のような)で Discourse にヒットできないため、おそらく次のいずれかを行うべきです。

  • CFにリダイレクトを任せるか、または
  • Discourse に証明書を使用させ、Cloudflare が HTTPS(service: https://dc:443)で Discourse オリジンにヒットするようにする

いずれにしても、この点を考慮して、argotunnel ガイドを更新できるかもしれませんか?

「いいね!」 2

おっしゃる通りです。テストTLDの.devがHTTPSのみであることを知りませんでした。

これを回避するためにページルールを使用するようガイドを更新しました。ご報告ありがとうございます!

「いいね!」 2

しかし、質問があります。

Consolidated Pageviewshowで高い匿名ビューが見られます。CPUサーバーが60%になり、クローラーはわずかですが、DDoSによるものだと思います。しかし、DDoSから保護するにはどうすればよいですか?回答ありがとうございます。

「いいね!」 1

リバースプロキシとしてCloudflare(Cloudflared/Argo Tunnelとは別物)を使用している場合、標準でDDoS保護機能が利用できるはずです。DNSレコードの「オレンジ色の雲」で有効にしてください。

「いいね!」 1