사이트를 Cloudflare Pages 에 배포하고 실전 기록을 남긴다
All checks were successful
ci / build (push) Successful in 35s
All checks were successful
ci / build (push) Successful in 35s
배포됨: https://designpaca.pages.dev 커스텀 도메인 designpaca.chanpaca.net 은 Pages 에 등록했고 CNAME 대기 중이다 (토큰에 Zone DNS Edit 가 없어 레코드를 못 만든다). Cloudflare 403 의 원인은 토큰 권한이 아니라 .env 의 CF_ACCOUNT_ID 가 토큰이 볼 수 없는 계정을 가리킨 것이었다. /accounts 목록으로 실제 접근 가능한 계정을 찾아 교정했다. DEPLOYMENT_PLAN.md 에 8절을 추가했다 — git push 가 도메인으로 안 되는 이유, CI 가 네 번 실패한 서로 다른 원인, Cloudflare 진단법.
This commit is contained in:
parent
fe4cfb2bf3
commit
63a3860f4b
1 changed files with 45 additions and 0 deletions
|
|
@ -128,3 +128,48 @@ npm dist-tag add designpaca@<직전 정상 버전> latest
|
||||||
# 수정 후 새 패치 릴리스
|
# 수정 후 새 패치 릴리스
|
||||||
```
|
```
|
||||||
사용자 쪽 복구는 `npx designpaca@<정상버전> update --force`.
|
사용자 쪽 복구는 `npx designpaca@<정상버전> update --force`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. 실제 배포에서 걸린 것 (2026-08-20)
|
||||||
|
|
||||||
|
문서대로 되지 않은 지점들이다. 다음 사람이 같은 데서 막히지 않게 남긴다.
|
||||||
|
|
||||||
|
### git push 는 도메인으로 못 한다
|
||||||
|
|
||||||
|
`git.chanpaca.net` 은 Cloudflare 뒤에 있어(104.21.x) **22·2222 포트가 둘 다 막혀 있다.**
|
||||||
|
오리진을 감추는 정상 구성이다. push 는 Tailscale 주소로 한다.
|
||||||
|
|
||||||
|
```
|
||||||
|
ssh://git@100.116.83.60:2222/yunchan/designpaca.git
|
||||||
|
```
|
||||||
|
|
||||||
|
SSH 키는 이미 Forgejo 에 등록돼 있어(`encep-win`) 토큰도 비밀번호도 필요 없다.
|
||||||
|
|
||||||
|
### CI 가 네 번 실패했고 전부 다른 이유였다
|
||||||
|
|
||||||
|
| # | 증상 | 원인 |
|
||||||
|
|---|---|---|
|
||||||
|
| 1 | `exit 126` / 허가 거부 | Windows 에서 만든 `.sh` 가 mode 100644 로 커밋됐다. `git update-index --chmod=+x` + 워크플로에서 `bash script` 로 호출 |
|
||||||
|
| 2 | `Node 20 이상이 필요하다 (현재 v18)` | 러너에 Node 18 뿐. fnm 으로 22 설치. **그리고 `verify-node.sh` 가 Node 가 *없을 때만* 대체 경로를 훑고 있었다** — 낡았을 때도 찾도록 고침 |
|
||||||
|
| 3 | `ERR_MODULE_NOT_FOUND: picocolors` | tarball 을 풀어 `node dist/index.js` 를 직접 불렀다. 그건 npx 경로가 아니다. 임시 프로젝트에 `npm i` 후 실행하도록 교체 |
|
||||||
|
| 4 | 초록불인데 `# pass 0` | 빌드보다 테스트가 먼저라 CLI 테스트 6개가 전부 SKIP. 순서를 바꾸고 **SKIP 이 있으면 실패시키는 단계**를 넣었다 |
|
||||||
|
|
||||||
|
**4번이 가장 위험했다.** 통과한 게 아니라 건너뛴 것이었고, 그래도 초록이었다.
|
||||||
|
|
||||||
|
### Cloudflare 는 계정 ID 가 문제였다
|
||||||
|
|
||||||
|
`403 Authentication error` 가 계속 났다. 토큰 권한을 의심했지만 실제로는
|
||||||
|
**`.env` 의 `CF_ACCOUNT_ID` 가 토큰이 볼 수 없는 계정을 가리키고 있었다.**
|
||||||
|
|
||||||
|
진단법: `/accounts` 목록을 부르면 **토큰이 실제로 접근 가능한 계정**이 나온다.
|
||||||
|
그 id 로 `/accounts/{id}/pages/projects` 를 부르면 권한 유무가 갈린다.
|
||||||
|
|
||||||
|
- `/accounts` 목록이 200 인 것은 권한 증거가 아니다. 유효한 토큰이면 누구나 200 이다
|
||||||
|
- `/user/tokens/verify` 는 **User 토큰 전용**이다. 계정 소유 토큰(`cfat…`)은 여기서 거부당한다.
|
||||||
|
그걸 보고 "토큰이 잘못됐다"고 판단하면 틀린다 — `wrangler whoami` 로 교차 확인해라
|
||||||
|
|
||||||
|
### 아직 남은 것
|
||||||
|
|
||||||
|
- `NPM_TOKEN` — 이름 선점이라 사람 승인 후에만 태그를 민다
|
||||||
|
- `designpaca.chanpaca.net` CNAME — 토큰에 `Zone · DNS · Edit` 가 없어 수동으로 넣어야 한다
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue