Это мой первый пост, и я хочу поделиться гайдом, который я создал вместе с нашим другом ChatGPT после нескольких дней попыток разобраться, как заставить Caddy работать в качестве обратного прокси для Discourse, установленного по официальным инструкциям. Я использовал информацию, найденную на форуме Caddy здесь: Настройка Caddy для Discourse. Возможно, это просто, но для тех из нас, кто только начинает работать с Discourse, это может оказаться непростой задачей.
Спасибо за явно отличное сообщество.
Интеграция Discourse, Caddy и WordPress с использованием портов Docker для обратного прокси
Обзор
Это руководство представляет пошаговый процесс настройки Discourse с использованием Caddy в качестве обратного прокси, а также установки WordPress с помощью Docker Compose. Эти инструкции предназначены для типичного сервера Ubuntu 22 LTS и демонстрируют, как интегрировать несколько сервисов, обеспечивая чистую и воспроизводимую настройку.
Необходимые условия
Перед началом убедитесь, что выполнены следующие требования:
- Docker и Docker Compose:
bash
Copy code
apt update && apt install docker docker-compose -y
- Установленный Discourse:
- Установите Discourse, следуя официальным инструкциям по установке.
- Доменные имена:
- Основное доменное имя для 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
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
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.
Изменения в конфигурации
- Открытие нестандартных HTTP-портов:
yaml
Copy code
expose:
- "8880:80" # http
- Удаление SSL-шаблонов:
yaml
Copy code
# - "templates/web.ssl.template.yml"
# - "templates/web.letsencrypt.ssl.template.yml"
- Настройка сети Docker:
yaml
Copy code
docker_args:
- '--network caddy_net'
networks:
caddy_net:
external: true
- Пересборка Discourse: Примените изменения, пересобрав контейнер Discourse:
bash
Copy code
cd /var/discourse
./launcher rebuild app
Шаг 4: Развертывание сервисов
Запустите сервисы Docker для Caddy и WordPress:
- Перейдите в директорию Docker Compose:
bash
Copy code
cd /etc/docker-services
- Запустите контейнеры:
bash
Copy code
docker compose up -d
Шаг 5: Тестирование и проверка
- Проверка запущенных контейнеров:
bash
Copy code
docker ps
- Доступ к WordPress: Перейдите по адресу:
arduino
Copy code
https://website.com
- Доступ к Discourse: Перейдите по адресу:
arduino
Copy code
https://forum.website.com
- Проверка логов:
- Caddy:
bash
Copy code
docker logs caddy
- Discourse:
bash
Copy code
tail -f /var/discourse/shared/standalone/log/rails/production.log
Устранение неполадок
- Discourse не отвечает:
- Убедитесь, что Discourse привязан к порту
8880. - Проверьте, что контейнер подключен к сети
caddy_net:
bash
Copy code
docker network inspect caddy_net
- Ошибки SSL в Caddy:
- Проверьте логи сертификатов Caddy в
/data.
- Проблемы с пересборкой:
- Убедитесь, что сеть
caddy_netактивна при пересборке Discourse:
bash
Copy code
docker network ls
Заключение
Это руководство демонстрирует, как интегрировать Discourse, Caddy и WordPress с использованием Docker Compose и конфигурации обратного прокси. Следуя этим шагам, вы сможете создать модульную и безопасную настройку для вашей веб-инфраструктуры.