# Ubuntu 22.04 LTS のクリーンインストール後、http/https で接続が受け付けられない

**URL:** https://meta.discourse.org/t/no-connection-accepted-on-http-https-after-fresh-installation-on-ubuntu-22-04-lts/248731
**Category:** Self-hosting
**Created:** [2022 年 12 月 13 日午前 1:36 UTC](https://meta.discourse.org/t/no-connection-accepted-on-http-https-after-fresh-installation-on-ubuntu-22-04-lts/248731 "2022-12-13T01:36:29Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![supernaturally](https://avatars.discourse-cdn.com/v4/letter/s/4af34b/32.png) [@supernaturally](https://meta.discourse.org/u/supernaturally)
#### Post date: [2022 年 12 月 13 日午前 1:36 UTC](https://meta.discourse.org/t/no-connection-accepted-on-http-https-after-fresh-installation-on-ubuntu-22-04-lts/248731/1 "2022-12-13T01:36:29Z")

</div>

Discourse のインストールは今回が初めてではありませんが、Ubuntu 22.04 LTS を使用した Digital Ocean のドロップレット（1GB NVMe SSD Premium AMD）で [標準的なインストール](https://github.com/discourse/discourse/blob/main/docs/INSTALL-cloud.md#2-setting-up-email) を 3 回試みたところ、ついに行き詰まってしまいました。

ガイドに従って、過去に何度も行ってきたように LetsEncrypt のためのメールアドレスを入力しました。しかし、ブラウザに Discourse が表示されません（A レコード経由でも、ドロップレットの直接 IP 経由でも）。その後、インストールが HTTP と HTTPS の両方のポートで接続を拒否していることを確認し、それ以来頭を悩ませています。

インストール中に奇妙に感じた点は 1 つだけあります。それは、Digital Ocean のドロップレットにはデフォルトで Docker がインストールされておらず、Discourse コンテナの git クローンが必要であると検出した後にインストールを促されたことです。それ以外は通常通り進め、Docker と Discourse のインストールの両方をテストしました。

**良いニュース** - Discourse はメール配信性のテストに正常に成功しました。これはインストールが正しく実行されていることを示唆しています。また、Docker も正常に動作しているようです（`docker run -it --rm hello-world`を実行後）。[github.com](http://github.com) への ping も応答が返ってきたため、ファイアウォールや接続の問題ではなさそうです。

**問題：接続が拒否される**  
しかし、`curl -v localhost:8080`を実行すると以下のような結果になります：

```plaintext
* Trying 127.0.0.1:8080...
* connect to 127.0.0.1 port 8080 failed: Connection refused
* Trying ::1:8080...
* connect to ::1 port 8080 failed: Connection refused
* Failed to connect to localhost port 8080 after 1 ms: Connection refused
* Closing connection 0

```

`curl -v localhost`を実行すると：

```plaintext
* Trying 127.0.0.1:80...
* Connected to localhost (127.0.0.1) port 80 (#0)
> GET / HTTP/1.1
> Host: localhost
> User-Agent: curl/7.81.0
> Accept: */*
>
* Empty reply from server
* Closing connection 0
curl: (52) Empty reply from server

```

以下は私の `app.yml` と `discourse-doctor` を実行した結果です：

> **app.yml**
>
> ```plaintext
> ## 同時 Web リクエストの数は？メモリと CPU コア数に依存します。
> ## bootstrap によって検出された CPU に基づいて自動設定されますが、上書きすることも可能です
> UNICORN_WORKERS: 2
> 
> ## TODO: この Discourse インスタンスが応答するドメイン名
> ## 必須です。Discourse は IP アドレス単独では動作しません。
> DISCOURSE_HOSTNAME: community.example.io
> 
> ## 上記で指定したホスト名と同じ (-h オプション) でコンテナを起動したい場合はコメントアウトを解除してください
> ## (デフォルトは "$hostname-$config")
> #DOCKER_USE_HOSTNAME: true
> 
> ## TODO: 初期登録時に管理者および開発者に設定されるカンマ区切りのメールアドレスリスト
> ## 例: 'user1@example.com,user2@example.com'
> DISCOURSE_DEVELOPER_EMAILS: 'example@example.com'
> 
> ## TODO: 新規アカウントの検証や通知送信に使用する SMTP メールサーバー
> # SMTP アドレス、ユーザー名、パスワードは必須です
> # 警告: SMTP パスワードに含まれる '#' 文字は問題を引き起こす可能性があります!
> DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
> DISCOURSE_SMTP_PORT: 587
> DISCOURSE_SMTP_USER_NAME: no-reply@example.io
> DISCOURSE_SMTP_PASSWORD: "XXXXXX"
> #DISCOURSE_SMTP_ENABLE_START_TLS: true # (オプション、デフォルトは true)
> DISCOURSE_SMTP_DOMAIN: community.example.io
> DISCOURSE_NOTIFICATION_EMAIL: noreply@community.example.io
> 
> ## Lets Encrypt テンプレートを追加した場合、以下のコメントアウトを解除して無料の SSL 証明書を取得してください
> LETSENCRYPT_ACCOUNT_EMAIL: example@example.com
> 
> ## この Discourse インスタンスの http または https CDN アドレス (取得用に設定)
> ## 詳細は https://meta.discourse.org/t/14857 を参照してください
> #DISCOURSE_CDN_URL: https://discourse-cdn.example.com
> 
> ## IP アドレスの検索に使用する MaxMind のジオロケーション IP キー
> ## 詳細は https://meta.discourse.org/t/-/137387/23 を参照してください
> DISCOURSE_MAXMIND_LICENSE_KEY: XXXXX
> 
> ## Docker コンテナはステートレスです。すべてのデータは /shared に保存されます
> volumes:
> - volume:
> host: /var/discourse/shared/standalone
> guest: /shared
> - volume:
> 
> ## TODO: この Discourse インスタンスが応答するドメイン名
> ## 必須です。Discourse は IP アドレス単独では動作しません。
> DISCOURSE_HOSTNAME: community.example.io
> 
> ## 上記で指定したホスト名と同じ (-h オプション) でコンテナを起動したい場合はコメントアウトを解除してください
> ## (デフォルトは "$hostname-$config")
> #DOCKER_USE_HOSTNAME: true
> 
> ## TODO: 初期登録時に管理者および開発者に設定されるカンマ区切りのメールアドレスリスト
> ## 例: 'user1@example.com,user2@example.com'
> DISCOURSE_DEVELOPER_EMAILS: 'example@example.com'
> 
> ## TODO: 新規アカウントの検証や通知送信に使用する SMTP メールサーバー
> # SMTP アドレス、ユーザー名、パスワードは必須です
> # 警告: SMTP パスワードに含まれる '#' 文字は問題を引き起こす可能性があります!
> DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
> DISCOURSE_SMTP_PORT: 587
> DISCOURSE_SMTP_USER_NAME: no-reply@example.io
> DISCOURSE_SMTP_PASSWORD: "XXXXXXXX"
> #DISCOURSE_SMTP_ENABLE_START_TLS: true # (オプション、デフォルトは true)
> DISCOURSE_SMTP_DOMAIN: community.example.io
> DISCOURSE_NOTIFICATION_EMAIL: noreply@community.example.io
> 
> ## Lets Encrypt テンプレートを追加した場合、以下のコメントアウトを解除して無料の SSL 証明書を取得してください
> LETSENCRYPT_ACCOUNT_EMAIL: example@example.com
> 
> ## この Discourse インスタンスの http または https CDN アドレス (取得用に設定)
> ## 詳細は https://meta.discourse.org/t/14857 を参照してください
> #DISCOURSE_CDN_URL: https://discourse-cdn.example.com
> 
> ## IP アドレスの検索に使用する MaxMind のジオロケーション IP キー
> ## 詳細は https://meta.discourse.org/t/-/137387/23 を参照してください
> DISCOURSE_MAXMIND_LICENSE_KEY: XXXXXX
> 
> ## Docker コンテナはステートレスです。すべてのデータは /shared に保存されます
> volumes:
> - volume:
> host: /var/discourse/shared/standalone
> guest: /shared
> - volume:
> host: /var/discourse/shared/standalone/log/var-log
> guest: /var/log
> 
> ```

> **discourse-doctor の結果**
>
> ```plaintext
> Found containers/app.yml
> 
> ==================== YML SETTINGS ====================
> DISCOURSE_HOSTNAME=community.example.io
> SMTP_ADDRESS=smtp.mailgun.org
> DEVELOPER_EMAILS=example@example.com
> SMTP_PASSWORD=XXXXXXXX
> SMTP_PORT=587
> SMTP_USER_NAME=no-reply@example.io
> LETSENCRYPT_ACCOUNT_EMAIL=example@example.com
> 
> ==================== DOCKER INFO ====================
> DOCKER VERSION: Docker version 20.10.21, build baeda1f
> 
> DOCKER PROCESSES (docker ps -a)
> 
> CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
> e1d88ff15b5b local_discourse/app "/sbin/boot" 18 minutes ago Up 18 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp app
> 
> e1d88ff15b5b local_discourse/app "/sbin/boot" 18 minutes ago Up 18 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp app
> 
> Discourse container app is running
> 
> ==================== PLUGINS ====================
> - git clone https://github.com/discourse/docker_manager.git
> 
> No non-official plugins detected.
> 
> See https://github.com/discourse/discourse/blob/main/lib/plugin/metadata.rb for the official list.
> 
> ========================================
> Discourse version at community.example.io: NOT FOUND
> Discourse version at localhost: NOT FOUND
> 
> ==================== MEMORY INFORMATION ====================
> RAM (MB): 1016
> 
> total used free shared buff/cache available
> Mem: 969 687 61 21 220 110
> Swap: 2047 241 1806
> 
> ==================== DISK SPACE CHECK ====================
> ---------- OS Disk Space ----------
> Filesystem Size Used Avail Use% Mounted on
> /dev/vda1 25G 8.2G 16G 34% /
> 
> ==================== DISK INFORMATION ====================
> Disk /dev/loop0: 63.22 MiB, 66293760 bytes, 129480 sectors
> Units: sectors of 1 * 512 = 512 bytes
> Sector size (logical/physical): 512 bytes / 512 bytes
> I/O size (minimum/optimal): 512 bytes / 512 bytes
> 
> Disk /dev/loop1: 102.98 MiB, 107986944 bytes, 210912 sectors
> Units: sectors of 1 * 512 = 512 bytes
> Sector size (logical/physical): 512 bytes / 512 bytes
> I/O size (minimum/optimal): 512 bytes / 512 bytes
> 
> Disk /dev/loop2: 47.98 MiB, 50315264 bytes, 98272 sectors
> Units: sectors of 1 * 512 = 512 bytes
> Sector size (logical/physical): 512 bytes / 512 bytes
> I/O size (minimum/optimal): 512 bytes / 512 bytes
> 
> Disk /dev/vda: 25 GiB, 26843545600 bytes, 52428800 sectors
> Units: sectors of 1 * 512 = 512 bytes
> Sector size (logical/physical): 512 bytes / 512 bytes
> I/O size (minimum/optimal): 512 bytes / 512 bytes
> Disklabel type: gpt
> Disk identifier: 728BDF97-580D-4B6F-9462-7E2540D5378B
> 
> Device Start End Sectors Size Type
> /dev/vda1 227328 52428766 52201439 24.9G Linux filesystem
> /dev/vda14 2048 10239 8192 4M BIOS boot
> /dev/vda15 10240 227327 217088 106M EFI System
> 
> Partition table entries are not in disk order.
> 
> Disk /dev/vdb: 466 KiB, 477184 bytes, 932 sectors
> Units: sectors of 1 * 512 = 512 bytes
> Sector size (logical/physical): 512 bytes / 512 bytes
> I/O size (minimum/optimal): 512 bytes / 512 bytes
> 
> ==================== END DISK INFORMATION ====================
> 
> ==================== MAIL TEST ====================
> For a robust test, get an address from http://www.mail-tester.com/
> Or just send a test message to yourself.
> Email address for mail test? ('n' to skip) [example@example.com]:
> Sending mail to example@example.com . . .
> Testing sending to example@example.com using smtp.mailgun.org:587, username:no-reply@example.io with plain auth.
> SMTP server connection successful.
> Sending to example@example.com. . .
> Mail accepted by SMTP server.
> Message-ID: e3455d15-eb48-48bf-9859-a30f1acc765c@community.example.io
> 
> If you do not receive the message, check your SPAM folder
> or test again using a service like http://www.mail-tester.com/.
> 
> If the message is not delivered it is not a problem with Discourse.
> Check the SMTP server logs for the above Message ID to see why it
> failed to deliver the message.
> Replacing: SMTP_PASSWORD
> Replacing: LETSENCRYPT_ACCOUNT_EMAIL
> Replacing: DEVELOPER_EMAILS
> Replacing: DISCOURSE_DB_PASSWORD
> Replacing: Sending mail to
> 
> ==================== DONE! ====================
> 
> ```

また、discourse ディレクトリで `./launcher enter app` を実行し、さらに `top` コマンドを実行して nginx、redis、postmaster、ruby がすべて動作しているか確認しました。 **しかし、リストに nginx は表示されていません** 。

> **launcher enter app --\> top の結果**
>
> ```plaintext
> Tasks: 31 total, 1 running, 30 sleeping, 0 stopped, 0 zombie
> %Cpu(s): 1.3 us, 2.3 sy, 0.0 ni, 96.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.3 st
> MiB Mem : 969.4 total, 72.4 free, 659.0 used, 238.0 buff/cache
> MiB Swap: 2048.0 total, 1667.2 free, 380.8 used. 141.1 avail Mem
> 
> PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
> 4528 discour+ 25 5 951480 289404 3096 S 0.3 29.2 4:21.14 ruby
> 1 root 20 0 6772 0 0 S 0.0 0.0 0:00.02 boot
> 4428 root 20 0 2340 24 0 S 0.0 0.0 0:01.14 runsvdir
> 4429 root 20 0 2188 0 0 S 0.0 0.0 0:00.00 runsv
> 4430 root 20 0 2188 0 0 S 0.0 0.0 0:00.00 runsv
> 4431 root 20 0 2188 0 0 S 0.0 0.0 0:00.00 runsv
> 4432 root 20 0 2188 0 0 S 0.0 0.0 0:00.00 runsv
> 4433 root 20 0 2188 280 256 S 0.0 0.0 1:28.21 runsv
> 4434 root 20 0 2188 0 0 S 0.0 0.0 0:00.00 runsv
> 4435 root 20 0 2336 0 0 S 0.0 0.0 0:00.05 svlogd
> 4436 redis 20 0 58072 2900 1624 S 0.0 0.3 3:17.52 redis-server
> 4438 root 20 0 2336 0 0 S 0.0 0.0 0:00.00 svlogd
> 4439 discour+ 20 0 15256 1128 912 S 0.0 0.1 0:25.85 unicorn_launche
> 4441 root 20 0 6620 488 384 S 0.0 0.0 0:00.21 cron
> 4442 postgres 20 0 213172 5220 4776 S 0.0 0.5 0:02.75 postmaster
> 4445 root 20 0 151068 132 0 S 0.0 0.0 0:00.06 rsyslogd
> 4458 postgres 20 0 213392 10404 9896 S 0.0 1.0 0:00.78 postmaster
> 4459 postgres 20 0 213172 5004 4604 S 0.0 0.5 0:01.50 postmaster
> 4460 postgres 20 0 213172 4956 4588 S 0.0 0.5 0:27.50 postmaster
> 4461 postgres 20 0 213840 2264 1652 S 0.0 0.2 0:01.98 postmaster
> 4462 postgres 20 0 68200 788 0 S 0.0 0.1 0:05.01 postmaster
> 4463 postgres 20 0 213724 1164 700 S 0.0 0.1 0:00.05 postmaster
> 4464 discour+ 20 0 457692 171868 1364 S 0.0 17.3 0:22.71 ruby
> 4503 postgres 20 0 220116 11116 10812 S 0.0 1.1 0:01.51 postmaster
> 4538 discour+ 20 0 768724 169816 1032 S 0.0 17.1 0:08.27 ruby
> 4549 discour+ 20 0 768724 169948 1220 S 0.0 17.1 0:08.55 ruby
> 4580 postgres 20 0 219408 10580 10460 S 0.0 1.1 0:00.13 postmaster
> 134464 postgres 20 0 217332 21388 17444 S 0.0 2.2 0:00.24 postmaster
> 137350 root 20 0 7036 3468 2972 S 0.0 0.3 0:00.02 bash
> 137382 root 20 0 10108 3756 3080 R 0.0 0.4 0:00.08 top
> 137609 discour+ 20 0 13760 2004 1732 S 0.0 0.2 0:00.00 sleep
> 
> ```

var/discourse/shared/standalone/log/var-log/nginx 内の error.log を確認しました：

```plaintext
2022/12/12 07:55:26 [emerg] 5040#5040: cannot load certificate "/shared/ssl/community.example.io.cer": PEM_read_bio_X509_AUX(>
2022/12/12 07:55:27 [emerg] 5042#5042: cannot load certificate "/shared/ssl/community.example.io.cer": PEM_read_bio_X509_AUX(>
2022/12/12 07:55:28 [emerg] 5044#5044: cannot load certificate "/shared/ssl/community.example.io.cer": PEM_read_bio_X509_AUX(>
2022/12/12 07:55:29 [emerg] 5046#5046: cannot load certificate "/shared/ssl/community.example.io.cer": PEM_read_bio_X509_AUX(>
....

```

---

<div class="post-metadata">

### Author: ![supernaturally](https://avatars.discourse-cdn.com/v4/letter/s/4af34b/32.png) [@supernaturally](https://meta.discourse.org/u/supernaturally)
#### Post date: [2022 年 12 月 13 日午前 2:41 UTC](https://meta.discourse.org/t/no-connection-accepted-on-http-https-after-fresh-installation-on-ubuntu-22-04-lts/248731/2 "2022-12-13T02:41:48Z")

</div>

エラーログファイル `var/discourse/shared/standalone/log/var-log/nginx` に基づいて、`app.yml` の SSL テンプレートを編集することにしました。

```plaintext
## Let's Encrypt (https) を追加したい場合は、これらの 2 行のコメントを解除してください
## - "templates/web.ssl.template.yml"
## - "templates/web.letsencrypt.ssl.template.yml"

```

その後、`./launcher stop app` と `./launcher rebuild app` を実行したところ、ブラウザに「congratulations, you installed discourse!」と表示され、http 経由で Discourse のビルドが正常に実行されました。

一歩前進しましたが、SSL を機能させることができません。LE 証明書はまだ期限切れではなく、DNS も問題なく、これは非常に標準的なサーバー仕様の新規インストールです。

Let’s Encrypt 経由で SSL を有効にできない理由について、何かアイデアはありますか？

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [2022 年 12 月 15 日午後 10:42 UTC](https://meta.discourse.org/t/no-connection-accepted-on-http-https-after-fresh-installation-on-ubuntu-22-04-lts/248731/3 "2022-12-15T22:42:17Z")

</div>

> [@supernaturally](#):
>
> ```plaintext
> 2022/12/12 07:55:26 [emerg] 5040#5040: 証明書をロードできません "/shared/ssl/community.example.io.cer": PEM_read_bio_X509_AUX(">
> 
> ```

DNSが間違っているか、間違っていたため、何度も試行してレート制限がかかったのだと推測します。簡単な解決策は、1週間待つか、別のサブドメイン名を選択することです。

ホスト名を共有していないため、DNSが機能しているかどうかを知るお手伝いができません。

---

<div class="post-metadata">

### Author: ![supernaturally](https://avatars.discourse-cdn.com/v4/letter/s/4af34b/32.png) [@supernaturally](https://meta.discourse.org/u/supernaturally)
#### Post date: [2022 年 12 月 16 日午後 11:01 UTC](https://meta.discourse.org/t/no-connection-accepted-on-http-https-after-fresh-installation-on-ubuntu-22-04-lts/248731/4 "2022-12-16T23:01:20Z")

</div>

@pfaffman 、ご返信ありがとうございます。http:// は正常に動作していますが、Let’s Encrypt を有効にすると SSL が機能しません。新規インストールで LE をセットアップしましたが、[LE のセットアップチュートリアル](https://meta.discourse.org/t/set-up-https-support-with-lets-encrypt/40709)を読んでも、DNS の変更については何も言及されていませんでした。

LE/SSL を機能させるために、DNS 側で具体的に何が必要ですか？

DNS セットアップのスクリーンショットを以下に示します。

 ![Advanced-DNS](https://global.discourse-cdn.com/meta/original/4X/7/e/8/7e81fa96bc983229ef73514c3de05a9cef831d7a.png)

（DKIM/SPF は検証済みで、Discourse のメールは正常に機能していますので、ご参考までに）

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [2022 年 12 月 16 日午後 11:23 UTC](https://meta.discourse.org/t/no-connection-accepted-on-http-https-after-fresh-installation-on-ubuntu-22-04-lts/248731/5 "2022-12-16T23:23:30Z")

</div>

おそらく、Let’s Encrypt に何度もアドレスをリクエストしようとして、何らかの理由で失敗したため、1 週間は再試行できなくなったのだと思います。もしそうなら、1 週間待つか、別の名前を使用してください。

エラーを取得する方法はありますが、携帯電話では思い出せません。

---

<div class="post-metadata">

### Author: ![supernaturally](https://avatars.discourse-cdn.com/v4/letter/s/4af34b/32.png) [@supernaturally](https://meta.discourse.org/u/supernaturally)
#### Post date: [2022 年 12 月 16 日午後 11:27 UTC](https://meta.discourse.org/t/no-connection-accepted-on-http-https-after-fresh-installation-on-ubuntu-22-04-lts/248731/6 "2022-12-16T23:27:50Z")

</div>

承知いたしました。来週初めの7日間経過後、app.ymlでSSLを再有効化し、再構築して結果を報告します。
