DigitalOcean のワンクリックアプリを使って新規インストールを試みています。
これは 3 回目の最初からの作成ですが、同じ問題に直面しています。
DNS を確認すると、ドメインが Droplet の IP を指していることは確認できますが、Discourse がドメインに表示されません。
discourse-doctor を実行すると、「ドメインが提供されている/提供されていない」情報が表示される前に処理が停止(フリーズ)してしまいます。
この挙動を引き起こすようなアップデートはありましたか?
「いいね!」 1
merefield
(Robert)
2
ワンクリックインストールはサポートされていません。
非常に簡素な公式インストール手順をご利用ください。
その後、何か問題が発生した場合は、こちらに投稿してサポートを受けることができます。
「いいね!」 6
@merefield 新しく Droplet を作成し、公式のインストール手順に従ってインストールを実行しました。しかし、全く同じ問題が発生したままです。
discourse-doctor がフリーズしています
また、ドメイン上で何も提供されていません。
これは公式インストールで完全に新しい環境です。何が起きているのか分かりません。何か手がかりはありませんか?
「いいね!」 1
@merefield ./launcher logs app を実行すると、以下が表示されます:
nginx: [emerg] cannot load certificate "/shared/ssl/mydomainname.de.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
ただし、これが何を意味するのかはわかりません。
「いいね!」 1
なので、/shared/ssl を参照しようとしているようですが、実際には SSL は shared/standalone/ssl にあります。これをどう修正すればよいでしょうか?
「いいね!」 1
pfaffman
(Jay Pfaffman)
6
問題は通常、DNS の設定が正しくないか、まだ反映されていないことにあります。URL を共有していただければ、誰かが確認できます。
よく https://dnschecker.org/#A/example.com を使って確認しています。
ただし、何度も試している場合は、Let’s Encrypt が証明書を発行できる回数が尽きている可能性が高いです。おそらくそれが現在の問題でしょう。90% の確信があります。Set up Let’s Encrypt with multiple domains / redirects - #53 に従って「裏技」を使うこともできますが、設定はより複雑になり、簡単な構成では実現できません。最も良い方法は、数日待ってから再度試すことです。
これは問題ではありません。/shared/ssl はコンテナ内のパスであり、shared/standalone/ssl はコンテナ外のパスです。
「いいね!」 4
@pfaffman ええ、それは確かにあり得ますね!それでもまだ作成できないのですが、別のドメインなら作成できます。DNS 検索で正しいサーバーに接続されていることが確認できているので、おそらくご指摘の通りだと思います。もう少し待ってから再度試してみます。
ありがとう 
「いいね!」 2
@pfaffman チートについてお手伝いいただけますか?複数のドメインでの設定を確認しましたが、あなたが何を意図されているのか確信が持てません。何か after_ssl フックを使うことをおっしゃっているのでしょうか?
「いいね!」 1
pfaffman
(Jay Pfaffman)
9
他のドメインを追加するだけです。つまり、フォーラムが forum.example.com の場合、cheat.example.com の DNS レコードをサーバーを指すように追加し、そこに記載されている手順に従って追加します。これは異なる証明書のリクエストとなるため、リクエストを許可されます。
「いいね!」 1
@pfaffman 私は Digital Ocean を使用しています。cheat.example.com を A レコードとして追加しましたが、設定時にドメインとして認識されません。
(警告: コンピューターのポート 443 がアクセス可能なようではありません)
手順に従って再構築しましたが、それでも「サイトにアクセスできません」という表示のままです。
他の設定については、app.yml ファイルの hooks: セクションに以下の内容を追加しました。
after_ssl:
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--keylength/
to: "-d cheat.example.com"
JimPas
11
あるいは、この方法でドメインまたはサブドメインを 1 つ追加することもできます。レート制限に達してしまった場合の簡単な回避策です。ただし、レート制限に達しないようにするためには、常にテスト環境である --dryrun を使用するのが最善です。(Let’s Encrypt は現在、--dryrun を、非英語圏のユーザーにとってよりわかりやすい名称(例えば --test や --testrun など)に改名する可能性を検討しています。おそらくその変更は 2021 年 1 月以降になるでしょう。彼らはガイドの完全な書き直しにも取り組んでいます。
既存の証明書に新しいドメインを追加するための推奨方法は、元のコマンドラインを再利用し、新しいドメインをもう一つの -d フラグで追加し、--expand を追加して certbot に新しいレガシー(これにより /etc/letsencrypt/live に新しいサブディレクトリが作成されることになります)を作成させないよう指示することです。
「いいね!」 3
pfaffman
(Jay Pfaffman)
12
ここで問題なのは、手遅れになるまでそれがテストであることがわからない点です。また、Discourse をテストモードでその証明書を取得するように設定する方法が、私にも明確ではありません。
私が伝えようとしていたのはその点です。
「いいね!」 1
JimPas
13
それが、彼ら(Let’s Encrypt)がガイドを再編している理由の一つです。より明確にするためです。テスト環境を使用してテスト(偽)証明書を取得する設定が完了したら、本番モードで Certbot を実行して CA を取得できます。その後、Discourse をインストールすれば、新しい(拡張された)CA を自動的に取得するはずです。

pfaffman
(Jay Pfaffman)
14
そうではありません。app.yml にスイッチを追加するためのセクション(stanza)を追加する方法を特定すること—それがどれだけ自明に見えようとも—は、Discourse のインストールよりも約3倍(あるいは10倍)も難しいのです。app.yml を編集して複雑なものを追加し、スペースを完璧に整える必要があるのでしょうか?1週間待つか、新しい名前を選んでください。
「いいね!」 2
@pfaffman 説明した通り、新しい名前を選択しました。一つの問題は、cheat.example.com が A レコードではなく CNAME であるべきだったことです。
それでもまだ動作しません。もう少し時間をかけてみます。
編集: 参考までに、私の app.yml は以下の通りです:
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## Lets Encrypt (https) を追加したい場合は、以下の 2 行のコメントを外してください
- "templates/web.ssl.template.yml"
- "templates/web.letsencrypt.ssl.template.yml"
expose:
- "80:80" # http
- "443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
## db_shared_buffers を総メモリの最大 25% に設定します。
## ブートストラップによって検出された RAM に基づいて自動的に設定されますが、上書きすることもできます
db_shared_buffers: "256MB"
## ソートパフォーマンスを向上させることができますが、接続ごとにメモリ使用量が増加します
#db_work_mem: "40MB"
## このコンテナが使用する Git リビジョンはどれですか?(デフォルト: tests-passed)
#version: tests-passed
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
# DISCOURSE_RELATIVE_URL_ROOT: /forum
## 同時ウェブリクエストを何件サポートするか?メモリと CPU コア数に依存します。
## ブートストラップによって検出された CPU に基づいて自動的に設定されますが、上書きすることもできます
UNICORN_WORKERS: 4
## TODO: この Discourse インスタンスが応答するドメイン名
## 必須です。Discourse は IP アドレス単独では動作しません。
DISCOURSE_HOSTNAME: cheat.example.com
## 上記で指定したホスト名(-h オプション)と同じホスト名でコンテナを起動したい場合は、以下の行のコメントを外してください(デフォルト: "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: 初期登録時に管理者および開発者として設定される、カンマ区切りのメールアドレスのリスト
## 例: 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'emails@emails.com'
## TODO: 新しいアカウントの検証や通知の送信に使用する SMTP メールサーバー
# SMTP アドレス、ユーザー名、パスワードは必須です
# 警告: SMTP パスワードに含まれる '#' 文字は問題を引き起こす可能性があります!
DISCOURSE_SMTP_ADDRESS: smtpout.secureserver.net
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: some@email.com
DISCOURSE_SMTP_PASSWORD: "apassword"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (オプション、デフォルトは true)
## Lets Encrypt テンプレートを追加した場合は、以下の行のコメントを外して無料の SSL 証明書を取得してください
LETSENCRYPT_ACCOUNT_EMAIL: me@example.com
## この Discourse インスタンスの http または https CDN アドレス(取得用に設定)
## 詳細は https://meta.discourse.org/t/14857 を参照してください
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
## Docker コンテナはステートレスです。すべてのデータは /shared に保存されます
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
## プラグインはここに追加します
## 詳細は https://meta.discourse.org/t/19157 を参照してください
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
after_ssl:
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--keylength/
to: "-d cheat.example.com --expand"
「いいね!」 1
結局、1週間が過ぎ、ドメインを再度使えるようになりました。サブドメインとの連携設定に何かミスがあったのでしょう。LetsEncryptの情報を確認したところ、これが解決策だと確信しています。
@pfaffman と @JimPas さん、ご協力と有益な回答をありがとうございます!
「いいね!」 3
system
(system)
クローズされました:
17
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.