Ethsim2
(Ethan )
1
環境
- Discourse: latest tests-passed
- ホストOS: [Ubuntu 24.04 LTS / 24.04.3 LTS]
- インストール方法: 公式Dockerインストール、
./discourse-setup を実行
- プラットフォーム: VPS (Digital Ocean)
再現手順
-
/var/discourse から ./discourse-setup を実行します。
-
プロンプトでSMTP詳細を入力します。
-
セットアップを完了し、containers/app.yml を確認します。
期待される結果
app.yml には、たとえば次のような2つの異なるフィールドが含まれるはずです。
DISCOURSE_SMTP_USER_NAME: "user@example.com"
DISCOURSE_SMTP_PASSWORD: "p@ssw0rd!"
実際の結果
パスワードフィールドにユーザー名が先頭に付加されて書き込まれます。
DISCOURSE_SMTP_USER_NAME: "user@example.com"
DISCOURSE_SMTP_PASSWORD: "user@brevo.comp@ssw0rd!"
これにより、メール配信が失敗し、discourse-doctor が破損したパスワードを確認します。
注記
- プロンプトでパスワードを明示的に引用しても、結果は変わりません。
- パスワードには特殊文字(@、!)が含まれていますが、問題はYAMLの引用だけではありません。ユーザー名の文字列がパスワードの先頭に文字通り連結されています。
./discourse-setup を複数回実行しても再現可能です。
「いいね!」 1
sam
(Sam Saffron)
2
パスワードの特定の文字(@や!など)がバグの原因になっているかテストできますか?
Discourse-setupのsed/awkや高度なbashスクリプトは、メンテナンスを非常に難しくしています。@pfaffmanさんには何かアイデアがあるでしょうか?
「いいね!」 1
pfaffman
(Jay Pfaffman)
3
はい、それは良い推測です。
@Ethsim2 パスワードを数字と文字のみのものに変更し、ユーザー名の一部と同じにしない場合、この問題は発生しますか?
使用している値を共有していただけますか?
本日中に確認してみます。
パスワードの「83f…com」の部分を削除して、パスワード(5AH…)だけにした場合、機能しますか?
「いいね!」 2
Ethsim2
(Ethan )
6
はい、その後 .\\discourse-setup で SWAP が既に設定されていたので .\\launcher rebuild app を実行します。
pfaffman
(Jay Pfaffman)
7
はい。それが問題です。bashが値を受け取るとき、bashがsedに値を受け渡すとき、sedがそれを置換するとき、そしておそらく、ymlファイルがそれを受け取るときなど、複数のレベルのエスケープが必要です。これは既知の問題です。
これを#supportに再分類しました。
Ethsim2
(Ethan )
8
SMTPユーザー名には常に「@」が含まれているのではないでしょうか?
Ethsim2
(Ethan )
10
連結が発生するスクリーンショットに「!」はありません。
Ethsim2
(Ethan )
12
スクリーンショットのパスワードは 5AHQXrf4LDUmRB1J です 
編集:このパスワードは、その後削除されたアカウントで作成されたBrevoのデフォルトパスワードです。
pfaffman
(Jay Pfaffman)
13
再現できません。どのOSを使用していますか?
root@bro:/var/discourse# ./discourse-setup --skip-connection-test --skip-rebuild
skipping connection test
'samples/standalone.yml' -> 'containers/app.yml'
Found 29GB of memory and 32 physical CPU cores
setting db_shared_buffers = 4096MB
setting UNICORN_WORKERS = 8
containers/app.yml memory parameters updated.
Hostname for your Discourse? [discourse.example.com]: forum.phsics.site
Setting EC to 2
Skipping port check.
Email address for admin account(s)? [me@example.com,you@example.com]: jay@literatecomputing.com
SMTP server address? [smtp.example.com]: smtp-relay.brevo.com
SMTP port? [587]: 2525
SMTP user name? [user@example.com]: 83fca0012@smtp-brevo.com
SMTP password? []: 5AHQXrf4LDUmRB1J
notification email address? [noreply@forum.phsics.site]:
Optional email address for Let's Encrypt warnings? (ENTER to skip) [me@example.com]:
Optional MaxMind Account ID (ENTER to continue without MAXMIND GeoLite2 geolocation database) [123456]:
Does this look right?
Hostname : forum.phsics.site
Email : jay@literatecomputing.com
SMTP address : smtp-relay.brevo.com
SMTP port : 2525
SMTP username : 83fca0012@smtp-brevo.com
SMTP password : 5AHQXrf4LDUmRB1J
Notification email: noreply@forum.phsics.site
MaxMind account ID: (unset)
MaxMind license key: (unset)
ENTER to continue, 'n' to try again, Ctrl+C to exit:
letsencrypt.ssl.template.yml enabled
Configuration file at containers/app.yml updated successfully!
Updates successful. --skip-rebuild requested. Exiting.
root@bro:/var/discourse# grep SMTP containers/app.yml
## TODO: The SMTP mail server used to validate new accounts and send notifications
# SMTP ADDRESS is required
# WARNING: SMTP password should be wrapped in quotes to avoid problems
DISCOURSE_SMTP_ADDRESS: smtp-relay.brevo.com
DISCOURSE_SMTP_PORT: 2525
DISCOURSE_SMTP_USER_NAME: 83fca0012@smtp-brevo.com
DISCOURSE_SMTP_PASSWORD: "5AHQXrf4LDUmRB1J"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (optional, default: true)
DISCOURSE_SMTP_DOMAIN: discourse.example.com # (required by some providers)
#DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: peer # (optional, default: peer, valid values: none, peer, client_once, fail_if_no_peer_cert)
#DISCOURSE_SMTP_AUTHENTICATION: plain # (default: plain, valid values: plain, login, cram_md5)
Ethsim2
(Ethan )
14
Digital Ocean Ubuntu 24.04
ディスコースのインストールでは、ホストシステムにRubyがインストールされていることを残念ながら期待できません。もしできれば、スクリプト全体をRubyにすることは比較的簡単ですが、保証はありません。
「いいね!」 2
pfaffman
(Jay Pfaffman)
18
では、それがどのように起こったのか想像もつきません。私の例のように再現できますか?
バッファが貼り付けの速さに追いつけないほど、すべてのテキストを一度にコピー/貼り付けしましたか?
sam
(Sam Saffron)
19
うーん、launcher2 にロジックをバンドルして、それを使ってセットアップを実行できるかどうか疑問に思っています。
discourse-setup が飛び越えているホープの量は壮観です。
Lhc_fl
(Linca)
20
ランチャーをリリース用にバイナリ実行可能ファイルにコンパイルすることは可能ですか?このようにすれば、ランチャー(bash)はシステムに基づいて対応する実行可能ファイル(バイナリ)をダウンロードするだけで済みます。
「いいね!」 1