Synology NAS에 Next.js 서버 실행하기

January 1, 2025

블로그의 변천사

기존 블로그 플랫폼(e.g. 네이버 블로그, 티스토리)을 지금까지 이용하지 않았던 이유 두가지는 1) 작성한 게시글들의 소유권 문제과, 2) 자유도의 부족입니다.

아시다시피, 네이버 블로그나 티스토리에 글을 작성했다고 해서 그 글이 온전히 나의 소유가 되는것은 아닙니다. 물론 이러한 서비스가 갑자기 종료 수순을 밟더라도 게시글 정도는 백업할 시간적 여유가 있겠지만, 문제는 데이터센터 화재와 같이 예상치 못한 사건사고가 발생하게 되면 이마저도 여의치 못하게 될 가능성이 높다는 점입니다. 실제로 2022년 발생했던 판교 데이터센터의 화재로 인해, 당시 티스토리의 블로그 서비스가 거의 멈춰버려 백업도 불가능했고, 전체적인 방문자 및 애드센스 수치도 급락했습니다. 심지어 티스토리는 2016년 이후 데이터 백업 기능도 공식적으로 종료한 상황이라, 외부 API에 의존해서 블로그 전체를 백업해야 하는 상황이었죠. 수년간, 혹은 수십년간 작성해온 게시글들이 자연재해 하나로 전부 사라진다고 생각하면 등골이 오싹하지 않을 수 없습니다.

그나마 차선책으로 사용해왔던 Wordpress는 오픈 소스 CMS인데다, 자신의 서버에 셀프 호스팅이 가능하고, 게시글들을 Google Drive와 같은 외부 저장소에 자동으로 백업이 가능하다는 점은 더할나위 없이 좋았지만, 간단한 토이 프로젝트 혹은 목업 사이트 정도라면 모를까, 다룰 수 있는 기술 스택을 적극적으로 어필해야 하는 상황에서 PHP와 씨름하고 있자니 스트레스가 이만저만이 아니었습니다. 또한, 구글 SEO에 맞춰 최적화 할 수 있는 플러그인이 다양하긴 하지만, 애초에 수익 창출을 위해 운영하는 블로그도 아니기 때문에 우선순위에서는 제외되었습니다. 저는 사실 우연히 발견된 제 게시글 중 하나가 남들에게 자그마한 도움이 되는 정도를 원하지, 트래픽의 기하급수적인 증가로 인한 호스팅 비용 증가나 엄청난 보안 위협에 노출되는 것을 원하는 것은 아니었거든요. 물론 마지막으로, 남들과는 조금 다른 특별한 것을 갖고싶다는 자그마한 욕망도 포함되어 있었습니다.

그 와중 눈에 들어왔던것이 Next.js + Strapi 였습니다. React의 풍부한 생태계를 적극적으로 활용할 수 있고, Vercel 을 통해 손쉬운 Deploy 가 가능하며, 무엇보다 MDX 형식의 파일 구조를 통해 프리뷰를 스플릿해서 실시간으로 게시글의 변경사항을 확인할 수 있다는 점이 매우 편했습니다. Code format, Syntax highlight과 같은 외부 라이브러리의 커스터마이징도 Wordpress 에 비해 굉장히 자유로운건 덤이죠.

그럼에도 불구하고, 별다른 비용을 필요로 하지 않고, 복잡한 사전 설정 없이 글쓰기에 온전히 집중할 수 있다는 점에선 "초심자" 및 "수익 창출"을 위한 수단으로는 베스트가 아닐까 싶습니다. 당장 HTTPS 인증서만 하더라도 쉽게 설정 가능한 티스토리와 달리, 호스팅 업체에 비용을 지불하고 Let's Encrypt 인증서를 발급받는 것 부터가 엄청난 장벽이기 때문입니다.

Synology NAS 에서 Docker 이용하기

Windows/MAC 에 Docker Desktop 이 있다면, Synology DSM 패키지에는 Container Manager 라는 Docker 애플리케이션이 존재합니다. 원래 이름도 Docker 에 특유의 고래모양 아이콘이었지만, Docker Inc. 의 의존성을 줄이기 위한 목적인건지 어느샌가 Container Manager 라는 이름으로 바뀌었습니다.

기존과 같이 SSH 를 통해 Synology NAS에 직접 접속하여