Intégration de Discourse, Caddy et WordPress avec Docker Ports pour Proxy Inverse

Ceci est mon premier post et je voulais fournir un guide que j’ai créé avec notre ami ChatGPT après avoir lutté pendant des jours pour comprendre comment faire fonctionner Caddy pour le proxy inverse de Discourse installé avec les instructions du bureau. J’ai utilisé des informations trouvées sur le forum de Caddy ici. Configuration de Caddy Discourse . Cela peut être simple, mais pour ceux d’entre nous qui débutent avec Discourse, cela demande un peu d’effort pour le mettre en place.

Merci pour cette communauté manifestement formidable.

Intégration de Discourse, Caddy et WordPress avec les ports Docker pour le proxy inverse


Aperçu

Ce guide fournit un processus étape par étape pour configurer Discourse avec Caddy comme proxy inverse, aux côtés d’une installation WordPress, en utilisant Docker Compose. Ces instructions sont conçues pour un serveur Ubuntu 22 LTS typique et démontrent comment intégrer plusieurs services tout en assurant une configuration propre et reproductible.


Prérequis

Assurez-vous que les prérequis suivants sont remplis avant de continuer :

  1. Docker et Docker Compose :

    bash

    Copy code

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

  3. Noms de domaine :

    • Un domaine principal pour WordPress (par exemple, website.com).
    • Un sous-domaine pour Discourse (par exemple, forum.website.com).

Étape 1 : Configuration de docker-compose.yml

Le fichier docker-compose.yml définit les services pour Caddy (proxy inverse), WordPress et MySQL.

Emplacement du fichier

Enregistrez le fichier sous /etc/docker-services/docker-compose.yml.

Configuration

yaml

Copy code

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

Étape 2 : Configuration du proxy inverse Caddy

Caddy proxy les requêtes vers Discourse et WordPress et gère les certificats HTTPS.

Emplacement du fichier

Enregistrez la configuration sous /etc/docker-services/Caddyfile.

Configuration

caddyfile

Copy code

website.com {
    reverse_proxy wordpress:80
}

forum.website.com {
    reverse_proxy app:80
}

Cette configuration garantit :

  • Les requêtes vers website.com sont proxyées vers le conteneur WordPress.
  • Les requêtes vers forum.website.com sont proxyées vers le conteneur Discourse.

Étape 3 : Configuration de Discourse

Mettez à jour app.yml pour intégrer Discourse avec Caddy et le réseau Docker.

Emplacement du fichier

Situé dans /var/discourse/containers/app.yml.

Modifications de la configuration

  1. Exposer les ports HTTP non standard :

    yaml

    Copy code

    expose:
      - "8880:80"   # http
    
  2. Supprimer les modèles SSL :

    yaml

    Copy code

    # - "templates/web.ssl.template.yml"
    # - "templates/web.letsencrypt.ssl.template.yml"
    
  3. Définir le réseau Docker :

    yaml

    Copy code

    docker_args:
      - '--network caddy_net'
    
    networks:
      caddy_net:
        external: true
    
  4. Reconstruire Discourse : Appliquez les modifications en reconstruisant le conteneur Discourse :

    bash

    Copy code

    cd /var/discourse
    ./launcher rebuild app
    

Étape 4 : Déployer les services

Démarrez les services Docker pour Caddy et WordPress :

  1. Accédez au répertoire Docker Compose :

    bash

    Copy code

    cd /etc/docker-services
    
  2. Lancez les conteneurs :

    bash

    Copy code

    docker compose up -d
    

Étape 5 : Test et vérification

  1. Vérifier les conteneurs en cours d’exécution :

    bash

    Copy code

    docker ps
    
  2. Accéder à WordPress : Accédez à :

    arduino

    Copy code

    https://website.com
    
  3. Accéder à Discourse : Accédez à :

    arduino

    Copy code

    https://forum.website.com
    
  4. Vérifier les journaux :

    • Caddy :

      bash

      Copy code

      docker logs caddy
      
    • Discourse :

      bash

      Copy code

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

Dépannage

  1. Discourse ne répond pas :

    • Assurez-vous que Discourse est lié au port 8880.

    • Vérifiez que le conteneur est connecté à caddy_net :

      bash

      Copy code

      docker network inspect caddy_net
      
  2. Erreurs SSL Caddy :

    • Vérifiez les journaux de certificats de Caddy dans /data.
  3. Problèmes de reconstruction :

    • Assurez-vous que le réseau caddy_net est actif lors de la reconstruction de Discourse :

      bash

      Copy code

      docker network ls
      

Conclusion

Ce guide démontre comment intégrer Discourse, Caddy et WordPress en utilisant Docker Compose et une configuration de proxy inverse. En suivant ces étapes, vous pouvez obtenir une configuration modulaire et sécurisée pour votre propre infrastructure de site Web.

Tu as utilisé un Arduino pour ça ?