Mi primera publicación y quería proporcionar una guía que hice con nuestro amigo ChatGPT después de luchar durante días para descubrir cómo hacer que Caddy funcionara como proxy inverso para Discourse, instalado con las instrucciones de la oficina. Usé información que encontré en el foro de Caddy aquí. Configuración de Caddy Discourse. Esto puede ser sencillo, pero para aquellos de nosotros que recién comenzamos con Discourse, es un poco complicado ponerlo en marcha.
Gracias por una comunidad obviamente genial.
Integración de Discourse, Caddy y WordPress con Puertos Docker para Proxy Inverso
Descripción General
Esta guía proporciona un proceso paso a paso para configurar Discourse con Caddy como proxy inverso, junto con una instalación de WordPress, utilizando Docker Compose. Estas instrucciones están diseñadas para un servidor Ubuntu 22 LTS típico y demuestran cómo integrar múltiples servicios garantizando una configuración limpia y reproducible.
Requisitos Previos
Asegúrate de que se cumplan los siguientes requisitos previos antes de continuar:
-
Docker y Docker Compose:
bash
apt update && apt install docker docker-compose -y -
Discourse Instalado:
- Instala Discourse a través de las instrucciones oficiales de instalación.
-
Nombres de Dominio:
- Un dominio principal para WordPress (por ejemplo,
website.com). - Un subdominio para Discourse (por ejemplo,
forum.website.com).
- Un dominio principal para WordPress (por ejemplo,
Paso 1: Configuración de docker-compose.yml
El archivo docker-compose.yml define los servicios para Caddy (proxy inverso), WordPress y MySQL.
Ubicación del Archivo
Guarda el archivo como /etc/docker-services/docker-compose.yml.
Configuración
yaml
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
Paso 2: Configuración del Proxy Inverso de Caddy
Caddy proxy las solicitudes tanto a Discourse como a WordPress y gestiona los certificados HTTPS.
Ubicación del Archivo
Guarda la configuración como /etc/docker-services/Caddyfile.
Configuración
caddyfile
website.com {
reverse_proxy wordpress:80
}
forum.website.com {
reverse_proxy app:80
}
Esta configuración asegura:
- Las solicitudes a
website.comse proxy a el contenedor de WordPress. - Las solicitudes a
forum.website.comse proxy a el contenedor de Discourse.
Paso 3: Configuración de Discourse
Actualiza app.yml para integrar Discourse con Caddy y la red Docker.
Ubicación del Archivo
Ubicado en /var/discourse/containers/app.yml.
Cambios de Configuración
-
Exponer Puertos HTTP No Estándar:
yaml
expose: - "8880:80" # http -
Eliminar Plantillas SSL:
yaml
# - "templates/web.ssl.template.yml" # - "templates/web.letsencrypt.ssl.template.yml" -
Establecer Red Docker:
yaml
docker_args: - '--network caddy_net' networks: caddy_net: external: true -
Reconstruir Discourse: Aplica los cambios reconstruyendo el contenedor de Discourse:
bash
cd /var/discourse ./launcher rebuild app
Paso 4: Despliegue de los Servicios
Inicia los servicios Docker para Caddy y WordPress:
-
Navega al directorio de Docker Compose:
bash
cd /etc/docker-services -
Inicia los contenedores:
bash
docker compose up -d
Paso 5: Pruebas y Verificación
-
Verificar Contenedores en Ejecución:
bash
docker ps -
Acceder a WordPress: Navega a:
arduino
https://website.com -
Acceder a Discourse: Navega a:
arduino
https://forum.website.com -
Revisar Registros:
-
Caddy:
bash
docker logs caddy -
Discourse:
bash
tail -f /var/discourse/shared/standalone/log/rails/production.log
-
Solución de Problemas
-
Discourse No Responde:
-
Asegúrate de que Discourse esté enlazado al puerto
8880. -
Verifica que el contenedor esté conectado a
caddy_net:bash
docker network inspect caddy_net
-
-
Errores SSL de Caddy:
- Revisa los registros de certificados de Caddy en
/data.
- Revisa los registros de certificados de Caddy en
-
Problemas de Reconstrucción:
-
Asegúrate de que la red
caddy_netesté activa al reconstruir Discourse:bash
docker network ls
-
Conclusión
Esta guía demuestra cómo integrar Discourse, Caddy y WordPress utilizando Docker Compose y una configuración de proxy inverso. Siguiendo estos pasos, puedes lograr una configuración modular y segura para tu propia infraestructura de sitio web.