Integrando Discourse, Caddy e WordPress com portas Docker para proxy reverso

Este é o meu primeiro post e queria fornecer um guia que fiz com nosso amigo ChatGPT depois de lutar por dias para descobrir como fazer o Caddy funcionar como proxy reverso para o Discourse instalado com as instruções do escritório. Usei informações que encontrei no fórum do Caddy aqui. Configuração do Caddy Discourse. Isso pode ser direto, mas para aqueles de nós que estão apenas começando com o Discourse, é um pouco trabalhoso para fazê-lo funcionar.

Obrigado por uma comunidade obviamente ótima.

Integrando Discourse, Caddy e WordPress com Portas Docker para Proxy Reverso


Visão Geral

Este guia fornece um processo passo a passo para configurar o Discourse com o Caddy como proxy reverso, juntamente com uma instalação do WordPress, usando Docker Compose. Estas instruções são projetadas para um servidor Ubuntu 22 LTS típico e demonstram como integrar vários serviços, garantindo uma configuração limpa e reproduzível.


Pré-requisitos

Certifique-se de que os seguintes pré-requisitos sejam atendidos antes de prosseguir:

  1. Docker e Docker Compose:

    apt update && apt install docker docker-compose -y
    
  2. Discourse Instalado:

  3. Nomes de Domínio:

    • Um domínio principal para o WordPress (por exemplo, website.com).
    • Um subdomínio para o Discourse (por exemplo, forum.website.com).

Passo 1: Configurando docker-compose.yml

O arquivo docker-compose.yml define os serviços para Caddy (proxy reverso), WordPress e MySQL.

Localização do Arquivo

Salve o arquivo como /etc/docker-services/docker-compose.yml.

Configuração

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

Passo 2: Configurando o Proxy Reverso do Caddy

O Caddy faz proxy das requisições tanto para o Discourse quanto para o WordPress e gerencia os certificados HTTPS.

Localização do Arquivo

Salve a configuração como /etc/docker-services/Caddyfile.

Configuração

website.com {
    reverse_proxy wordpress:80
}

forum.website.com {
    reverse_proxy app:80
}

Esta configuração garante:

  • Requisições para website.com são encaminhadas para o contêiner do WordPress.
  • Requisições para forum.website.com são encaminhadas para o contêiner do Discourse.

Passo 3: Configurando o Discourse

Atualize o app.yml para integrar o Discourse com o Caddy e a rede Docker.

Localização do Arquivo

Localizado em /var/discourse/containers/app.yml.

Alterações de Configuração

  1. Expor Portas HTTP Não Padrão:

    expose:
      - "8880:80"   # http
    
  2. Remover Modelos SSL:

    # - "templates/web.ssl.template.yml"
    # - "templates/web.letsencrypt.ssl.template.yml"
    
  3. Definir Rede Docker:

    docker_args:
      - '--network caddy_net'
    
    networks:
      caddy_net:
        external: true
    
  4. Reconstruir o Discourse: Aplique as alterações reconstruindo o contêiner do Discourse:

    cd /var/discourse
    ./launcher rebuild app
    

Passo 4: Implantando os Serviços

Inicie os serviços Docker para Caddy e WordPress:

  1. Navegue até o diretório Docker Compose:

    cd /etc/docker-services
    
  2. Inicie os contêineres:

    docker compose up -d
    

Passo 5: Testando e Verificando

  1. Verificar Contêineres em Execução:

    docker ps
    
  2. Acessar o WordPress: Navegue para:

    https://website.com
    
  3. Acessar o Discourse: Navegue para:

    https://forum.website.com
    
  4. Verificar Logs:

    • Caddy:

      docker logs caddy
      
    • Discourse:

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

Solução de Problemas

  1. Discourse Não Respondendo:

    • Certifique-se de que o Discourse esteja vinculado à porta 8880.

    • Verifique se o contêiner está conectado à caddy_net:

      docker network inspect caddy_net
      
  2. Erros SSL do Caddy:

    • Verifique os logs de certificado do Caddy em /data.
  3. Problemas de Reconstrução:

    • Certifique-se de que a rede caddy_net esteja ativa ao reconstruir o Discourse:

      docker network ls
      

Conclusão

Este guia demonstra como integrar Discourse, Caddy e WordPress usando Docker Compose e uma configuração de proxy reverso. Ao seguir estas etapas, você pode alcançar uma configuração modular e segura para sua própria infraestrutura de site.

Você usou um Arduino para isso?