# Интеграция Discourse, Caddy и WordPress с Docker-портами для обратного прокси

**URL:** https://meta.discourse.org/t/integrating-discourse-caddy-and-wordpress-with-docker-ports-for-reverse-proxy/337656
**Category:** Self-hosting
**Tags:** hosting
**Created:** [22.Ноябрь.2024 02:55:45 UTC](https://meta.discourse.org/t/integrating-discourse-caddy-and-wordpress-with-docker-ports-for-reverse-proxy/337656 "2024-11-22T02:55:45Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![BrianC](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/brianc/32/487568_2.png) [@BrianC](https://meta.discourse.org/u/BrianC)
#### Post date: [22.Ноябрь.2024 02:55:45 UTC](https://meta.discourse.org/t/integrating-discourse-caddy-and-wordpress-with-docker-ports-for-reverse-proxy/337656/1 "2024-11-22T02:55:45Z")

</div>

Это мой первый пост, и я хочу поделиться гайдом, который я создал вместе с нашим другом ChatGPT после нескольких дней попыток разобраться, как заставить Caddy работать в качестве обратного прокси для Discourse, установленного по официальным инструкциям. Я использовал информацию, найденную на форуме Caddy здесь: [Настройка Caddy для Discourse](https://caddy.community/t/discourse-with-caddy-v2-in-docker/9244). Возможно, это просто, но для тех из нас, кто только начинает работать с Discourse, это может оказаться непростой задачей.

Спасибо за явно отличное сообщество.

### **Интеграция Discourse, Caddy и WordPress с использованием портов Docker для обратного прокси**

* * *

### **Обзор**

Это руководство представляет пошаговый процесс настройки Discourse с использованием Caddy в качестве обратного прокси, а также установки WordPress с помощью Docker Compose. Эти инструкции предназначены для типичного сервера Ubuntu 22 LTS и демонстрируют, как интегрировать несколько сервисов, обеспечивая чистую и воспроизводимую настройку.

* * *

### **Необходимые условия**

Перед началом убедитесь, что выполнены следующие требования:

1. **Docker** и **Docker Compose** :

bash

Copy code

```plaintext
apt update && apt install docker docker-compose -y

```

1. **Установленный Discourse** :

- Установите Discourse, следуя [официальным инструкциям по установке](https://github.com/discourse/discourse/blob/main/docs/INSTALL-cloud.md).

1. **Доменные имена** :

- Основное доменное имя для WordPress (например, `website.com`).
- Поддомен для Discourse (например, `forum.website.com`).

* * *

### **Шаг 1: Настройка `docker-compose.yml`**

Файл `docker-compose.yml` определяет сервисы для Caddy (обратный прокси), WordPress и MySQL.

#### **Расположение файла**

Сохраните файл как `/etc/docker-services/docker-compose.yml`.

#### **Конфигурация**

yaml

Copy code

```plaintext
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

```

* * *

### **Шаг 2: Настройка обратного прокси Caddy**

Caddy перенаправляет запросы как к Discourse, так и к WordPress, а также управляет SSL-сертификатами.

#### **Расположение файла**

Сохраните конфигурацию как `/etc/docker-services/Caddyfile`.

#### **Конфигурация**

caddyfile

Copy code

```plaintext
website.com {
    reverse_proxy wordpress:80
}

forum.website.com {
    reverse_proxy app:80
}

```

Эта конфигурация обеспечивает:

- Перенаправление запросов к `website.com` в контейнер WordPress.
- Перенаправление запросов к `forum.website.com` в контейнер Discourse.

* * *

### **Шаг 3: Настройка Discourse**

Обновите `app.yml`, чтобы интегрировать Discourse с Caddy и сетью Docker.

#### **Расположение файла**

Расположен в `/var/discourse/containers/app.yml`.

#### **Изменения в конфигурации**

1. **Открытие нестандартных HTTP-портов** :

yaml

Copy code

```plaintext
expose:
  - "8880:80" # http

```

1. **Удаление SSL-шаблонов** :

yaml

Copy code

```plaintext
# - "templates/web.ssl.template.yml"
# - "templates/web.letsencrypt.ssl.template.yml"

```

1. **Настройка сети Docker** :

yaml

Copy code

```plaintext
docker_args:
  - '--network caddy_net'

networks:
  caddy_net:
    external: true

```

1. **Пересборка Discourse** : Примените изменения, пересобрав контейнер Discourse:

bash

Copy code

```plaintext
cd /var/discourse
./launcher rebuild app

```

* * *

### **Шаг 4: Развертывание сервисов**

Запустите сервисы Docker для Caddy и WordPress:

1. Перейдите в директорию Docker Compose:

bash

Copy code

```plaintext
cd /etc/docker-services

```

1. Запустите контейнеры:

bash

Copy code

```plaintext
docker compose up -d

```

* * *

### **Шаг 5: Тестирование и проверка**

1. **Проверка запущенных контейнеров** :

bash

Copy code

```plaintext
docker ps

```

1. **Доступ к WordPress** : Перейдите по адресу:

arduino

Copy code

```plaintext
https://website.com

```

1. **Доступ к Discourse** : Перейдите по адресу:

arduino

Copy code

```plaintext
https://forum.website.com

```

1. **Проверка логов** :

- **Caddy** :

bash

Copy code

```plaintext
docker logs caddy

```

- **Discourse** :

bash

Copy code

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

```

* * *

### **Устранение неполадок**

1. **Discourse не отвечает** :

- Убедитесь, что Discourse привязан к порту `8880`.
- Проверьте, что контейнер подключен к сети `caddy_net`:

bash

Copy code

```plaintext
docker network inspect caddy_net

```

1. **Ошибки SSL в Caddy** :

- Проверьте логи сертификатов Caddy в `/data`.

1. **Проблемы с пересборкой** :

- Убедитесь, что сеть `caddy_net` активна при пересборке Discourse:

bash

Copy code

```plaintext
docker network ls

```

* * *

### **Заключение**

Это руководство демонстрирует, как интегрировать Discourse, Caddy и WordPress с использованием Docker Compose и конфигурации обратного прокси. Следуя этим шагам, вы сможете создать модульную и безопасную настройку для вашей веб-инфраструктуры.

---

<div class="post-metadata">

### Author: ![NateDhaliwal](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/natedhaliwal/32/313494_2.png) [@NateDhaliwal](https://meta.discourse.org/u/NateDhaliwal)
#### Post date: [22.Ноябрь.2024 04:18:09 UTC](https://meta.discourse.org/t/integrating-discourse-caddy-and-wordpress-with-docker-ports-for-reverse-proxy/337656/2 "2024-11-22T04:18:09Z")

</div>

> [@Brian](#):
>
> arduino

Вы использовали Arduino для этого?
