북곽툴즈 개발

북곽툴즈 개발기 ⑤ Vercel도 도커도 못 쓴 이유

2마지막 수정
북곽툴즈 개발기 ⑤ Vercel도 도커도 못 쓴 이유

북곽툴즈 개발기.

배포가 문제였다

기능은 다 됐는데 띄울 곳이 없었다. 변환기가 한컴오피스 COM에 의존하기 때문이다. COM 자동화는 한글·한셀·한쇼가 실제로 설치된 윈도우에서만 동작한다.

  • Vercel은 서버리스 리눅스다. 한컴오피스가 없으니 변환이 안 된다.
  • 도커도 보통 리눅스 컨테이너다. 마찬가지다.

결국 한컴오피스가 깔린 윈도우 PC 자체를 서버로 써야 했다. 문제는 그게 클라우드가 아니라 그냥 집/학교의 PC라는 점이다. 공인 IP도 없고, 포트를 열기도 부담스럽고, 인증서도 직접 관리해야 한다.

Cloudflare Tunnel

해법은 Cloudflare Tunnel(cloudflared)이었다. PC에서 Cloudflare로 바깥쪽 연결만 하나 열어두면, 도메인으로 들어온 요청을 그 연결을 타고 로컬 포트로 넘겨준다. 포트를 열 필요도, 공인 IP도 필요 없고, HTTPS는 Cloudflare가 처리한다.

터널 하나에 두 앱을 같이 물렸다. 북곽툴즈와 이 블로그다.

ingress:
  - hostname: tools.binaryhub.club
    service: http://localhost:3000   # 북곽툴즈
  - hostname: binaryhub.club
    service: http://localhost:3001   # 블로그
  - service: http_status:404

들어온 호스트 이름으로 어느 앱에 보낼지 갈라준다. 도메인은 Cloudflare에 올려두고 DNS만 터널로 연결했다.

PM2로 상시 운영

서버가 개인 PC다 보니 "켜두면 알아서 살아 있어야" 한다. 그래서 PM2로 프로세스를 관리했다. 북곽툴즈, 블로그, cloudflared 세 개를 PM2에 등록해 한 번에 띄우고, 죽으면 자동으로 되살린다.

재부팅 대비로 pm2-windows-startup을 걸어 부팅 시 PM2가 저장된 프로세스 목록을 자동으로 복구하게 했다. 정전이나 윈도우 업데이트로 PC가 재시작돼도 손댈 필요 없이 사이트가 다시 올라온다.

결과

정리하면 이렇다. 한컴오피스가 깔린 윈도우 PC 한 대에서, Cloudflare Tunnel로 도메인을 연결하고, PM2로 두 앱과 터널을 상시 띄워 둔다. 클라우드 비용 없이, 도커 없이, 한컴 변환까지 되는 사이트를 개인 PC 한 대로 운영하는 셈이다.

흔한 구성은 아니다. 하지만 "한글 문서를 정확히 변환한다"는 핵심 요구가 윈도우와 한컴에 묶여 있는 이상, 이 방법이 가장 단순하고 확실했다. 제약이 배포 방식을 정한 경우다.

거창한 기술 스택은 없지만, 학생이 실제로 쓰는 도구를 직접 만들어 굴리면서 "현실의 제약이 설계를 어떻게 끌고 가는가"를 많이 배웠다.

변경 이력 (2건)
  1. gitprogam 수정feat(binaryhub-blog): tetris 위키 + SEO 정비 + hero 이미지 + 글 다수
  2. gitprogam 최초 작성init: monorepo (nsgh-tools + binaryhub-blog)

관련 글

태그가 겹치는 다른 글