이것은 제 첫 게시글이며, 공식 설치 설명서를 따르며 Discourse를 설치한 후 Caddy를 리버스 프록시로 설정하는 방법에 며칠 동안 고생한 끝에, 친구인 ChatGPT와 함께 만든 가이드를 공유하고 싶었습니다. 여기 Caddy 포럼에서 찾은 정보를 활용했습니다. Caddy Discourse Setup . 이 내용은 직관적일 수 있지만, Discourse를 처음 시작하는 우리들에게는 이를 구동시키기까지 꽤나 험난한 과정이었을 것입니다.
분명히 훌륭한 커뮤니티에 감사드립니다.
Docker 포트와 리버스 프록시를 위한 Discourse, Caddy, WordPress 통합
개요
이 가이드는 Docker Compose를 사용하여 Caddy를 리버스 프록시로, WordPress 설치와 함께 Discourse를 설정하는 단계별 과정을 제공합니다. 이 설명서는 일반적인 Ubuntu 22 LTS 서버를 대상으로 하며, 여러 서비스를 통합하고 깔끔하고 재현 가능한 설정을 보장하는 방법을 보여줍니다.
전제 조건
진행하기 전에 다음 전제 조건이 충족되었는지 확인하십시오:
- Docker 및 Docker Compose:
bash
코드 복사
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
코드 복사
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 모두로 요청을 프록시하고 HTTPS 인증서를 관리합니다.
파일 위치
구성을 /etc/docker-services/Caddyfile로 저장하십시오.
구성
caddyfile
코드 복사
website.com {
reverse_proxy wordpress:80
}
forum.website.com {
reverse_proxy app:80
}
이 구성은 다음을 보장합니다:
website.com에 대한 요청은 WordPress 컨테이너로 프록시됩니다.forum.website.com에 대한 요청은 Discourse 컨테이너로 프록시됩니다.
3단계: Discourse 구성
Discourse를 Caddy 및 Docker 네트워크와 통합하도록 app.yml을 업데이트하십시오.
파일 위치
/var/discourse/containers/app.yml에 위치합니다.
구성 변경 사항
- 비표준 HTTP 포트 노출:
yaml
코드 복사
expose:
- "8880:80" # http
- SSL 템플릿 제거:
yaml
코드 복사
# - "templates/web.ssl.template.yml"
# - "templates/web.letsencrypt.ssl.template.yml"
- Docker 네트워크 설정:
yaml
코드 복사
docker_args:
- '--network caddy_net'
networks:
caddy_net:
external: true
- Discourse 재빌드: Discourse 컨테이너를 재빌드하여 변경 사항을 적용하십시오:
bash
코드 복사
cd /var/discourse
./launcher rebuild app
4단계: 서비스 배포
Caddy 및 WordPress의 Docker 서비스를 시작하십시오:
- Docker Compose 디렉터리로 이동:
bash
코드 복사
cd /etc/docker-services
- 컨테이너 실행:
bash
코드 복사
docker compose up -d
5단계: 테스트 및 검증
- 실행 중인 컨테이너 확인:
bash
코드 복사
docker ps
- WordPress 액세스: 다음으로 이동:
arduino
코드 복사
https://website.com
- Discourse 액세스: 다음으로 이동:
arduino
코드 복사
https://forum.website.com
- 로그 확인:
- Caddy:
bash
코드 복사
docker logs caddy
- Discourse:
bash
코드 복사
tail -f /var/discourse/shared/standalone/log/rails/production.log
문제 해결
- Discourse 응답 없음:
- Discourse가 포트
8880에 바인딩되었는지 확인하십시오. - 컨테이너가
caddy_net에 연결되었는지 확인하십시오:
bash
코드 복사
docker network inspect caddy_net
- Caddy SSL 오류:
/data에서 Caddy 인증서 로그를 확인하십시오.
- 재빌드 문제:
- Discourse를 재빌드할 때
caddy_net네트워크가 활성 상태인지 확인하십시오:
bash
코드 복사
docker network ls
결론
이 가이드는 Docker Compose와 리버스 프록시 구성을 사용하여 Discourse, Caddy, WordPress를 통합하는 방법을 보여줍니다. 이 단계를 따르면 자체 웹사이트 인프라를 위한 모듈화되고 안전한 설정을 달성할 수 있습니다.