セルフホスト型Discourseへのセキュアな接続が最新アップデート後に不可

こんにちは。数時間前に ./launcher rebuild app を使用して Discourse Image と Discourse を更新しました。その過程で、app.yml から非推奨のプラグインインストール行を削除することで修正されたエラーが発生しました。他に設定の変更は行っていません。現在、80 および 443 TCP ポートをリッスンする Docker コンテナが実行されていますが、コンテナ内の nginx は SSL/TLS 接続を受け付けません。コンテナ内の error.log には証明書に関するエラーは表示されず、access.log にはリクエストは表示されず、443 ポートへの telnet は接続拒否を示しますが、TCP ポート 80 への HTTP アクセスは機能しますが、SSO 認証の問題が発生しています(おそらくセキュア専用クッキーの問題です)。ランチャーの再起動と discourse-doctor は役に立ちません。コンテナ内で nginx を再起動しても役に立ちません。次にどこを見て、何をすべきでしょうか?

「いいね!」 2

ufw が有効になっていて、httpsポート443への接続を許可するように設定されていない場合、そうなります。


編集:mail-receiver が正しく機能するには、このポートを開いておく必要があります。

ufwやiptablesなどの設定は一切行っていません。アップデート前はポートは正確に開いていました。Discourseのアップデートプロセスで設定が変更される可能性はありますか?

絶対に可能です。Discourse Docker コンテナは ufw の前に配置されるべきです。しかし、ポート 443 を開いていないと、異なるコンテナ間の通信で問題が発生したり、telnet で問題が発生したりします。


.\launcher logs app は何と表示されますか?(ドメイン名などを編集するには MS Word を使用できます)

PuTTY または他の SSH クライアントでサーバーにアクセスしていますか?ポート 22 を開いていますか?

再構築後、セルフホストインスタンスでもこの問題が発生しています。設定は変更しておらず、再構築のみです。SSHでサーバーにアクセスでき、./launcher logs app の出力は以下の通りです。

run-parts: executing /etc/runit/1.d/00-ensure-links
run-parts: executing /etc/runit/1.d/00-fix-var-logs
run-parts: executing /etc/runit/1.d/01-cleanup-web-pids
run-parts: executing /etc/runit/1.d/anacron
run-parts: executing /etc/runit/1.d/cleanup-pids
Cleaning stale PID files
run-parts: executing /etc/runit/1.d/copy-env
run-parts: executing /etc/runit/1.d/install-ssl
Started runsvdir, PID is 45
ok: run: redis: (pid 55) 0s
supervisor pid: 53 unicorn pid: 76

docker ps の出力からも Docker コンテナは実行されていることが確認できます(コンテナIDは伏字化しています)。

local_discourse/app “/sbin/boot” 16 minutes ago Up 16 minutes 0.0.0.0:80->80/tcp, [::]:80->80/tcp, 0.0.0.0:443->443/tcp, [::]:443->443/tcp, 0.0.0.0:5432->5432/tcp, [::]:5432->5432/tcp app

重要な点として、特定の発行元を必要とするため、証明書には openSSL を使用していません。しかし、この証明書は変更されておらず、再構築前は正常に機能していました。

Nginx が期待する IP アドレス(ローカル IP)と、コンテナに割り当てられている IP アドレスとの間に不一致があるようです。コンテナはブリッジモードで実行されている可能性がありますか?以下はコンテナのネットワーク設定です。

"Labels": {
    "org.opencontainers.image.created": "2025-07-25T21:40:36+00:00"
},
"NetworkSettings": {
    "Bridge": "",
    "SandboxID": "[REDACTED]",
    "SandboxKey": "[REDACTED]",
    "Ports": {
        "443/tcp": [
            {
                "HostIp": "0.0.0.0",
                "HostPort": "443"
            },
            {
                "HostIp": "::",
                "HostPort": "443"
            }
        ],
        "5432/tcp": [
            {
                "HostIp": "0.0.0.0",
                "HostPort": "5432"
            },
            {
                "HostIp": "::",
                "HostPort": "5432"
            }
        ],
        "80/tcp": [
            {
                "HostIp": "0.0.0.0",
                "HostPort": "80"
            },
            {
                "HostIp": "::",
                "HostPort": "80"
            }
        ]
    },
    "HairpinMode": false,
    "LinkLocalIPv6Address": "",
    "LinkLocalIPv6PrefixLen": 0,
    "SecondaryIPAddresses": null,
    "SecondaryIPv6Addresses": null,
    "EndpointID": "[REDACTED]",
    "Gateway": "172.17.0.1",
    "GlobalIPv6Address": "",
    "GlobalIPv6PrefixLen": 0,
    "IPAddress": "172.17.0.2",
    "IPPrefixLen": 16,
    "IPv6Gateway": "",
    "MacAddress": "[REDACTED]",
    "Networks": {
        "bridge": {
            "IPAMConfig": null,
            "Links": null,
            "Aliases": null,
            "MacAddress": "[REDACTED]",
            "DriverOpts": null,
            "GwPriority": 0,
            "NetworkID": "[REDACTED]",
            "EndpointID": "[REDACTED]",
            "Gateway": "172.17.0.1",
            "IPAddress": "172.17.0.2",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "DNSNames": null
        }
    }
}

app.yml に新しい PR が導入され、新しい変数の要件が追加されたようです。まだ文書化されていないようですが、app.yml ファイルに ENABLE_SSL: true を追加する必要があります。

それはバグのようですね。SSL は数年前からデフォルトで有効になっています。コミットへのリンクを教えていただけますか?

SSL テンプレートのコードで確認しましたが、携帯電話で操作しており、GitHub にも問題があるため、見落としているかもしれませんが、セルフホストされているすべてのサイトで問題が発生するように見えます。

「いいね!」 1

これは、ssl-on-boot の設定のマージで意図しないバグが発生したものです。

ここで ENABLE_SSL をデフォルトで 1 に更新しました。

ご指摘ありがとうございます @tanya_byrne

「いいね!」 3

よくやった、ジェフ!ありがとう!

「いいね!」 1

修正ありがとうございます @featheredtoast

「いいね!」 2

ありがとう、皆さん。問題も解決しました。

「いいね!」 2

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.