고스트 블로그를 온프레미스 환경으로 이전
고스트 매니지드 서비스에 연 300달러를 내던 것을 온프레미스로 옮겨 직접 서비스 하기 시작했습니다.

처음에는 한동안 컨플루언스 위키에 공개 스페이스를 만든 다음 거기에 글을 써 공유했습니다. 컨플루언스 위키는 제가 가장 즐겨 사용하고 또 그만큼 편안한 글 쓰는 도구입니다. 항상 인터넷에 연결 되어 있어야 동작한다는 단점이 있기는 하지만 아직까지는 인터넷이 안 되는 환경에서 글을 쓸 일이 일어나지 않았습니다. 또 인터넷이 안 되는 상황이라면 뭔가를 하려고 노력하기보다는 그냥 자는 편이 낫지 않을까 하는 생각이기도 합니다. 컨플루언스 위키는 분명 저 자신에게는 글을 쓰고 유지하고 다시 끄집어 내 쓸모 있게 만드는데 큰 도움을 주지만 읽는 사람 입장에서는 그렇지 않다는 것을 로그를 보고 깨달았습니다. 원래 현대에 블로그는 사람들이 페이지를 열자마자 스크롤을 주르륵 내려 본 다음 닫아 버리는 행동을 하는 것이 자연스럽지만 컨플루언스 위키는 이 행동을 훨씬 더 많이 불러일으킵니다. 블로그를 예상하고 들어왔는데 갑자기 위키가, 그것도 평소에 거의 볼 일이 없는 모양의 웹사이트가 나타나는데 당황한 결과가 아닐까 하는 추측을 해봤습니다. 그래서 컨플루언스 위키 모양으로 글을 공유하던 방법을 바꿔 블로그 모양으로 운영해보기로 합니다.
이 때 제 입장에서 가장 단순한 방법은 워드프레스 매니지드 서비스를 사용하는 것이었는데 블로그 모양의 웹사이트를 만들기로 결정한 이상 블로그와 거의 동시에 떠오르는 단어가 워드프레스였기 때문입니다. 또 워드프레스를 어딘가 더 저렴한 시스템에 설치할 수도 있었겠지만 블로그 모양의 웹사이트를 운영하는 실험을 하고 싶었을 뿐 블로깅 환경을 관리하는데 신경을 쓰고 싶지 않았습니다. 그래서 워드프레스 매니지드 서비스를 구독하기 시작합니다. 워드프레스 월 이용 요금은 아주 저렴하지는 않았지만 제가 직접 그 환경을 어딘가에 구축하고 운영할 필요를 완전히 제거해 줬고 또 원해 목적에 맞게 웹사이트를 블로그 모양으로 만드는데 집중하게 해 주었습니다. 애초에 텍스트로 가득한 웹사이트가 요즘 세상의 방문자들에게 의미 있기는 쉽지 않았지만 한동안의 비교를 통해 웹사이트를 컨플루언스 위키 모양으로 운영할 때에 비해 블로그 모양으로 운영할 때 사용자들이 좀 더 웹사이트에 머문다는 점을 알게 됐고 컨플루언스 위키가 저 자신에게 얼마나 편안한지에 관계 없이 요즘 세상에 텍스트를 공유하려면 그들에게 익숙한, 혹은 최소한 당혹스럽지는 않은 모양의 웹사이트를 만들 수밖에 없다는 결론에 도달합니다.
하지만 컨플루언스 위키 대신 블로그 모양으로 웹사이트를 만들 생각을 하고 나니 과연 워드프레스 매니지드 서비스를 유지하는 것이 올바른지 고민하게 되었습니다. 워드프레스 매니지드 서비스는 분명 예상한 대로 잘 동작합니다. 글 쓰는 환경은 꽤 편리했고 글을 공유하는 모양 역시 나쁘지 않았습니다. 하지만 워드프레스 매니지드 서비스는 로그인 해 대시보드 인터페이스에 진입하면 항상 뭔가 또 다른 요금제를 권하는데 모든 노력을 다 하고 있는 것처럼 보였습니다. 가령 이미 다른 서비스로부터 도메인을 구입해 유지하고 있는데도 워드프레스를 통해 도메인을 구입하라고 한다든지 이미 다른 서비스를 통해 이메일을 유지하고 있는데도 워드프레스를 통해 이메일을 서비스를 구입하라고 한다든지 현재 방문자 수준이면 가장 싼 요금제로도 충분했지만 계속해서 그 상위 단계 요금제로 변경하라고 권유하고 또 블로그를 통해 아무것도 팔 생각이 없지만 계속해서 전자상거래 시스템을 도입하라고 성화입니다. 이런 메시지들은 대시보드에 진입할 때마다 선명한 빨간색 동그라미로 표시되어 지속적으로 제 주의를 끌려고 노력하는 것 같습니다. 실은 앞서 컨플루언스 위키가 제가 글을 가장 편리하게 쓸 수 있는 도구라고 말한 대로 블로그를. 통해 글을 공유하고 있었지만 글을 만들 때는 여전히 컨플루언스 위키를 사용하고 있었습니다. 덕분에 워드프레스 대시보드가 아무리 제 주의를 끄는 광고를 하기에 혈안이 되어 있다 하더라도 글을 쓰는데 영향을 받지는 않았지만 대시보드에 로그인을 반복할 때마다 점점 더 신경 쓰이기 시작합니다. 이런 동작은 워드프레스 매니지드 서비스의 구독이 끝나 갈 무렵 과연 제 온 신경을 거슬리게 만드는 이 워드프레스를 계속해서 사용할 것인지 고민하게 만들었습니다.
사실 이전까지는 블로그 하면 워드프레스 이외의 도구를 생각하지도 못했는데 이 즈음 우연히 누군가 블로그와 뉴스레터를 운영하는데 사용할 수 있는 고스트라는 도구를 말하는 것을 보고 살펴봤습니다. 오랜 세월에 걸쳐 기능을 추가해 온 워드프레스에 비해 뭔가 기능이 빈약해 보였지만 워드프레스에 비해 훨씬 단순한 모양으로 워드프레스 매니지드와 비슷하게 글을 만들고 공유하는데 집중할 수 있을 것처럼 보였습니다. AWS의 가장 작은 인스턴스에 고스트를 올려 살펴보고 나쁘지 않겠다는 생각을 하게 됐고 또 이 즈음 처음으로 블로그 모양 뿐 아니라 뉴스레터 모양으로 글을 공유하면 어떨까 하는 생각을 하게 된 참이었습니다. 워드프레스 역시 플러그인을 통해 뉴스레터를 운영할 수 있었지만 제가 사용하던 워드프레스 매니지드의 가장 싼 요금제로는 뉴스레터 플러그인을 사용할 수 없었고 또 뉴스레터를 플러그인을 통해 지원하는 소프트웨어 보다는 아예 뉴스레터 기능을 기본으로 제공하는 서비스가 더 장점이 있지 않을까 하는 생각도 들었습니다. 그래서 워드프레스 매니지드 구독이 끝나는 시점에 맞춰 블로그를 고스트로 옮기기로 결정합니다. 블로그를 고스트로 옮기는 과정은 꽤 고통스러웠습니다. 고스트는 마이그레이션 도구와 방법을 제공했지만 전혀 마음에 들지 않는 방법으로 마이그레이션을 해 줍니다. 워드프레스 백업을 읽어 고스트에 표시되도록 해 주기는 했지만 워드프레스에서 가져온 글을 고스트의 HTML 블록 안에 몽땅 넣어 버려 글을 수정하려면 항상 HTML 블록 내부에서 수정하도록 만들었습니다. 결국 모든 글을 하나 하나 직접 복사, 붙여넣기로 가져와야만 했고 이 작업을 반복하는 내내 ‘지금 이게 맞나?’ 싶은 의문을 계속해서 제기하도록 만들었습니다.
고스트는 분명 글을 쓰고 공유하기에 나쁘지 않은 도구이지만 아무래도 저 긴 세월에 걸쳐 비슷한 역할을 하며 발전해 온 워드프레스에 비해 아쉬운 점이 여럿 있었습니다. 가령 고스트는 글이 아주 많은 상황을 별로 고려한 것 같지 않습니다. 블로그 웹사이트를 오랫동안 운영하다 보면 글이 많이 쌓이게 되는데 시간이 지나며 글 여럿의 상태를 바꾸고 싶을 때가 있습니다. 가령 이전에 사용하던 카테고리 구분 대신 다른 카테고리 구분으로 변경하고 싶을 때 워드프레스에서는 여러 글을 한 번에 선택해 변경하는 과정이 상당히 편리합니다. 또 모든 글을 대상으로 찾아 바꾸기를 할 수도 있고 여러 글에 태그를 추가하거나 수정하거나 삭제할 수도 있습니다. 그런데 고스트는 이런 여러 글에 걸친 편집 기능을 그야말로 아무것도 제공하지 않습니다. 만약 새로운 태그를 여러 글에 걸쳐 붙이려 하면 글 하나하나를 편집해 태그를 수정해야 합니다. 가령 뉴스레터 시즌 1을 마무리하며 그동안 작성한 글에 시즌 1 태그를 붙일 때 경험은 가히 황당했습니다.수 백 개에 달하는 글을 하나하나 선택한 다음 태그를 수동으로 붙여야 했는데 고스트 관리자 화면의 글 목록은 페이징 없이 스크롤 하면 다음 목록을 자동으로 불러오며 주소가 바뀌지 않는 모양으로 되어 있어 중간에 실수로 탭을 닫기라도 하면 다시 목록 처음으로 돌아가 직전에 편집하던 글이 나타날 때까지 스크롤 해야 했습니다. 만약 이전에 편집하던 글이 기억나지 않는다면 글 하나하나를 눌러 태그를 점검해야 합니다. 이런 일이 종종 일어나자 한 가지 꾀가 생겼는데 웹사이트 전체를 익스포트 한 다음 텍스트 검색으로 편집 대상인 글을 찾아낸 다음 그 글의 아이디를 직접 주소에 넣고 편집 화면으로 바로바로 이동해 편집할 수 있었는데 그나마 이렇게 하기 시작하면서부터는 중간에 실수로 탭을 닫아 어디까지 편집하고 있었는지 기억할 필요가 없어졌습니다. 하지만 매번 사이트 전체를 익스포트 한 다음 텍스트 검색으로 편집할 글을 찾으며 이게 도대체 뭐 하는 짓인가 하는 생각을 멈출 수 없었습니다.
하지만 일단 섭스크립션을 시작한 이상 이 환경에 적응할 수밖에 없었고 이전에 비해 마음을 훨씬 덜 바꿔 여러 글에 걸쳐 태그를 변경할 일을 만들지 않도록 노력하게 됩니다. 어쩌면 이런 변화가 긍정적일 수도 있겠다고 자신을 애써 설득했는데 실제로 이런 변화는 긍정적이었습니다. 일단 고스트 매니지드의 특징을 대략 이해하고 뉴스레터 모양으로 글을 쓰기 시작해 어느 정도 궤도에 오르자 고스트는 이전 워드프레스와 마찬가지로 글을 작성하고 공유하는데 아무런 문제를 일으키지 않게 됩니다. 여전히 글은 컨플루언스 위키에서 작성했지만 컨플루언스 쪽의 오토메이션 기능과 고스트 쪽의 웹훅 기능을 중간에서 n8n으로 잘 이어붙여 컨플루언스에 글을 다 쓰고 완료 태그를 붙이면 컨플루언스 오토메이션이 글을 n8n으로 보내고 n8n은 글을 받아 텍스트와 이미지로 구분해 고스트에서 작성한 것과 비슷한 모양으로 고스트로 보내면 마지막으로 고스트가 이를 받아 고스트에서 작성한 것 같은 모양으로 완성해 저는 이전에 워드프레스에서 고스트로 이전할 때처럼 글 하나하나를 복붙할 필요가 없어집니다. 나중에는 고스트에 글을 쓰는 기능이 있다는 사실조차 잊어버려 이미 블로그에 올라간 글을 수정하기 위해 고스트 대신 컨플루언스 위키를 열었다가 ‘아차‘ 하는 일도 있었습니다.
그렇게 약 2년여에 걸쳐 고스트 매니지드 서비스를 사용하며 뉴스레터를 보내는데 익숙해지고 또 뉴스레터 발송 주기에 맞춰 주말에 글을 쓰는 습관을 들인 덕분에 주말이면 뭐라도 쓰기 위해 주중에 잠깐씩 머리를 스치고 지나가는 생각들을 그냥 흘려 보내지 않고 짧게 적어 뒀다가 주말에 끄집어내 장황한 설명과 함께 글로 만들어냈는데 이 과정은 의외로 글을 읽는 사람보다도 글을 쓰는 저 자신이 글을 쓰기 위해 과거에 일어난 일을 떠올린 다음 이를 그 시점에 다시 글로 작성할 기회를 만들어 시간이 지나자 상당한 도움이 됩니다. 가령 게임디자인의 여러 가지 질문에 답해 보기 위해 생각한 다음 글을 만들어 놨더니 나중에 비슷한 상황이 일어날 때 한 번 글로 만들었던 내용이어서 마치 이전에 준비해 놨던 것처럼 그럴싸하게 설명할 수 있었습니다. 그런 내용들이 늘어나자 여러 가지 문제를 미리 생각해 보고 제 관점의 답변을 정리해 기억하고 있는 것이 일할 때 뿐 아니라 일상 생활에도 큰 도움이 된다는 것을 깨달았습니다. 고스트 매니지드 서비스는 제가 이 블로그에 글을 쓰는 것 이외에 아무런 신경을 쓰지 않아도 멀쩡하게 돌아갔고 워드프레스 매니지드에 비해 가격이 저렴하지는 않았지만 뉴스레터 발송 기능을 함께 제공해 만약 워드프레스에서 같은 기능을 사용하려 했다면 메일 전송 서비스를 별도로 구입해야 했을 것에 비해서는 더 싼 가격으로 서비스를 받을 수 있었습니다. 그렇게 두 해가 지날 무렵 블로그 때문에 개인적으로 전혀 유쾌하지 않은 일이 일어났습니다. 제 의도와 관계 없는 모양으로 글이 읽혔지만 일단. 의도와 달리 읽히기 시작한 이상 이를 바로 잡을 방법은 없었습니다. 덕분에 거의 해고되기 직전까지 갔고 결국 자동으로 글을 보내던 소셜 네트워크 서비스 계정을 삭제하고 뉴스레터 발송을 종료하고 글쓰기를 멈추게 됩니다.
헌데 뉴스레터를 종료한다면 고스트 매니지드 서비스에 계속해서 돈을 내야 할 지 고민했습니다. 고스트 매니지드 서비스는 워드프레스 매니지드와 비슷한 가격대에 메일 발송 비용을 포함하고 있었는데 메일을 발송하지 않는다면 같은 금액을 오직 서비스 호스팅에만 지불하는 것은 금전적으로 별로 좋은 선택이 아닐 것 같았습니다. 이 즈음 홈랩에 사용하던 M1 맥미니를 M4 맥미니로 교체하며 사양에 큰 여유가 생기며 그동안 온프레미스로 호스팅하면 도움을 받을 수 있을 법한 서비스들을 직접 운용하기 시작했는데 이참에 고스트 역시 온프레미스로 옮겨 오기로 결정합니다. 이 전까지는 홈랩에서 온프레미스 환경으로 호스팅하는 서비스는 대부분 저 혼자 사용하는 것들이어서 운영 부담이 거의 없었습니다. 어쩌다 문제가 일어나 몇 시간 동안 서비스가 중단되더라도 이로 인해 영향을 받는 것은 저 한 명 뿐이기 때문입니다. 그런데 블로그는 이야기가 다릅니다. 장애가 발생해 서비스가 중단되면 저 뿐 아니라 방문자들도 글을 읽을 수 없고 또 이런 상태가 유지되면 검색엔진으로부터 좋은 평가를 받기도 어렵습니다. 하지만 이 즈음 어느 정도 서비스를 안정적으로 유지해 서비스 대부분의 월 가동률이 99%를 웃돌고 있는 상황이어서 블로그 역시 온프레미스로 옮겨 유지해볼 만한 상황이라고 판단하고 한 번 저질러 보기로 합니다.
홈랩의 모든 서비스는 도커 기반으로 운영되고 있었고 고스트 역시 도커 기반으로 구동하고 고스트 매니지드 서비스로부터 백업 파일을 받아다가 복원하면 간단히 끝날 일이라고 예상했습니다. 다만 고스트 매니지드 서비스에서는 백업 파일을 익스포트 할 수 있었지만 여기에는 글만 포함될 뿐 글에 포함된 이미지는 빠져 있었기에 이미지는 별도로 서포트 메일을 보내 요청해야 했습니다. 그런데 연습 삼아 고스트 익스포트 파일을 온프레미스 환경에 임포트 해 보니 고스트 웹사이트의 거의 모든 것을 백업해 줄 것처럼 굴던 익스포트 파일은 오직 글과 태그만, 그것도 글의 최신 버전만을 포함되어 있었습니다. 기존 유저 리스트, 코멘트, 글의 이전 버전, 통계, 설정 등 서비스에 필요한 나머지 거의 모든 정보가 빠져 있습니다. 이 점은 굉장히 실망스러웠는데 고스트 익스포트 화면에는 마치 모든 것을 익스포트 해줄 것처럼 굴고 있었기 때문입니다. 결국 서포트에 이메일을 보낼 때 파일 뿐 아니라 나머지 데이터도 받을 수 있는지 문의했는데 일단 그들은 ’코멘트는 어떻게 복원하느냐‘는 질문에 즉답하지 못했고 예상하기에 코멘트를 익스포트하고 임포트 하는 과정을 제공하고 있지 않았을 것 같습니다. 그런데 고스트 서포트에서 보내 온 파일들을 살펴보니 고스트 익스포트 파일과 업로드 했던 파일 뿐 아니라 데이터베이스 덤프도 들어있었습니다. ’설마?‘ 하는 생각에 고스트 익스포트 파일 대신 데이터베이스 덤프를 사용해 복원해보니 이번에야말로 고스트 매니지드 서비스의 마지막 그 상태 그대로 복원되었습니다. 특히 많지는 않지만 코멘트를 유실한다면 꽤 슬프겠다 싶었는데 코멘트 뿐 아니라 통계도 무사히 복원됩니다.
이것으로 고스트 매니지드에서 온프레미스로 이전 과정을 마무리하고 클라우드플레어에서 DNS를 고스트 매니지드 서버에서 클라우드플레어 터널 주소로 변경하는 것으로 이전 절차를 마무리합니다. 몇 분 만에 온프레미스 서버로 트래픽이 도달하기 시작했고 24시간이 지난 다음 고스트 매니지드에 있던 글을 모두 삭제해 어딘가 DNS 업데이트가 늦어진 상황에서 이전 서버를 사용하다가 발생할 수 있는 문제를 회피했습니다. 이 과정은 상당히 실망스러웠습니다. 물론 고스트 매니지드 서비스의 핵심은 스스로의 서비스를 잘 유지하는 것이기는 합니다. 하지만 고스트 매니지드에서 온프레미스로 이전할 방법을 직접. 제공하지 않는다는 점은 문제가 있지 않은가 싶습니다. 익스포트 기능을 제공하지 않는다면 또 모르겠지만 익스포트 기능을 제공하지만 그 기능이 전혀 충분하지 않아 사이트를 복원하는데 사용할 수 없다면 익스포트 기능을 제공하며 온프레미스로 이전할 수 있다고 광고해서는 안되는 것이 아닌가 싶습니다. 만약 데이터베이스 덤프가 없었다면 이전 절차는 훨씬 복잡하고 고통스러워졌을 겁니다. 고스트는 자신들의 익스포트 기능을 손보든지 아니면 익스포트 기능을 제거하고 온프레미스와 매니지드 사이의 데이터 교환은 데이터베이스 덤프로만 할 수 있다고 말하는 편이 올바르지 않을까 싶습니다. 한편 고스트 서포트로부터 받은 백업에는 익스포트 파일, 데이터베이스 덤프, 업로드 파일 뿐 아니라 도커 컴포즈 파일도 있었는데 이로써 고스트 매니지드는 사이트 각각을 도커 컨테이너로 관리하고 있는 것 같습니다. 이 도커 컴포즈 파일을 보기 전까지는 여러 웹사이트를 커다란 데이터베이스 인스턴스 하나로 모두 처리하고 있지 않을까 짐작했는데 생각해보니 오히려 사이트 각각을 도커 컴포즈를 통해 독립된 스택으로 관리하면 여러 모로 훨씬 더 안전하겠다 싶습니다.
고스트 익스포트 파일이 사이트를 이전하거나 재구축하는데 거의 도움이 되지 않는다는 사실만큼이나 실망스러웠던 점은 고스트가 익스포트 파일을 임포트 할 때 각 글의 고유 아이디를 중복해서 사용할 수 있다는 점입니다. 개인적으로 글을 만들 때 발급된 고유 아이디는 모든 글에 걸쳐 유일하고 당연히 중복을 허용하지 않을 거라고 예상합니다. 고스트는 적어도 익스포트와 임포트를 하지 않는다면 당연히 예상대로 동작합니다. 하지만 기존 사이트에 글을 임포트 할 때는 아이디 중복을 검사하지 않았습니다. 실수로 이전에 임포트한 글을 제거하지 않은 상태의 고스트 웹사이트에 같은 익스포트 파일을 다시 한 번 임포트 했는데 이런 실수에 대한 제 예상은 이미 같은 아이디의 글이 있으므로 에러를 내고 중단되든지 아니면 기존 글을 덮어쓰든지 하는 것입니다. 그런데 고스트는 놀랍게도 아이디가 같은 글을 하나 더 만들어버렸습니다. 데이터베이스에는 아이디가 같은 글이 두 개씩 생겼고 관리 화면에서 글을 열면 이 글이 이전에 복원한 글인지 새로 복원한 글인지 구분할 수 없었습니다. 다행히 온프레미스 환경에서 데이터베이스를 직접 통제할 수 있었기 때믄에 그냥 데이터베이스를 비운 다음 고스트 서포트에서 보내준 데이터베이스 덤프를 복원해 문제를 해결했지만 장기적으로 이들이 훨씬 많은 글을 호스팅하는 서비스를 안정적으로 구축할 수 있는지, 또 구축해 오고 있는지 의심을 가지게 되었습니다.
이제 고스트 매니지드로부터 온프레미스로 이전한 지 여러 주가 지났는데 이 이야기를 작성하는 오늘 현재 지난 30일 간의 가동률은 99.35%입니다. 이 비율만 보면 괜찮아 보일 수 있지만 720시간을 기준으로 보면 다운타임이 거의 다섯 시간이나 되어 개선의 여지가 많습니다. 예정된 다운타임은 주로 OS 업데이트, 도커 데스크탑 업데이트, 그리고 고스트 및 데이터베이스 업데이트에 의한 것입니다. 맥OS 업데이트는 대략 20여분, 도커 데스크탑 업데이트는 대략 5분 정도 걸리며 고스트 및 데이터베이스 업데이트는 대규모 마이그레이션이 일어나지 않는 한 몇 초 정도입니다. 예정되지 않은 다운타임은 주로 도커 데스크탑의 크래시, 클라우드플레어 터널의 연결 유실에 의해 발생합니다. 맥OS 환경에서 도커 데스크탑을 통해 구동되는 도터 엔진은 대체로 안정적으로 동작하지만 몇 주에 한 번 꼴로 크래시된 다음 복구되지 않을 때가 있습니다. 크래시 된 원인을 알 수 없기에 할 수 있는 일이라곤 그냥 도커 엔진을 재시작하는 것 뿐입니다. 이 문제는 도커 엔진이 점진적으로 개선되기를 바랄 수밖에 없습니다.
또 다른 예상하지 않은 다운타임을 발생 시키는 원인은 클라우드플레어 터널이 동작하지 않을 때입니다. 클라우드플레어 터널 덕분에 도커 컴포즈 스택 전체가 오직 클라우드플레어 터널을 통해서만 인터넷에 접근하게 설정하고 호스트 네트워크로부터 완전히 격리할 수 있어 보안에 큰 도움이 됩니다. 클라우드플레어 터널은 데이터센터 네 곳과 연결을 유지하며 어느 하나와 연결을 유실한 경우에도 속도가 약간 느려질 뿐 아무렇지도 않게 동작하는데 종종 모든 연결을 유실한 다음 연결을 복구하지 않고 멍청하게 연결을 영원히 기다리고 있을 때가 있습니다. 그러면 고스트, 데이터베이스 컨테이너가 모두 멀쩡히 동작하고 있음에도 네트워크 연결이 사라져 서비스가 중단되고 꼴사나운 클라유드플레어 1033 에러를 낸 채로 복구되지 않습니다. 이 상황은 coudflared 컨테이너를 재시작하면 감족같이 해결되는데 왜 모든 연결을 유실한 상황에서 연결을 스스로 복원하지 못하는지 모르겠습니다. 이 문제를 회피하는 방법은 현재로썬 주기적으로 cloudflare 컨테이너를 재시작하는 것 밖에 없습니다.
아. 한 가지 더. 고스트는 근본적으로 뉴스레터를 발송하는 플랫폼인데 직접 구축한 메일 서버를 사용할 수 없습니다. 뉴스레터를 보내려면 반드시 메일건 서비스를 별도로 사용해야만 합니다. 지독한 스팸메일의 시대를 거쳐 오면서 메일을 발송하는 일이 과거에 비해 훨씬 까다로운 일이라는 사실을 인정하지만 좀 아쉬운 점입니다. 그런데 뉴스레터를 발송하지 않더라도 고스트 시스템 자체가 몇몇 기능에 메일을 필요로 합니다. 가령 가입과 로그인에 항상 메일을 필요로 하는데 다행히 이 정도 기능에는 메일건을 요구하지 않습니다. 기존 메일 서버를 연결하면 가입, 로그인, 새로운 답글 같은 이벤트에 메일을 사용할 수 있습니다. 지금은 이 메일 기능에 구글 워크스페이스에 기반해 동작하는 메일 서버 정보를 사용하고 있는데 덕분에 제 보낸 편지함에는 고스트가 알아서 발송한 메일들이 쌓여 있어 기묘한 느낌입니다. 이로써 메일건을 구독하지 않지만 뉴스레터를 보내지 않는다면 온프레미스 환경에서 고스트 서비스를 무리 없이 운영할 수 있습니다. 또 가입, 로그인 정도에는 직접 구축한 메일 서버를 사용할 수도 있을 것 같지만 굳이 그럴 필요는 없어 보입니다. 구글 워크스페이스 기본값은 하루에 최대 500개 까지의 메일을 보낼 수 있는데 하루에 고스트로부터 그 정도 이벤트가 발생하지 않으니 굳이 메일 서버를 구축할 필요는 없을 것 같습니다.
개인적으로 전혀 유쾌하지 않은 계기로 고스트 매니지드 서비스로부터 온프레미스 환경으로 고스트 웹사이트를 이전해 왔지만 결국 1년 단위로 300달러를 지불하던 구독을 종료하고 어차피 24시간 켜져 있는 홈랩 서버를 사용할 수 있게 됐고 또 고스트 매니지드는 사이트 각각을 도커 컨테이너로 격리하고 있을 가능성이 높다는 점을 알게 됐으며 저 한 명이 사용하는 것 말고 불특정 다수를 대상으로 한 서비스를 도커 환경에서 최대한 안정적으로 구동하기 위한 여러 가지 고민을 할 계기가 되었습니다. 다만 한동안 규칙적인 글쓰기를 멈춘 탓에 마치 운동을 게을리 해 근육이 사라지고 심폐가 약해지는 것처럼 생각하는 근육이 사라진 것 같은 느낌이 드는데, 이는 고스트 서비스와 무관하게 다시 습관을 복원하는데 집중해야 할 것 같습니다. 여튼 고스트는 블로그 서비스를 단순한 모양으로 운영할 수 있게 해 주지만 사이트를 이전할 때 어려움이 있습니다. 하지만 뉴스레터 없이 블로그만 서비스한다면 그 단순함 덕분에 나쁘지 않은 선택이라고 생각합니다.