Integration von Discourse, Caddy und WordPress mit Docker-Ports für Reverse Proxy

Dies ist mein erster Beitrag und ich wollte eine Anleitung bereitstellen, die ich mit unserem Freund ChatGPT erstellt habe, nachdem ich tagelang damit gekämpft hatte, Caddy für den Reverse-Proxy für Discourse, das gemäß den Anweisungen des Büros installiert wurde, zum Laufen zu bringen. Ich habe Informationen aus dem Forum von Caddy hier verwendet. Caddy Discourse Setup. Das mag einfach sein, aber für diejenigen von uns, die gerade erst mit Discourse beginnen, ist es eine ziemliche Anstrengung, es zum Laufen zu bringen.

Vielen Dank für eine offensichtlich großartige Community.

Integration von Discourse, Caddy und WordPress mit Docker-Ports für Reverse Proxy


Übersicht

Diese Anleitung bietet einen Schritt-für-Schritt-Prozess zur Einrichtung von Discourse mit Caddy als Reverse Proxy, zusammen mit einer WordPress-Installation, unter Verwendung von Docker Compose. Diese Anweisungen sind für einen typischen Ubuntu 22 LTS-Server konzipiert und zeigen, wie mehrere Dienste integriert werden können, um eine saubere und reproduzierbare Einrichtung zu gewährleisten.


Voraussetzungen

Stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind, bevor Sie fortfahren:

  1. Docker und Docker Compose:

    bash

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

  3. Domainnamen:

    • Eine primäre Domain für WordPress (z. B. website.com).
    • Eine Subdomain für Discourse (z. B. forum.website.com).

Schritt 1: Konfiguration von docker-compose.yml

Die Datei docker-compose.yml definiert Dienste für Caddy (Reverse Proxy), WordPress und MySQL.

Dateispeicherort

Speichern Sie die Datei als /etc/docker-services/docker-compose.yml.

Konfiguration

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

Schritt 2: Einrichtung des Caddy Reverse Proxy

Caddy leitet Anfragen sowohl an Discourse als auch an WordPress weiter und verwaltet HTTPS-Zertifikate.

Dateispeicherort

Speichern Sie die Konfiguration als /etc/docker-services/Caddyfile.

Konfiguration

caddyfile

website.com {
    reverse_proxy wordpress:80
}

forum.website.com {
    reverse_proxy app:80
}

Diese Konfiguration stellt sicher:

  • Anfragen an website.com werden an den WordPress-Container weitergeleitet.
  • Anfragen an forum.website.com werden an den Discourse-Container weitergeleitet.

Schritt 3: Konfiguration von Discourse

Aktualisieren Sie app.yml, um Discourse mit Caddy und dem Docker-Netzwerk zu integrieren.

Dateispeicherort

Befindet sich in /var/discourse/containers/app.yml.

Konfigurationsänderungen

  1. Nicht standardmäßige HTTP-Ports freigeben:

    yaml

    expose:
      - "8880:80"   # http
    
  2. SSL-Vorlagen entfernen:

    yaml

    # - "templates/web.ssl.template.yml"
    # - "templates/web.letsencrypt.ssl.template.yml"
    
  3. Docker-Netzwerk festlegen:

    yaml

    docker_args:
      - '--network caddy_net'
    
    networks:
      caddy_net:
        external: true
    
  4. Discourse neu erstellen: Wenden Sie die Änderungen an, indem Sie den Discourse-Container neu erstellen:

    bash

    cd /var/discourse
    ./launcher rebuild app
    

Schritt 4: Dienste bereitstellen

Starten Sie die Docker-Dienste für Caddy und WordPress:

  1. Navigieren Sie zum Docker Compose-Verzeichnis:

    bash

    cd /etc/docker-services
    
  2. Starten Sie die Container:

    bash

    docker compose up -d
    

Schritt 5: Testen und Verifizierung

  1. Laufende Container überprüfen:

    bash

    docker ps
    
  2. WordPress aufrufen: Navigieren Sie zu:

    arduino

    https://website.com
    
  3. Discourse aufrufen: Navigieren Sie zu:

    arduino

    https://forum.website.com
    
  4. Logs überprüfen:

    • Caddy:

      bash

      docker logs caddy
      
    • Discourse:

      bash

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

Fehlerbehebung

  1. Discourse reagiert nicht:
    • Stellen Sie sicher, dass Discourse an Port 8880 gebunden ist.

    • Überprüfen Sie, ob der Container mit caddy_net verbunden ist:

      bash

      docker network inspect caddy_net
      
  2. Caddy SSL-Fehler:
    • Überprüfen Sie die Caddy-Zertifikatsprotokolle in /data.
  3. Probleme beim Neuerstellen:
    • Stellen Sie sicher, dass das caddy_net-Netzwerk aktiv ist, wenn Sie Discourse neu erstellen:

      bash

      docker network ls
      

Fazit

Diese Anleitung zeigt, wie Discourse, Caddy und WordPress mithilfe von Docker Compose und einer Reverse-Proxy-Konfiguration integriert werden. Durch Befolgen dieser Schritte können Sie eine modulare und sichere Einrichtung für Ihre eigene Website-Infrastruktur erreichen.

Hast du dafür ein Arduino benutzt?