DockerなしでDiscourseをデプロイする

私のソリューションに関する詳細:

  1. Nginx 設定:
    リバースプロキシ (haproxy) の背後では、/var/discourse/config/nginx-config-sample.conf/etc/nginx/sites-enabled/discourse.conf または類似のターゲットにコピーし、listen <yourreverseproxyport> (必要に応じて) と server_name_ をホスト名 (subdmain.example.com) に置き換える必要があります。それ以外は変更しないでください。
  2. ページが表示されない(「おっと」メッセージ)および管理者登録メールが機能しない:
    Magick が、最初の起動時の管理者登録ページ後にページが表示されない原因でした。ログに示されたファイル /var/www/discourse/lib/letter_avatar.rb:112 の 112 行目を調べたところ、応答しない magick コマンドが 2 つありました。convert は応答したので、この行の magickconvert に置き換えました。これらの修正後、別のエラーがログに記録されました。ファイルから提供されたコマンドで同じ手順を試したところ、magick コマンドは機能せず、convert も失敗しました。注:magick --version は 7.x で、convert --version は 6.x でした。原因は、apt で imagemagick を最初にインストールし、次にソースから magick 7 をインストールしたことでした。競合があり、magick は convert コマンドを古いと判断しました。そのため、magick 7 のみでスクリプトを再実行しました。これにより問題はすぐに解決し、数日間待っていたブランドの新しいページが表示され、メールも機能しました!Magick は本当に魔法です。
  3. まだ混合コンテンツの問題が残っていますが、ウェブサイトは正常に動作しています。
    注:puma.rb の行 bind ENV.fetch("PUMA_BIND", "tcp://#{ENV['PUMA_BIND_ALL'] ? '' : '127.0.0.1:'}3000") は、(最初の投稿の修正として) このようにする必要があります。
  4. 「3.」を編集、https強制について Discourse の場合:正確にはわかりませんが、ブラウザに「混合コンテンツ」の警告が表示されなくなりました(キャッシュの更新のためかもしれません)。そのため、すべて順調です。スクリプトを完成させるだけです。
「いいね!」 3

確認できました!
ImageMagick v7 で Ooops 問題が解決しました!
テストした限りでは、完全に動作しています。
残りの機能もテストして、できるだけ早く報告します。

「いいね!」 1

テストのために、puma を実行する際に環境変数 PUMA_BIND を設定しました。

ImageMagick については、何らかの理由で Discourse が webUI での画像変換に失敗しています。大きな画像をアップロードすると、親切にも変換を拒否します…まだ問題をデバッグ中です。

デバッグの進捗はありますか? こちらはmagickに取り組んでいます。
約50KBの画像では、ブラウザに次のようなポップアップが表示されます。
timeout -k 40.0 20 magick gif:/tmp/RackMultipart20250927-23598-xrrp6e.gif -auto-orient -background white -interlace none -flatten -debug all -quality 90 jpg:/tmp/image20250927-23598-9ujq3d.jpg
そして画像は読み込まれません。
サイズが大きい場合は、ポップアップは表示されませんが、ローディングホイールが無限に回転し、結果は得られません。/var/www/discourse/logにはエラーは記録されていません。

私も同じ問題です :joy::sob:
brew リポジトリの imagemagick を使用して実行できるようになりました。

しかし、画像が 3MB を超えると失敗します…おそらく、非常に制限的なポリシー構成を設定したのでしょう。

試してみてください!!!

Docker のインストールをテストしていますが、nginx、unicorn、redis、postgresql、その他すべてを 1 つのコンテナにデプロイするのは非常に愚かだと思います…まったく意味がありません。大規模なデプロイメント用のインフラストラクチャ ドキュメントもありません…IT で 20 年以上働いてきましたが、そのようなインフラストラクチャを使用すると、近い将来問題が発生することしか見えません。

「Docker The Space Eater」(Dormammu のように)については言うまでもありません :rofl::rofl:

この問題は、最後に説明されている以下の解決策で解消されました。

デバッグ 1: bundle db:create の出力、および初回起動時のログ:


unknown OID 21096: ‘embeddings’ の型を認識できませんでした。文字列として扱われます。
pngquant worker: pngquant が見つかりません。適切なバイナリを提供するか、このワーカーを無効にしてください (–no-pngquant 引数またはオプション経由の :pngquant => false)
oxipng worker: oxipng が見つかりません。適切なバイナリを提供するか、このワーカーを無効にしてください (–no-oxipng 引数またはオプション経由の :oxipng => false)
jhead worker: jhead が見つかりません、jpegtran が見つかりません。適切なバイナリを提供するか、このワーカーを無効にしてください (–no-jhead 引数またはオプション経由の :jhead => false)
jpegoptim worker: jpegoptim が見つかりません。適切なバイナリを提供するか、このワーカーを無効にしてください (–no-jpegoptim 引数またはオプション経由の :jpegoptim => false)

デバッグ 2: ファイルを使用した一部のマジックコマンドの出力:

この画像形式のデコードデリゲートがありません

この最後の問題は、こちらで言及されています。

解決策はこちらです(マジックとフォーマットプラグインをインストールします)。

t=$(mktemp) && \
wget 'https://dist.1-2.dev/imei.sh' -qO "$t" && \
bash "$t" && \
rm "$t"

その後、アップロードサイズは最大518KBになります。それ以上はできません。これは画像のみです。他のすべてのドキュメント、オーディオ、ビデオのアップロードは機能します。

残りの問題に対する一時的な解決策:
管理設定、discourse.conf、nginx/sites-enables/discourse.conf、gitフォルダを確認しました。最終的にAdminPanel/Parameters/Filesで「Composer media optimization image enabled」を無効にしたところ、すべて正常に機能するようになりました。任意の画像をアップロードできます。

はい、IMEIはbrewを使用するのとほぼ同じソリューションですが、ディスク容量を約2GBも消費することはないと思います:rofl::rofl::sob::face_with_symbols_on_mouth::face_with_symbols_on_mouth::face_with_symbols_on_mouth:

アップロードの最大ファイルサイズに関するあなたのソリューションを確認します。

また、「無料」でメールを送信するソリューションにも苦労しています(初期段階なので、mailtrap/mailgun/etc…と契約したくありません)。

メールサーバーをインストールしてみてはどうですか?私は自分でメールサーバーを構築し、インストールをスクリプト化しました。興味があれば教えてください。

承知しました!指示またはgitリポジトリをDMで送ってください!:grinning_face_with_smiling_eyes:

私は何年も前にセルフホスト型メールサーバーの使用をやめました…

rake assets:precompile を実行すると、「No such file or directory - brotli」というエラーが表示されました。パッケージマネージャーでインストールしてください。

「いいね!」 2

エラーが発生していることがわかりました。

bundler: failed to load command: puma (/home/mry/.rbenv/versions/3.4.6/bin/puma)
/home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/puma-7.0.4/lib/puma/cluster.rb:472:in 'Puma::Cluster#run': undefined method 'wait_readable' for nil (NoMethodError)

            if read.wait_readable([0, @next_check - Time.now].max)
                   ^^^^^^^^^^^^^^
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/puma-7.0.4/lib/puma/launcher.rb:202:in 'Puma::Launcher#run'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/puma-7.0.4/lib/puma/cli.rb:73:in 'Puma::CLI#run'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/puma-7.0.4/bin/puma:10:in '<top (required)>'
        from /home/mry/.rbenv/versions/3.4.6/bin/puma:25:in 'Kernel#load'
        from /home/mry/.rbenv/versions/3.4.6/bin/puma:25:in '<top (required)>'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:59:in 'Kernel.load'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:59:in 'Bundler::CLI::Exec#kernel_load'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:23:in 'Bundler::CLI::Exec#run'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli.rb:452:in 'Bundler::CLI#exec'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/command.rb:28:in 'Bundler::Thor::Command#run'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in 'Bundler::Thor::Invocation#invoke_command'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor.rb:538:in 'Bundler::Thor.dispatch'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli.rb:35:in 'Bundler::CLI.dispatch'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/base.rb:584:in 'Bundler::Thor::Base::ClassMethods#start'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli.rb:29:in 'Bundler::CLI.start'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/exe/bundle:28:in 'block in <top (required)>'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/friendly_errors.rb:117:in 'Bundler.with_friendly_errors'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/exe/bundle:20:in '<top (required)>'
        from /home/mry/.rbenv/versions/3.4.6/bin/bundle:25:in 'Kernel#load'
        from /home/mry/.rbenv/versions/3.4.6/bin/bundle:25:in '<main>'

Puma が再起動します。これを防ぐにはどうすればよいですか?

編集: これは Ruby 3.4.0 以降の Puma に関連する問題 のようです。YJIT を無効にすることで解決しました。

では、3.3.7を使用してください。これは私が使用しているバージョンです。

Gemsを再ダウンロードするのが面倒なので、YJITを無効にして3.4.6を使い続けます。