Discourse, Caddy, およびWordPressをDockerポートでリバースプロキシ化する統合

初めての投稿で、オフィスでの指示に従ってDiscourseをインストールし、Caddyをリバースプロキシとして機能させるのに数日間苦労した後、自分で作成したガイドを提供したいと思います。Caddyフォーラムで見つけた情報を使用しました。Caddy Discourseセットアップ 。これは簡単なことかもしれませんが、Discourseを始めたばかりの私たちにとっては、セットアップには少し手間がかかります。

明らかに素晴らしいコミュニティに感謝します。

Discourse、Caddy、WordPressをDockerポートで統合し、リバースプロキシを設定する


概要

このガイドでは、Docker Composeを使用して、WordPressのインストールと並行して、CaddyをリバースプロキシとしてDiscourseをセットアップするステップバイステップのプロセスを提供します。これらの手順は、典型的なUbuntu 22 LTSサーバー向けに設計されており、複数のサービスを統合しながら、クリーンで再現可能なセットアップを確保する方法を示しています。


前提条件

続行する前に、以下の前提条件が満たされていることを確認してください。

  1. DockerDocker Compose

    apt update && apt install docker docker-compose -y
    
  2. Discourseのインストール

  3. ドメイン名

    • WordPressのプライマリドメイン(例:website.com)。
    • Discourseのサブドメイン(例:forum.website.com)。

ステップ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にあります。

設定変更

  1. 非標準HTTPポートのエクスポート

    expose:
      - "8880:80"   # http
    
  2. SSLテンプレートの削除

    # - "templates/web.ssl.template.yml"
    # - "templates/web.letsencrypt.ssl.template.yml"
    
  3. Dockerネットワークの設定

    docker_args:
      - '--network caddy_net'
    
    networks:
      caddy_net:
        external: true
    
  4. Discourseの再構築:Discourseコンテナを再構築して変更を適用します。

    cd /var/discourse
    ./launcher rebuild app
    

ステップ4:サービスのデプロイ

CaddyとWordPressのDockerサービスを起動します。

  1. Docker Composeディレクトリに移動します。

    cd /etc/docker-services
    
  2. コンテナを起動します。

    docker compose up -d
    

ステップ5:テストと検証

  1. 実行中のコンテナの確認

    docker ps
    
  2. WordPressへのアクセス:以下にアクセスします。

    https://website.com
    
  3. Discourseへのアクセス:以下にアクセスします。

    https://forum.website.com
    
  4. ログの確認

    • Caddy

      docker logs caddy
      
    • Discourse

      tail -f /var/discourse/shared/standalone/log/rails/production.log
      

トラブルシューティング

  1. Discourseが応答しない

    • Discourseがポート8880にバインドされていることを確認してください。

    • コンテナがcaddy_netに接続されていることを確認してください。

      docker network inspect caddy_net
      
  2. Caddy SSLエラー

    • /dataにあるCaddyの証明書ログを確認してください。
  3. 再構築の問題

    • Discourseを再構築する際にcaddy_netネットワークがアクティブであることを確認してください。

      docker network ls
      

結論

このガイドでは、Docker Composeとリバースプロキシ設定を使用して、Discourse、Caddy、WordPressを統合する方法を示しました。これらの手順に従うことで、独自のウェブサイトインフラストラクチャに対して、モジュラーで安全なセットアップを実現できます。

Arduinoを使いましたか?