Simon의 AI 시대에 살아남는 법

블로그이전

블로그이전 총 3개의 포스트
블로그 Cloudflare 이전 시리즈 — 요청을 폰으로 통과시키는 Worker에서 정적 서빙으로 단계적 전환
개발 일지

전부 통과시키는 Worker에서 시작하기 — 패스스루로 무중단 전환, www 이동, 404, 폰 폴백

도메인 앞에 Worker를 세우는 순간 모든 방문자가 그 코드를 지나간다. 그래서 첫 배포는 아무것도 하지 않는 Worker였다. 들어온 요청을 그대로 폰으로 넘기기만 하는 코드다. 이 글은 그 “통과만 하는 Worker"에서 시작해 하나씩 역할을 빼앗아 온 과정이다. 1단계: fetch(request) 한 줄 DNS는 그대로 폰의 터널을 가리키고 있었다. 이 상태에서 라우트 mhub.uk/*를 Worker에 붙이면, Worker 안에서 fetch(request)를 호출했을 때 Cloudflare가 원래 목적지(폰)로 요청을 보낸다. 즉 Worker는 투명한 중계기가 된다. export default { async fetch(request) { return fetch(request); // 일단 전부 폰으로 }, }; 이걸 먼저 배포한 이유는 “라우트를 붙였을 때 뭔가 깨지는가"를 서비스 중단 없이 확인하기 위해서였다. 깨지면 라우트만 떼면 그만이다. 아무 문제 없이 돌아가는 것을 보고 다음으로 갔다.

2026.11.04 06:30 조회수: – 댓글: –
블로그 Cloudflare 이전 시리즈 — Workers Builds에서 Hugo를 빌드하는 설정
개발 일지

Workers Builds로 Hugo 빌드하기 — 버전 고정, 시간대, previews 블록, 그리고 workers.dev가 꺼지는 함정

Cloudflare 이전의 첫 단계는 “GitHub에 커밋하면 Cloudflare가 알아서 Hugo를 돌려 배포한다"를 만드는 것이었다. Workers Builds는 저장소를 연결하면 빌드 명령과 배포 명령을 실행해 준다. 간단해 보였지만, 폰에서 만들던 결과물과 똑같이 나오게 하려면 네 가지를 못 박아야 했다. 빌드 명령은 스크립트 하나로 wrangler.jsonc의 build.command에 bash scripts/cf-build.sh를 넣었다. Cloudflare 빌드 환경에는 Hugo가 없으므로 스크립트가 직접 내려받는다. PIN="${MHUB_HUGO_VERSION:-0.154.5}" curl -fsSL -o hugo.tar.gz \ "https://github.com/gohugoio/hugo/releases/download/v${PIN}/hugo_extended_${PIN}_linux-amd64.tar.gz" tar -xz -f hugo.tar.gz hugo export TZ=Asia/Seoul hugo --minify 버전 변수 이름을 HUGO_VERSION이 아니라 MHUB_HUGO_VERSION으로 한 데는 이유가 있다. Cloudflare 대시보드의 빌드 변수에 HUGO_VERSION이 있으면 플랫폼이 그 값을 다른 의미로 읽을 수 있어서, 내 스크립트만 읽는 전용 이름을 쓰는 편이 안전했다.

2026.11.03 00:10 조회수: – 댓글: –
블로그 Cloudflare 이전 시리즈 — 폰 서버에서 클라우드로 옮기기로 한 결정
개발 일지

폰 호스팅을 끝내기로 한 날 — "폰 없이도 블로그 전부"라는 원칙과 4단계 계획

이 블로그는 한동안 루팅한 갤럭시 S9 한 대가 전부 떠받치고 있었다. Hugo로 만든 정적 파일을 폰 안의 Caddy가 내보내고, 글쓰기 화면과 조회수·댓글 API는 폰 안의 Node 서버가 처리하고, 바깥과는 Cloudflare Tunnel로 이어져 있었다. 잘 돌았지만 “폰이 꺼지면 블로그도 꺼진다"는 사실이 늘 마음에 걸렸다. 2026년 10월 10일, 이 구조를 끝내기로 했다. 이 글은 그 결정의 이유와 계획이고, 이어지는 시리즈는 실제로 옮기면서 겪은 일들이다. 왜 지금이었나 계기는 두 가지였다. 하나는 폰 쪽 감시 스크립트가 블로그 터널을 닷새 동안 17번이나 재시작한 기록을 본 것이다. 서비스는 대체로 살아 있었지만, 사람이 없을 때 폰 혼자 버티는 구조는 언제든 조용히 멈출 수 있었다. 다른 하나는 내가 AI 코딩 세션을 길게 쓰는 기간이 끝나간다는 점이었다. 그 전에 블로그를 “혼자서도 운영할 수 있는 모양"으로 만들어 두고 싶었다. 폰 안의 tmux 세션과 크론과 셸 스크립트를 유지보수하는 것보다, 관리 화면에서 글을 쓰고 GitHub에 저장되고 알아서 배포되는 쪽이 훨씬 단순하다.

2026.11.02 20:20 조회수: – 댓글: –