初めての投稿で、オフィスでの指示に従ってDiscourseをインストールし、Caddyをリバースプロキシとして機能させるのに数日間苦労した後、自分で作成したガイドを提供したいと思います。Caddyフォーラムで見つけた情報を使用しました。Caddy Discourseセットアップ 。これは簡単なことかもしれませんが、Discourseを始めたばかりの私たちにとっては、セットアップには少し手間がかかります。
明らかに素晴らしいコミュニティに感謝します。
Discourse、Caddy、WordPressをDockerポートで統合し、リバースプロキシを設定する
概要
このガイドでは、Docker Composeを使用して、WordPressのインストールと並行して、CaddyをリバースプロキシとしてDiscourseをセットアップするステップバイステップのプロセスを提供します。これらの手順は、典型的なUbuntu 22 LTSサーバー向けに設計されており、複数のサービスを統合しながら、クリーンで再現可能なセットアップを確保する方法を示しています。
前提条件
続行する前に、以下の前提条件が満たされていることを確認してください。
-
DockerとDocker Compose:
apt update && apt install docker docker-compose -y -
Discourseのインストール:
- 公式インストール手順でDiscourseをインストールします。
-
ドメイン名:
- WordPressのプライマリドメイン(例:
website.com)。 - Discourseのサブドメイン(例:
forum.website.com)。
- WordPressのプライマリドメイン(例:
ステップ1:docker-compose.ymlの設定
docker-compose.ymlファイルは、Caddy(リバースプロキシ)、WordPress、MySQLのサービスを定義します。
ファイル場所
ファイルを/etc/docker-services/docker-compose.ymlとして保存します。
設定
version: '3.8'
services:
caddy:
image: caddy:latest
container_name: caddy
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
networks:
- caddy_net
wordpress:
image: wordpress:latest
container_name: wordpress
restart: unless-stopped
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: example_user
WORDPRESS_DB_PASSWORD: example_password
WORDPRESS_DB_NAME: example_db
volumes:
- ./wordpress:/var/www/html
networks:
- caddy_net
db:
image: mysql:5.7
container_name: wordpress_db
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: example_password
MYSQL_DATABASE: example_db
MYSQL_USER: example_user
MYSQL_PASSWORD: example_password
volumes:
- db_data:/var/lib/mysql
networks:
- caddy_net
volumes:
caddy_data:
caddy_config:
db_data:
networks:
caddy_net:
external: true
ステップ2:Caddyリバースプロキシの設定
Caddyは、DiscourseとWordPressの両方へのリクエストをプロキシし、HTTPS証明書を管理します。
ファイル場所
設定を/etc/docker-services/Caddyfileとして保存します。
設定
website.com {
reverse_proxy wordpress:80
}
forum.website.com {
reverse_proxy app:80
}
この設定により、以下が保証されます。
website.comへのリクエストはWordPressコンテナにプロキシされます。forum.website.comへのリクエストはDiscourseコンテナにプロキシされます。
ステップ3:Discourseの設定
CaddyとDockerネットワークとDiscourseを統合するためにapp.ymlを更新します。
ファイル場所
/var/discourse/containers/app.ymlにあります。
設定変更
-
非標準HTTPポートのエクスポート:
expose: - "8880:80" # http -
SSLテンプレートの削除:
# - "templates/web.ssl.template.yml" # - "templates/web.letsencrypt.ssl.template.yml" -
Dockerネットワークの設定:
docker_args: - '--network caddy_net' networks: caddy_net: external: true -
Discourseの再構築:Discourseコンテナを再構築して変更を適用します。
cd /var/discourse ./launcher rebuild app
ステップ4:サービスのデプロイ
CaddyとWordPressのDockerサービスを起動します。
-
Docker Composeディレクトリに移動します。
cd /etc/docker-services -
コンテナを起動します。
docker compose up -d
ステップ5:テストと検証
-
実行中のコンテナの確認:
docker ps -
WordPressへのアクセス:以下にアクセスします。
https://website.com -
Discourseへのアクセス:以下にアクセスします。
https://forum.website.com -
ログの確認:
-
Caddy:
docker logs caddy -
Discourse:
tail -f /var/discourse/shared/standalone/log/rails/production.log
-
トラブルシューティング
-
Discourseが応答しない:
-
Discourseがポート
8880にバインドされていることを確認してください。 -
コンテナが
caddy_netに接続されていることを確認してください。docker network inspect caddy_net
-
-
Caddy SSLエラー:
/dataにあるCaddyの証明書ログを確認してください。
-
再構築の問題:
-
Discourseを再構築する際に
caddy_netネットワークがアクティブであることを確認してください。docker network ls
-
結論
このガイドでは、Docker Composeとリバースプロキシ設定を使用して、Discourse、Caddy、WordPressを統合する方法を示しました。これらの手順に従うことで、独自のウェブサイトインフラストラクチャに対して、モジュラーで安全なセットアップを実現できます。