AI·도구

월 0원으로 개인 블로그 만들기: Astro와 Cloudflare Pages 구축기

도메인 값만 내고 나머지는 무료로 개인 사이트를 만들었다. 공식 안내대로 따라가다 막힌 곳을 중심으로 적었다.
이 글의 순서 (8)
  1. 이 글이 맞는 사람
  2. 미리 필요한 것
  3. 워드프레스 대신 정적 사이트를 고른 이유
  4. 구성요소가 각각 하는 일
  5. 전체 순서
  6. 공식 안내대로 하다가 막힌 곳
  7. 다 만든 뒤 글 올리는 방법
  8. 이 방식이 안 맞는 경우

개인 사이트를 하나 만들었다. 정보글을 정리해 두는 용도다.

처음엔 국내 웹호스팅을 결제하려 했다. 월 5천 원에서 1만 원 정도, 워드프레스를 올리면 되는 흔한 방식이다. 알아볼수록 지금 만들려는 것에는 과한 선택이라는 결론이 나왔다.

결국 이렇게 됐다.

항목 비용
도메인 (.com, 1년) 약 2만 원
호스팅 0원
SSL 인증서 0원
도메인 메일 수신 0원
월 고정비 0원

이 글이 맞는 사람

터미널(검은 화면에 명령어를 치는 창)에서 몇 줄 입력하는 게 부담스럽지 않은 사람에게 맞는다. Git을 써본 적은 없어도 된다. 검은 화면 자체가 싫다면 국내 유료 호스팅과 워드프레스가 낫다. 월 5천 원 정도로 훨씬 편하게 시작할 수 있고, 그것도 나쁜 선택은 아니다.

단계별 설치법은 인터넷에 이미 많아서, 여기에는 공식 안내대로 따라가다 막힌 곳을 중심으로 적었다. 실제로 시간을 잡아먹은 건 거기였다.

미리 필요한 것

구분 항목 비용
계정 도메인 등록업체 (가비아, 후이즈 등) 도메인 값
계정 Cloudflare 무료
계정 GitHub 무료
프로그램 Node.js 무료
프로그램 Git 무료

프로그램 두 개가 깔려 있는지는 터미널에서 이렇게 확인한다.

node -v
git --version

버전 번호가 나오면 있는 것이고, 에러가 나면 각각 공식 사이트에서 설치하면 된다. 5분씩 걸린다. Node.js는 버전도 본다. 2026년 10월 Astro 공식 문서 기준으로 v22.23.4 이상이어야 하고, v23처럼 홀수 버전은 지원하지 않는다.

워드프레스 대신 정적 사이트를 고른 이유

차이는 화면을 언제 만드느냐에 있다.

일반적인 블로그(워드프레스 등)는 방문자가 접속할 때마다 서버가 데이터베이스를 뒤져서 화면을 그 자리에서 조립한다. 그래서 서버가 계속 켜져 있어야 하고, 그 임대료를 매달 낸다.

정적 사이트는 화면을 미리 다 만들어 놓고, 방문자에게는 완성된 파일만 건넨다. 서버가 일할 게 없으니 무료 서비스로 감당이 된다.

동적 사이트 (워드프레스 등) 정적 사이트
화면 생성 접속할 때마다 미리 전부
데이터베이스 필요 없음 (글이 곧 파일)
보안 관리 플러그인·PHP 업데이트 털릴 DB가 없음
월 비용 5,000~10,000원 0원

정보글 아카이브에는 로그인이나 결제 같은 기능이 필요 없다. 데이터베이스가 필요한 이유가 없으면 정적 사이트가 거의 모든 면에서 낫다.

구성요소가 각각 하는 일

처음 알아볼 때 가장 헷갈렸던 부분이다. 이름이 여러 개 나오는데 뭐가 뭘 하는지 감이 안 왔다.

도메인 등록업체

example.com 같은 주소가 내 것이라는 등기만 담당한다. 부동산으로 치면 등기소다. 건물을 지어주지는 않는다. 연 1회 갱신비를 내고, 만료되면 주소를 잃는다.

Cloudflare

가장 많은 일을 한다.

호스팅에 따라 SSL 인증서를 따로 챙겨야 하는 곳도 있는데, 여기서는 도메인을 연결하면 자동으로 붙는다. 이게 무료라서 월 0원이 가능했다.

GitHub

소스 파일의 원본 창고다. 언제 무엇을 고쳤는지 이력이 전부 남아서, 잘못 고쳤으면 되돌릴 수 있다. Cloudflare가 이곳을 지켜보다가 파일이 바뀌면 자동으로 사이트에 반영한다.

예전처럼 FTP 프로그램으로 파일을 하나씩 올릴 필요가 없어지는 게 여기서 나온다.

Astro

마크다운(.md) 파일을 완성된 웹페이지로 구워내는 도구다. 마크다운은 # 제목 처럼 기호 몇 개로 서식을 표현하는 텍스트 형식이라, 메모장으로도 쓸 수 있다.

가입해서 쓰는 웹사이트가 아니고 내 컴퓨터에 설치하는 프로그램이다. 한글(HWP) 프로그램과 같은 위치라고 보면 된다.

Git과 Node.js

전체 순서

  1. 도메인 등록
  2. Cloudflare에 도메인 연결 (네임서버 교체)
  3. Node.js와 Git 확인
  4. Astro 프로젝트 생성
  5. GitHub에 업로드
  6. Cloudflare Pages 배포
  7. 내 도메인 연결

실작업은 두 시간 정도였다. 중간에 대기 시간이 끼어서 실제로는 반나절쯤 걸렸다.

2번은 가장 먼저 걸어두는 게 좋다. 네임서버(어느 회사가 이 주소를 관리하는지 알려주는 설정)를 바꾸면 전 세계에 퍼지는 데 몇 시간이 걸린다. 그동안 3~5번을 진행하면 시간이 겹친다. 네임서버를 나중에 바꾸면 다 만들어 놓고 한참을 그냥 기다리게 된다.

공식 안내대로 하다가 막힌 곳

PowerShell에서 npm이 실행되지 않았다

Windows에서 Astro를 설치하려고 npm create astro@latest를 치면 이런 게 뜬다.

npm : 이 시스템에서 스크립트를 실행할 수 없으므로 npm.ps1 파일을 로드할 수 없습니다.
FullyQualifiedErrorId : UnauthorizedAccess

node -v는 잘 되는데 npm만 막힌다. node는 실행 파일이고 npm은 스크립트 파일이라서 그렇다. Windows가 기본적으로 스크립트 실행을 막아 둔다.

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

한 번만 치면 된다. RemoteSigned는 내 컴퓨터에서 만든 스크립트는 실행하고, 인터넷에서 받은 서명 없는 스크립트는 계속 막는 설정이다. 보안을 끄는 설정과는 다르다. -Scope CurrentUser라 관리자 권한도 필요 없다.

성공하면 아무 메시지도 안 나온다. 조용하면 된 것이다.

첫 커밋에서 Git이 누구냐고 물었다

첫 커밋(변경 내용을 기록으로 남기는 작업)에서 막힌다.

*** Please tell me who you are.
fatal: unable to auto-detect email address

Git은 기록마다 작성자를 남기는데, 처음 쓰는 컴퓨터에는 그 정보가 없다. 두 줄로 끝난다.

git config --global user.email "본인이메일"
git config --global user.name "본인 이름"

여기 적은 이메일은 기록에 남는다. 저장소를 나중에 공개로 전환하면 외부에 보이니, 신경 쓰인다면 GitHub이 제공하는 noreply 주소를 쓰면 된다.

GitHub 저장소에 파일이 있으면 업로드가 거부된다

저장소를 만들 때 이 세 개가 체크돼 있으면 안 된다.

Astro가 프로젝트를 만들면서 이미 내 컴퓨터에 Git 저장소를 만들어 둔다. GitHub 쪽에도 파일이 있으면 서로 다른 역사를 가진 저장소 둘이 되어 업로드가 거부된다.

이미 만들어 버렸다면 저장소를 지우고 다시 만드는 게 빠르다.

Cloudflare에서 Pages 입구를 못 찾았다

Cloudflare가 Pages를 Workers라는 다른 서비스와 합치는 중이라, 예전 안내 문서에 나오는 “Pages 탭”이 없다. 2026년 10월 Cloudflare 문서는 새로 시작하는 사이트는 Pages 대신 Workers로 만들라고 안내한다. Pages도 계속 쓸 수 있지만 새 기능은 Workers 쪽에 들어간다. 이 사이트는 그 전에 Pages로 만들어 그대로 쓰고 있고, 아래는 내가 Pages로 만들 때 겪은 화면이다. 대시보드에서 애플리케이션 생성을 누르면 카드가 몇 개 뜨는데, 거기 있는 Continue with GitHub를 누르면 Worker 생성 화면으로 넘어간다.

나는 여기서 쓸모없는 “Hello World” 프로젝트를 하나 만들 뻔했다.

진짜 입구는 그 카드들 맨 아래 회색 작은 글씨에 있다.

Pages를 배포하려고 하십니까? [시작]

이 링크를 눌러야 기존 Git 리포지토리 가져오기 화면이 나온다. 눈에 안 띄게 배치돼 있어서 그냥 보면 지나친다.

같은 화면의 “파일 끌어서 놓기”도 피하는 게 좋다. 그걸로 하면 자동 반영이 안 걸려서 글 쓸 때마다 폴더를 직접 올려야 한다.

도메인을 추가하자 DNS 경고가 떴다

Cloudflare에 도메인을 추가하면 이런 경고가 뜬다.

이 단계에서는 전부 무시하면 된다. 아직 사이트를 안 만들었으니 가리킬 곳이 없는 게 당연하다.

여기서 레코드(어느 주소를 어디로 연결할지 적어두는 항목)를 직접 만들어 두면, 나중에 Pages를 연결할 때 Cloudflare가 자동으로 만드는 레코드와 충돌한다.

“DNS 레코드가 없으면 활성화할 수 없습니다”라는 팝업도 뜨는데, 확인을 누르고 넘어가면 된다. 기존 사이트를 옮겨 오는 사람을 가정한 문구로 보인다.

그 밖에 걸리기 쉬운 것

다 만든 뒤 글 올리는 방법

파일 수정 → git push → Cloudflare 자동 감지 → 1~2분 후 사이트 반영

글을 쓴다는 건 마크다운 파일 하나를 폴더에 추가하는 것이다. 그리고 명령어 세 줄을 치면 끝난다.

git add -A
git commit -m "무엇을 했는지 설명"
git push

관리자 화면에 로그인할 일도, FTP를 열 일도 없다.

그리고 내 컴퓨터와 사이트는 별개다.

처음에는 미리보기 서버(npm run dev)를 끄면 사이트가 내려가는 줄 알았다. 그건 내 컴퓨터에서만 보이는 미리보기고, 실제 사이트는 Cloudflare 서버에서 돈다. 컴퓨터를 꺼도, 고장이 나도 사이트는 계속 열린다.

컴퓨터를 바꿔도 부담이 없다. 원본이 GitHub에 있으니 새 컴퓨터에서 내려받아 npm install 한 번 돌리면 이어서 작업할 수 있다.

이 방식이 안 맞는 경우

회원 기능이 필요하면 안 된다. 로그인, 회원 전용 게시판, 댓글 저장 같은 건 서버와 데이터베이스가 있어야 한다.

댓글과 사이트 내 검색은 따로 붙여야 한다. 워드프레스처럼 켜기만 하면 되는 기능이 없어서 외부 서비스를 연결해야 한다. 개인 아카이브에는 감당할 만한 수준이다.

터미널과 Git을 써야 한다. 명령어 대여섯 개를 복사해 붙여넣는 수준이지만 가장 큰 진입 장벽이다.

관리 화면이 대부분 영어다. Cloudflare는 한국어 설정이 있지만 DNS 같은 기술 용어는 그대로고, GitHub은 영어다. 한국어 전화 상담이 필요하면 맞지 않는다.

글을 올릴 때마다 반영에 1~2분이 걸린다. 발행 버튼을 누르는 대신 명령어를 치고 잠깐 기다리는 방식이라 처음엔 어색하다.

사이트 구조를 정하면서 카테고리를 주소에 넣지 않기로 한 과정은 Astro 블로그에서 카테고리를 URL에 넣지 않고 관리하기에 따로 적었다.

2026년 9월 기준. Cloudflare 화면 구성은 자주 바뀐다.

AI·도구 다른 글

틀린 내용이나 바뀐 법령을 발견하면 문의로 알려 주면 확인하고 고친다. 고친 글에는 수정 날짜를 적는다.