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:
-
Docker e Docker Compose:
apt update && apt install docker docker-compose -y -
Discourse Instalado:
- Instale o Discourse através das instruções oficiais de instalação.
-
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).
- Um domínio principal para o WordPress (por exemplo,
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.comsão encaminhadas para o contêiner do WordPress. - Requisições para
forum.website.comsã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
-
Expor Portas HTTP Não Padrão:
expose: - "8880:80" # http -
Remover Modelos SSL:
# - "templates/web.ssl.template.yml" # - "templates/web.letsencrypt.ssl.template.yml" -
Definir Rede Docker:
docker_args: - '--network caddy_net' networks: caddy_net: external: true -
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:
-
Navegue até o diretório Docker Compose:
cd /etc/docker-services -
Inicie os contêineres:
docker compose up -d
Passo 5: Testando e Verificando
-
Verificar Contêineres em Execução:
docker ps -
Acessar o WordPress: Navegue para:
https://website.com -
Acessar o Discourse: Navegue para:
https://forum.website.com -
Verificar Logs:
-
Caddy:
docker logs caddy -
Discourse:
tail -f /var/discourse/shared/standalone/log/rails/production.log
-
Solução de Problemas
-
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
-
-
Erros SSL do Caddy:
- Verifique os logs de certificado do Caddy em
/data.
- Verifique os logs de certificado do Caddy em
-
Problemas de Reconstrução:
-
Certifique-se de que a rede
caddy_netesteja 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.