Ghost 블로그 구축 과정

개요

프로젝트나 학교 생활 중 배운 내용을 정리하고 싶어 개발 블로그를 개설하게 되었다.
처음에는 대중적으로 사용되는 네이버 블로그나 티스토리, 구글링 중 자주 접했던 벨로그, 미디엄 등 다양한 플랫폼을 검토해보았다. 그러나 결국에는 직접 서버에 구축할 수 있는 Ghost 플랫폼이 더욱 매력적으로 느껴졌고, 이를 선택하게 되었다.

이 글에서는 Ghost 블로그를 셋업하는 과정에서 겪은 문제들과 그 해결 과정을 정리해보고자 한다.


1. 설치 중 서버 끊김

필자는 오라클 클라우드의 무료 서버를 사용 중이며,

  • 서울 리전에 1GB 메모리 서버 2대,
  • 미국 동부 리전에 18GB 메모리 서버 1대를 사용 중이다.

처음에는 당연히 응답 속도가 더 빠른 서울 리전 서버에 블로그를 개설하려고 했다. 그러나 ghost install 과정 중 서버 전체가 다운되는 현상이 반복적으로 발생했다.

초기에는 SSL 문제나 dependency 설치 실패가 원인이라고 판단하여 --no-ssl 옵션을 붙여 설치를 시도하기도 했다. 하지만 원인은 서버 메모리 부족이었다.

tmux 등을 사용하여 시간은 오래 걸리더라도 설치를 완료하는 방법도 있었지만, 설치조차 어려운 메모리 상태라면 운영 중에도 잦은 다운이 발생할 수 있다는 우려가 있었다.
결국 응답 속도를 일정 부분 포기하고, 미국 동부 리전의 18GB 서버에 Ghost를 새로 설치하기로 결정했다.


2. SSL 셋업 불가

서버를 변경한 후에는 --no-ssl 옵션을 붙여 Ghost 설치 자체는 무사히 완료했다.
이후 HTTPS 접속을 위한 SSL 설정을 진행했는데, 여러 문제로 인해 셋업이 막혔다.

523 Origin is unreachable

Cloudflare와 오라클 클라우드를 함께 사용할 경우 이 오류는 종종 발생한다.
가장 흔한 원인은 80번, 443번 포트가 오픈되어 있지 않은 경우로, 다음 설정이 필요하다:

  • 오라클 클라우드 VCN의 Security List에서 80, 443번 포트를 인바운드 허용
  • 서버 내에서 CLI로 다음 명령 실행:
iptables -I INPUT -p tcp -dport 80 -j ACCEPT
iptables -I INPUT -p tcp -dport 443 -j ACCEPT

하지만 필자의 경우, Cloudflare의 Proxied 설정이 추가적인 문제를 일으켰다.
Ghost 서버는 아직 SSL이 설정되지 않은 상태로, 오직 HTTP 요청만 수신 가능한 상태였다. 그런데 Cloudflare의 Proxied 모드는 HTTPS로 요청을 프록시하여 전달하려다 보니, 오리진 서버와의 연결이 실패해 523 오류가 발생했다.

결과적으로 다음 세 가지 모두를 설정한 후에야 SSL 셋업이 정상적으로 완료되었다:

  1. Security List 포트 오픈 (80, 443)
  2. iptables 포트 허용
  3. Cloudflare Proxied 설정 해제 → DNS만 연결 (DNS only)

3. Too Many Redirects

SSL 셋업 이후 Cloudflare의 Proxied 설정을 다시 활성화했을 때, 블로그에서 에셋을 불러오는 과정에서 문제가 발생했다.

원인은 Cloudflare의 SSL 모드가 Flexible로 설정되어 있었기 때문이었다.
이 설정은 Cloudflare와 오리진 서버 간의 통신을 HTTP로 처리하게 되는데, Ghost는 이를 감지하지 못하고 클라이언트 요청을 HTTPS로 리디렉션하려고 시도하면서 무한 루프가 발생했다.

해당 문제는 Cloudflare의 SSL 모드를 Full (Strict)로 변경함으로써 해결할 수 있었다.
오리진 서버가 HTTPS 요청을 직접 수신하게 되면서, Ghost도 이를 정확히 인식하고 리디렉션 루프 없이 정상적으로 에셋을 로드할 수 있게 되었다.


마무리

Ghost 블로그는 직접 서버에 구축이 가능하고, 커스터마이징 자유도도 높아 분명 매력적인 선택지다.
하지만 설치 과정에서는 예상보다 많은 기술적 문제에 부딪힐 수 있으며, 서버나 인프라 환경에 대한 이해도도 어느 정도 요구된다.

필자 역시 구글링과 챗지피티의 도움을 받아 몇 시간 동안 삽질한 끝에 설치에 성공할 수 있었지만, 단순히 개발 블로그를 시작하고자 하는 목적이라면 다른 플랫폼을 사용하는 편이 훨씬 효율적이다.

Ghost를 꼭 써야겠다면 유료 플랜으로 서버까지 제공해 주는 옵션이 있으니 그걸 이용해 보는 것이 좋겠다.