블로그 자동화
Ghost 블로그, n8n 워크플로우, Open WebUI AI 도구를 Docker 환경에서 연동해 자동화된 콘텐츠 생성 시스템을 구축하려면 다음 단계를 따라 진행하세요.
1. 기본 인프라 구성
1) Docker volume 생성
- docker volume create ghost_data
- docker volume create n8n_data
2) Docker Compose 설정 (docker-compose.yml):
services:
ghost:
image: ghost:latest
environment:
url: https://blog.yourdomain.com
database__client: mysql
database__connection__host: db
database__connection__user: ghost
database__connection__password: ghost_pass
database__connection__database: ghost
volumes:
- ghost_data:/var/lib/ghost/content
networks:
- proxy-tier
n8n:
image: n8nio/n8n
environment:
WEBHOOK_TUNNEL_URL: https://n8n.yourdomain.com/
N8N_HOST: n8n.yourdomain.com
N8N_PROTOCOL: https
ports:
- "5678:5678"
volumes:
- n8n_data:/home/node/.n8n
networks:
- proxy-tier
open-webui:
image: open-webui
environment:
OPENAI_API_KEY: ${OPENAI_KEY}
ports:
- "3000:8080"
networks:
- proxy-tier
networks:
proxy-tier:
bridge
volumes:
ghost_data:
external: true
n8n_data:
external: true
2. Nginx Proxy Manager 설정
- 도메인 매핑:
blog.yourdomain.com
→ Ghost 컨테이너 (포트 2368)n8n.yourdomain.com
→ n8n 컨테이너 (포트 5678)ai.yourdomain.com
→ Open WebUI 컨테이너 (포트 3000)
- SSL 인증서 발급:
- Let's Encrypt를 통해 각 서브도메인에 대해 HTTPS 설정
예시) 대표 도메인으로 서브도메인 인증서 한번에 받기
---
sudo certbot --nginx
--cert-name ai-personalserv.com
-d ai-personalserv.com
-d www.ai-personalserv.com
-d memo.ai-personalserv.com
-d n8n.ai-personalserv.com
-d chat.ai-personalserv.com
-d jupyter.ai-personalserv.com
-d netdata.ai-personalserv.com
-d blog.ai-personalserv.com
-d sonarqube.ai-personalserv.com
-d files.ai-personalserv.com
-d jellyfin.ai-personalserv.com
-d tika.ai-personalserv.com
-d wordpress.ai-personalserv.com
-d gpt.ai-personalserv.com
-d cld.ai-personalserv.com
-d dpsk.ai-personalserv.com
-d pplx.ai-personalserv.com
-d auth.ai-personalserv.com
--force-renewal
---
- Let's Encrypt를 통해 각 서브도메인에 대해 HTTPS 설정
3. 자동화 워크플로우 구성 (n8n)
주요 단계:
- 트렌드 주제 수집:
- Google Trends/RSS 피드 노드 활용
- 트위터/X API 연동 해시태그 모니터링8
- AI 콘텐츠 생성:python
# Open WebUI API 호출 예시
requests
---
importresponse = requests.post(
"https://ai.yourdomain.com/api/v1/generate",
json={
"prompt": "주제에 대한 1000자 분량의 블로그 글 작성",
"max_tokens": 1500
}
) - Ghost 자동 게시:
워크플로우 구조:
text웹훅 트리거 → 트렌드 분석 → AI 초안 생성 → 편집 팀 검토(옵션) → Ghost 게시 → 소셜 공유
4. 필수 환경 변수 설정
bash# .env 파일
https://blog.yourdomain.com
GHOST_URL=GHOST_ADMIN_KEY=
your_ghost_keyOPENAI_KEY=
sk-yourkeyN8N_BASIC_AUTH_USER=
adminN8N_BASIC_AUTH_PASSWORD=
secure_password
5. 보안 강화 조치
- IP 화이트리스트: Nginx에서 관리자 페이지 접근 IP 제한
- API 키 관리: n8n 크레덴셜 관리 시스템 활용5
- 자동 백업: Ghost와 n8n 데이터 볼륨 정기 백업 설정
문제 해결 팁
추가로 필요한 정보:
- Ghost 콘텐츠 API 키 발급 방법
- Open WebUI 사용자 지정 모델 로드 절차
- 트래픽 모니터링을 위한 Grafana 대시보드 연동
- n8n 워크플로우 에러 핸들링 전략
각 서비스의 공식 문서와 다음 리소스를 참고하세요:
- Ghost Admin API: https://ghost.org/docs/admin-api/
- n8n AI 통합: https://docs.n8n.io/integrations/ai/
- Open WebUI 설정: https://docs.openwebui.com/