Re: 제로부터 시작하는 블로그 생활

AWS의 Lightsail에서 Digitalocean의 Droplet으로 이전한 이야기

이전 이야기 : AWS Lightsail

AWS Lightsail은 좋은 서비스입니다. 아니, 기본적으로 AWS는 전반적으로 좋은 서비스입니다. 모든 것을 내부에서 다 해결할 수 있었죠. Route53을 통해 도메인을 생성/관리하고 Lightsail로 VPS를 설정할 수 있으며, 만약 분리하고자 한다면 S3 버킷을 통해 이미지를 따로 버킷에 담아 VPS 용량을 관리할 수도 있었죠. 하지만 문제도 있었습니다.

문제 1. Ghost 설치 시 bitnami라는 걸 사용합니다.

AWS Lightsail에서 Ghost를 패키지로 설치 시 bitnami라는 소프트웨어 패키지 설치 라이브러리를 사용합니다. 설치 자체에는 문제가 없고 그냥 "사용"만 하는데는 큰 문제가 없긴 합니다만... 좀좀따리로 만지다보면 문제가 생기곤 했습니다.

예를 들어 처음 Ghost를 만들자마자 Bitnami를 통해 Let's Encrypt의 SSL 인증서를 만들게 되는데요. 그 때문에 도메인 주소를 연결하고 접속하게 되었을 때 도메인과 포스트는 https 주소로 접속하고 그 안의 이미지는 http 주소로 접속해서 겪는 Mixed contents 문제가 대표적이죠.

그리고 인터넷을 통해 좀좀따리로 해결하려고 찾아봐도 생각보다 bitnami로 설치해서 하는 사람들이 많지 않기 때문에 일반적인 경우보다 더 찾기 힘들다는 단점도 있었습니다.

문제 2. 제 블로그를 귀한 AWS에 모실 필요가?

쓰다보니 느낀건데, 제 블로그를 운영하는데 있어서 굳이 AWS까지는 필요없는 거 같더라구요? 닭 잡는 데 소 잡는 칼을 쓰는 느낌이랄까. 로드 밸런서를 쓸 이유도 없고... 강력한 보안을 쓸 이유도 없고...

김대리님은 엑셀에서 팡션을 써야할 이유가 있지만 저는 딱히?

문제 3. IPv4 사용에 가격 추가(...)

마지막으로, AWS가 IP 주소 부족을 이유로 IPv4 사용 시 추가 요금을 내라고 했습니다. 그리고 Ghost CMS는 IPv6를 지원하지 않습니다(...) 그냥 꼼짝없이 몇천원 더 내고 써야하는 것이였죠.

상기 세 가지 이유로 인해 AWS에서 이주를 고민했고, 결국 선택했던 것은 DigitalOcean이었습니다.

Why do you choose DigitalOcean?

Digitalocean(이하 디지털오션)을 선택했던 이유는 별 게 아닙니다. Ghost CMS에 대해 가장 지원이 좋은 게 디지털오션이거든요. Ghost의 공식 문서에서도 Self-hosting에서 클라우드 방식으로 할 거면 디지털오션으로 하라고 있을 정도니깐요. 그러니까 설치해 봅시다.

Cloud hosting 부분에 떡 하니 있지요

1. Digitalocean에 Droplet 만들기

https://www.digitalocean.com/ 에 들어가 회원 가입을 한 뒤에 AWS의 Lightsail과 같은 VPS인 Droplet(이하 드롭렛)을 만들면 됩니다. 현재 디지털오션에서는 조온나 비싼 망사용료때문에 Seoul 리전이 없기 때문에 가장 가까운 싱가포르 리전을 선택해줍니다. 그리고 이미지 선택에서 OS 옆 마켓플레이스에서 Ghost를 검색한 뒤 선택. SSH 키는 추후 선택하셔도 되고 지금 넣으셔도 되고 편하게 설정하세요. 지금 잘 넣는 게 좋을 수도 있지만

2. Cloudflare를 통한 도메인 구매/설정

이렇게 간단하게 드롭렛을 만들면, 도메인을 설정해야겠죠? 도메인은 디지털오션에 없기 때문에 Cloudflare(이하 클라우드플레어)로 가서 만들어줍니다. 클라우드플레어에서 도메인을 구매하거나 다른 곳에서 산 도메인을 등록한 뒤에 A 레코드에 드롭렛의 IP 주소를 넣습니다. 이런 게 AWS는 편했지 그리고 SSL/TLS 암호화 구성으로 굳이 내부에서 인증서를 받지 않아도 자동으로 https 접속이 가능하도록 만들어줍니다. 이렇게 만들면 Let's Encrypt의 SSL 인증서 문제(사실 인증서가 문제가 아니라 그냥 비비꼬인 내부가 문제지만)로 인한 Mixed contents 문제는 생기지 않죠.

마지막으로 드롭렛의 네임 서버에 클라우드플레어의 네임 서버를 집어넣는 것도 잊지 말아주세요

이주 완료. 그 이후...

이렇게 대충 이주가 끝났습니다. 사실 이주를 하고, 데이터를 옮기던 도중에 깨진 이미지도 많아서 어찌하나 고민 중이긴 하지만, 하나씩 천천히 해결해나가야겠죠.

이주한 이후로는 다른 시도를 해보고 있습니다. AWS의 S3 버켓과 유사한 Spaces Object Storage를 통해 이미지만 옮겨서 CDN을 통한 패킷 절감 효과를 만든다거나 하는 것이라든가, ChatGPT와 같은 서비스를 이용해 테마를 제 입맛에 맞도록 마개조하는 내용도 있겠네요. 해당 내용도 한번 올려보도록 하겠습니다.