Ghost 블로그 로그인 되지 않은 문제 해결

Ghost의 staffDeviceVerification 속성에 의해 로그인 되지 않는 문제를 경험했다. 이 속성은 관리자가 새로운 디바이스에서 로그인할 때 알림 메일을 발송하는 속성인데 이 속성으로 로그인에 문제가 발생할 수 있다.

Ghost 블로그 로그인 되지 않은 문제 해결
Photo by David Pupăză / Unsplash

한해를 돌아보며 다시 블로그에 글을 작성하기 위해서 오랫만에 블로그에 접속했는데 도메인 연장 기간이 지나 도메인을 바꿔야 했다. 도메인을 바꾸면서 기존의 블로그 플랫폼을 다른 곳으로 사용하려고 했지만, 역시나 마땅히 마음에 드는 프랫폼이 없어 ghost 블로그 플랫폼을 그대로 사용하기로 했다. 그동안 업그레이드된 버전이 출시 되어 ghost cli로 업데이트를 진행하고, 변경된 도메인을 적용하기 위해서 설정 파일과 데이터베이스에 접근해 데이터를 수정했다.

기존에는 AWS Lightsail 만 사용했었는데, 이번에는 AWS Certificate + WAF + Cloudfront + Lightsail 구성으로 방화벽과 엣지를 추가해서 구성했다. 이와 관련된 자료는 자세하게 포스팅할 예정이다.

전체적인 설정을 모두 마친 후 새로운 도메인으로 접속해서 사이트가 정상적으로 서비스 되는 것을 확인했다. 모든 설정 확인 후, 글을 작성하기 위해 ghost에 로그인을 시도했지만 로그인이 되지 않는 문제를 발생했다.

이때부터 여러가지 이유들을 생각했다.

  • 비밀번호 불일치
  • 도메인 변경으로 인한 Cookie 문제
  • AWS Cloudfront Cache 설정

우선 비밀번호 불일치를 예상하고 데이터베이스에 패스워드를 업데이트 했지만 문제는 해결되지 않았다. 여러가지 자료를 찾아보며 ghost 버전이 올라가면서 관리자 인증 방식 때문인데 staffDeviceVerification 설정 때문에 인증이 완료되지 않는 문제 때문이였다. 이 속성은 새로운 디바이스에서 로그인을 할 경우 관리자에게 이메일로 알림을 전송하는 속성이다. 그런데 Ghost 에 이메일 설정을 제대로 하지 않았거나, email 속성을 Direct 로 설정한 경우 서버 자체 메일 시스템으로 발송을 하는 메커니즘으로 동작하는데 설정이 제대로 되어 있지 않아서 메일 발송에 문제가 생겨 응답시간이 길어지면서 자동으로 타임아웃이 되어 버린다. 그래서 가장 빠른 방법은 staffDeviceVerficiation 속성을 false 로 수정하는 것이다. 기본적으로 아무런 설정을 하지 않으면 내부적으로 true가 기본값이기 때문에 반드시 false로 명시적 설정을 해야한다.

Ghost 홈 디렉토리 안에서 config.production.json 파일을 열어서 다음 내용을 추가한다.

vi config.production.json
{
  "url": "https://blog.sungkwang.me",
  "security": {
    "staffDeviceVerification": false
  },
  ...
}

설정 파일을 수정한 다음 ghost를 재시작 한다.

ghost restart

다시 사이트에 로그인하면 세션 문제 없이 로그인이 잘 되는 것을 확인할 수 있다.

질문 및 의견을 남겨주세요 >