Integrazione di Discourse, Caddy e WordPress con Docker Ports per Reverse Proxy

Questo è il mio primo post e volevo fornire una guida che ho creato con il nostro amico ChatGPT dopo aver lottato per giorni per capire come far funzionare Caddy come proxy inverso per Discourse installato con le istruzioni dell’ufficio. Ho usato informazioni trovate sul forum di Caddy qui. Configurazione Caddy Discourse. Questo potrebbe essere semplice, ma per quelli di noi che stanno appena iniziando con Discourse, è un po’ uno sforzo per farlo funzionare.

Grazie per una community ovviamente fantastica.

Integrazione di Discourse, Caddy e WordPress con Porte Docker per Proxy Inverso


Panoramica

Questa guida fornisce un processo passo-passo per configurare Discourse con Caddy come proxy inverso, insieme a un’installazione di WordPress, utilizzando Docker Compose. Queste istruzioni sono progettate per un tipico server Ubuntu 22 LTS e dimostrano come integrare più servizi garantendo una configurazione pulita e riproducibile.


Prerequisiti

Assicurati che i seguenti prerequisiti siano soddisfatti prima di procedere:

  1. Docker e Docker Compose:

    bash

    Copia codice

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

  3. Nomi di Dominio:

    • Un dominio principale per WordPress (ad es. website.com).
    • Un sottodominio per Discourse (ad es. forum.website.com).

Passaggio 1: Configurazione di docker-compose.yml

Il file docker-compose.yml definisce i servizi per Caddy (proxy inverso), WordPress e MySQL.

Posizione del File

Salva il file come /etc/docker-services/docker-compose.yml.

Configurazione

yaml

Copia codice

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

Passaggio 2: Configurazione del Proxy Inverso Caddy

Caddy inoltra le richieste sia a Discourse che a WordPress e gestisce i certificati HTTPS.

Posizione del File

Salva la configurazione come /etc/docker-services/Caddyfile.

Configurazione

caddyfile

Copia codice

website.com {
    reverse_proxy wordpress:80
}

forum.website.com {
    reverse_proxy app:80
}

Questa configurazione garantisce:

  • Le richieste a website.com vengono inoltrate al container WordPress.
  • Le richieste a forum.website.com vengono inoltrate al container Discourse.

Passaggio 3: Configurazione di Discourse

Aggiorna app.yml per integrare Discourse con Caddy e la rete Docker.

Posizione del File

Situato in /var/discourse/containers/app.yml.

Modifiche alla Configurazione

  1. Esporre Porte HTTP Non Standard:

    yaml

    Copia codice

    expose:
      - "8880:80"   # http
    
  2. Rimuovere i Template SSL:

    yaml

    Copia codice

    # - "templates/web.ssl.template.yml"
    # - "templates/web.letsencrypt.ssl.template.yml"
    
  3. Impostare la Rete Docker:

    yaml

    Copia codice

    docker_args:
      - '--network caddy_net'
    
    networks:
      caddy_net:
        external: true
    
  4. Ricostruire Discourse: Applica le modifiche ricostruendo il container Discourse:

    bash

    Copia codice

    cd /var/discourse
    ./launcher rebuild app
    

Passaggio 4: Distribuzione dei Servizi

Avvia i servizi Docker per Caddy e WordPress:

  1. Naviga nella directory Docker Compose:

    bash

    Copia codice

    cd /etc/docker-services
    
  2. Avvia i container:

    bash

    Copia codice

    docker compose up -d
    

Passaggio 5: Test e Verifica

  1. Verifica dei Container in Esecuzione:

    bash

    Copia codice

    docker ps
    
  2. Accesso a WordPress: Naviga su:

    arduino

    Copia codice

    https://website.com
    
  3. Accesso a Discourse: Naviga su:

    arduino

    Copia codice

    https://forum.website.com
    
  4. Controllo dei Log:

    • Caddy:

      bash

      Copia codice

      docker logs caddy
      
    • Discourse:

      bash

      Copia codice

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

Risoluzione dei Problemi

  1. Discourse non risponde:
    • Assicurati che Discourse sia collegato alla porta 8880.

    • Verifica che il container sia connesso a caddy_net:

      bash

      Copia codice

      docker network inspect caddy_net
      
  2. Errori SSL di Caddy:
    • Controlla i log dei certificati di Caddy in /data.
  3. Problemi di Ricostruzione:
    • Assicurati che la rete caddy_net sia attiva durante la ricostruzione di Discourse:

      bash

      Copia codice

      docker network ls
      

Conclusione

Questa guida dimostra come integrare Discourse, Caddy e WordPress utilizzando Docker Compose e una configurazione di proxy inverso. Seguendo questi passaggi, puoi ottenere una configurazione modulare e sicura per la tua infrastruttura di siti web.

Hai usato un Arduino per questo?