poin-site — 포인 홍보 홈페이지 자체 운영 전환
리포 =
C:\dev\poin-site· 서빙 =poin-mini:8800(테일스케일 전용) · 시작 26.8.21(금)
목표
거래처(contentsworks/아임웹)에 맡긴 포인 홍보용 홈페이지 www.poin.co.kr 를 만료(올해 말) 전에 카피해 자체 운영으로 돌린다. 운영자료 인계는 거래처가 거부했다.
확정 사실 (코디 실측 26.8.21)
- 플랫폼 = 아임웹(imweb) SaaS. 쿠키
IMWEBVSSID, 에셋 전부cdn.imweb.me/vendor-cdn.imweb.me. contentsworks = 아임웹 파트너 대행사이지 자체 CMS 아님. → ⚠관리자 페이지 "가져오기"는 물리적으로 불가. 남의 SaaS 코드다. 가져올 수 있는 건 콘텐츠(데이터)뿐, 관리자는 새로 만든다. - 사이트 = 4페이지.
/index(Home) ·/15(About) ·/16(Gallery) ·/18(Contact). 사이트맵·크롤 일치. - 갤러리 = 게시판, 현재 4건(강화군 농업기술센터 강의실 / 수납형 캣타워 / 홍천 개인주택 / 천안 모델하우스 현장).
- Contact = 문의폼(성함·연락처·설치주소·희망일자·의뢰내용) → 아임웹 내부 ajax 엔드포인트. 폼 백엔드도 새로 만들어야 동작.
- 본문 텍스트는 서버렌더 HTML 안에 있다(JS 렌더 아님) → 스크랩 쉽다.
- 이미지 전량이
cdn.imweb.me→ 만료되면 같이 죽는다. 전량 로컬 다운로드가 필수. - 현재 사이트에 GA4 없다.
wcslog(네이버 애널리틱스) +fbq(페북 픽셀)뿐 → 지금 보는 방문자 통계 = 아임웹 어드민 내장 통계, SaaS 내부 데이터라 이관 불가(캡처/CSV만). - 애니메이션 = 스크롤 페이드인 8곳 +
owl-carousel슬라이더 2개. 비디오·외부 임베드 없음 → 재현 난이도 낮음. - DNS 네임서버 =
cns1~4.hostcocoa.com(호스팅코코아). 도메인 명의 = 포인(페페 확인), 호스팅만 대행사 위임 → 도메인 상실 위험 없음. - 만료 = 올해 말 예정(페페).
- 환경: poin-mini(100.108.234.45) Python 3.12.10 / Flask 3.1.3 / playwright 1.61 / requests 설치됨. 8xxx 점유 =
8443 8788 8790~8793 8795 8799 8801~8804 8810 8815 8822→ 8800 비어있음. .secrets\.env에 메일 자격증명 없음.
그릴링 결정 (26.8.21 페페)
| # | 결정 | 내용 |
|---|---|---|
| 1 | 카피 방식 | 미러 스냅샷 → 재구축, 2단계. 미러본은 「정답지」로 영구 보관 |
| 2 | 관리자 범위 | 갤러리 관리 + 방문자 통계 2개만. 아임웹 어드민 전체 흉내 안 함 |
| 3 | 도메인 | 명의 = 포인. 급한 불 없음 |
| 4 | 스택 | Flask + SQLite + Jinja (pfs와 동일 계열) |
| 5 | 통계 | 자체 카운터 지금 + GA4는 공개 전환 때. 아임웹 과거 통계는 만료 전 스크랩(참고 보관) |
| 6 | 자산 확보 | 어드민 로그인해 원본 다운로드 + CDN 긁기 병행. 로그인 자동화 = 페페 승인 확정 |
| 7 | 문의폼 | SQLite 저장. 알림은 이메일(poincustomer@gmail.com), 텔레그램 아님 |
| 8 | 배포 | 리포 C:\dev\poin-site / 포트 8800 / pythonw 자동시작(HKCU Run) / 테일스케일 전용, Funnel 공개 안 함 |
| 9 | 재현 충실도 | "같아 보이면 OK" — 데스크톱·모바일 육안 대조. 픽셀 완전일치 아님 |
| 10 | 메일 발송 | 지금은 저장만. SMTP는 공개 전환 때 붙임(앱 비밀번호 미발급) |
| 11 | 문의 이력 | 과거 실사용 기록 없음 → 이관 안 함, 새로 시작 |
| 12 | 완료 판정 | 아래 8항목 |
작업 계획 (Phase)
- P0 미러 스냅샷 — 만료 전 원본 확보(되돌릴 수 없는 리스크 1순위). Python 미러 스크립트(requests, wget 없음) →
mirror/. 페이지 4 + 참조 에셋 전량, URL 로컬 재작성. - P1 어드민 수확 — Playwright로 아임웹 어드민 로그인 → ①갤러리 4건 원본 이미지+본문 ②방문자 통계 최대기간 CSV/캡처 ③페이지 편집기 원본 이미지 ④SEO 설정(메타·OG·파비콘) ⑤숨은 데이터 유무 확인. →
harvest/ - P2 콘텐츠 추출 — 미러 HTML → 섹션별 텍스트/이미지 구조화(
content.json) + 이미지 전량static/img/로컬화 - P3 재구축 — Flask 앱: 템플릿 4 + base, SQLite 3테이블(gallery·inquiry·visit), 관리자(로그인 + 갤러리 CRUD + 통계표), 페이드인 = IntersectionObserver, 슬라이더 = CSS scroll-snap
- P4 배포·검증 — 8800 pythonw 자동시작 + 완료 판정 8항목
완료 판정
① 4페이지 전부 뜬다 ② 원본 vs 재현 데스크톱·모바일 스크린샷 대조 첨부 ③ 이미지 전량 로컬(cdn.imweb.me 참조 0건) ④ 갤러리 등록·수정·삭제 실동작 ⑤ 통계표에 실제 접속 기록 ⑥ 문의폼 제출 → DB 저장 확인 ⑦ 재부팅 후 자동시작 ⑧ 미러 스냅샷 보관 완료
진행 상황 (2026-08-21 세션)
- ✅ P0 미러 스냅샷 — 8페이지(4 + 갤러리상세 4) · 에셋 357개 75.6MB · 스크린샷 16장. 자체검사 ALL PASS(절대URL 잔존 0 · 에셋 누락 0 · 백지밴드 0). 커밋
6fe6455 - ✅ P1 어드민 수확 — 글 4건 원문 + 원본 사진 34장 34MB(3936×2624 급) · 방문자/페이지뷰 월간 이력 2025-04~2026-08 CSV · SEO/사이트 설정 · 숨은 데이터 점검(전부 비어있음 확인). 커밋
8e90b3a - ✅ P2~P4 재구축·배포 — Flask+SQLite, 공개 4페이지 + 갤러리 상세, 관리자(갤러리 CRUD·방문자 통계·문의함), 자동시작(HKCU Run, 창 없음). 자동검증 39/39 PASS. 커밋
a982e64 - 🔴만료일 정정 = 2027-04-09 (D-231) — 사전 정보 「올해 말」과 다르다. 여유가 더 있다.
- 원본 대조(데스크톱 높이차): index −11 · gallery −10 · contact −37 · about −109 px. 모바일은 원본이 별도 섹션을 쓰므로 200~400px 차(의도).
접속
- 사이트
http://poin-mini:8800·http://100.108.234.45:8800(테일스케일 붙은 기기 전부) - 관리자
http://poin-mini:8800/admin— 비번 =.secrets/.env의POIN_SITE_ADMIN_PW - ⚠사무실PC 에서는 테일스케일 IP 로만 붙는다 (26.8.31 확인) — 미니PC 현재 LAN =
192.168.45.48(SK 회선)이라 사무실 내부망 IP 로는 못 간다.100.108.234.45:8800을 쓴다. - devplan 안내 페이지 =
http://poin-mini:8799/poin-site.html(허브 카드poin-site)
미결 · 다음
- ⏳ [코디] 26.9.29 콘텐츠웍스에 도메인 회수 카톡 발송(환불 안 받음) → 답장 대기. 상세 = 아래 「📨 거래처 협의 착수」
- ⏸ [코디] 26.9.29 15:25 KST poin.co.kr 자체 Route53 존
Z087979622M5ZKBAXOEAS준비 완료(pfs·pfs-test A 13.209.147.168 · colorchip hyosan · ACM 검증) — [페페] 「@·www 없이 NS 변경, 아임웹 홈페이지 중단 수용」 결정. 가비아 NS 변경은 로그인 보안문자(캡차)로 코디가 못 해 미전환 → 페페가 My가비아 NS 1~4차에ns-1796.awsdns-32.co.ukns-457.awsdns-57.comns-1431.awsdns-50.orgns-969.awsdns-57.net입력하면 끝(바꾸는 순간부터 아임웹 홈페이지 중단). 기록 =C:\dev\colorchip\infra\DNS-RECORDS.md. - ⏳ 페페 육안 1회 — 4페이지 + 관리자 화면. 어긋난 곳 지적하면 그 부분만 손본다.
- ⏳ 공개 전환 시 = GA4 부착(
tools/site-analytics재활용) · Gmail 앱 비밀번호 발급(페페) → 문의 메일 알림 · HTTPS · DNS(호스팅코코아)를 새 서버로 전환 - ⏳ 갤러리 사진 업로드 UI 없음 — 현재는
static/img/posts/<slug>/에 넣고tools/build_assets.py재시드. 필요하면 붙인다. - 📌 만료 전 재수확 1회 권장(2027-03) — 그 사이 원본에 콘텐츠가 늘면
tools/mirror.py+harvest_*.py다시 돌린다.
DNS·도메인 권한 실사 (26.8.29(토), 코디) — 이전 실행 전 정본
계기 = 페페가 가비아 「네임서버 변경」 화면을 보고 "거래처 끊고 내 설정으로 갈 수 있나" 질문. 결론 = 갈 수 있다. 거래처 동의 불필요. 실행은 미정 — 페페가 거래처와 협의해 진행하기로 함(26.8.29).
확정 사실 (전부 실측)
- 도메인 = 가비아 등록, 페페 계정. 만료 2032-05-28. DNSSEC 미서명. → NS 교체는 우리 단독으로 가능
- 거래처 = contentsworks(아임웹 파트너 대행). DNS는
cns1~4.hostcocoa.com=205.251.196.138→ Route53 화이트라벨 리셀러 - 존 레코드 4개가 전부 (권위서버 직조회 + CT로그 + 서브도메인 60개 브루트 3중 교차검증)
| 이름 | 값 | 주인 |
|---|---|---|
@ / www |
ALIAS → CloudFront (아임웹) | 거래처 |
pfs / pfs-test |
A 13.209.147.168 |
포인 |
- MX·TXT·SPF·CAA 전무 → 도메인 메일 미사용 → 이전 사고 최대 원인이 애초에 없음
- pfs 자산은 전부 포인 것 — EC2
i-03225ba8bc12a929e(PFS-Production, t3.medium) · EIP13.209.147.168(고정) · Let's Encrypt 자동갱신 정상 · 테일스케일100.73.87.48이미 연결 - 홍보 홈페이지 트래픽 = 주 14~17명(하루 1~4명). PFS EC2 nginx vhost 하나면 충분, 별도 서버 불필요
TTL 실측 → 영향 정량화
| 값 | 실측 |
|---|---|
pfs A 레코드 |
3600 (1시간) |
.kr 위임 NS |
86400 (1일) |
| SOA minimum (네거티브 캐시) | 86400 (1일) |
- 계획 전환 = 다운타임 0 — 옛/새 존에 같은 값을 심어두면 전파 중 어디로 가든 정답이 나온다
- 사고 후 대응 = 최대 1일 + 오진 비용(서버·데이터 멀쩡해서 DNS를 늦게 의심한다)
- 즉 「시한폭탄」이 아니라 「미리 하면 0, 안 하면 언젠가 반나절~하루 다운」. 데이터·서버·IP 상실 위험은 0
🔑 서브도메인은 대피소가 안 된다
pfs2.poin.co.kr 같은 우회안은 성립하지 않는다. .kr 위임이 도메인 단위라 존재하지 않는 이름(zzz-9999.poin.co.kr)조차 같은 cns1~4로 간다 — 앞자리를 뭘 붙이든 같은 장부 한 권이다. 존이 사라지면 동시에 사라진다.
서브도메인 위임(거래처 존에 pfs NS ns-xxx.awsdns... 1줄)은 기술적으로 가능하나 ①거래처 협조 필요 ②존 삭제 시 그 줄도 같이 사라짐 = 최악의 조합.
진짜 대피소 = 다른 도메인 또는 테일스케일 100.73.87.48(이미 있음, DNS 무관) 또는 hosts 파일(인증서 정상 — 이름이 일치하므로).
🔴 보안 — 거래처가 와일드카드 인증서를 갖고 있다
CT 로그: 거래처 AWS 계정 ACM이 *.poin.co.kr + poin.co.kr 보유 (26.6.5 발급 → 26.12.19 만료). DNS-01 검증이라 존을 쥔 동안 자동갱신된다.
→ 이전 후 폐기 요청 + 새 존에 CAA 레코드로 발급 잠금.
(아임웹 쪽 poin.co.kr+www Sectigo DV는 26.12.20 만료 — 별건)
전환 절차 (합의 시)
- 우리 Route53에
poin.co.kr존 생성 +pfs/pfs-test심기 — NS 미변경이라 영향 0, 롤백 불필요, 월 $0.5 dig @<새NS> pfs.poin.co.kr직접 질의로 사전검증- 테스트 PC 1대만 hosts로 새 경로 실사용 (인증서 정상)
- ⚠위험작업·승인 후 — 가비아에서 NS 교체 → 4개 이름 전파 확인. 롤백 = NS 원복(최대 1일)
- 아임웹 해지 · 거래처 계약 종료 · 와일드카드 폐기 요청 · CAA 잠금
-
@/www는poin-site(이미 39/39 완성)를 PFS EC2 vhost로 얹어 유지 권장. 폐기해도 되나 명함·검색·기존 링크가 죽는다
📨 거래처 협의 착수 — 26.9.29(화) [페페]
- [페페] 콘텐츠웍스 나도현 대표에게 카톡으로 도메인 회수·조기 계약종료 요청 발송(이전에 전화 몇 차례 사전 언급).
- 명분 = 홍보효과·월 접속자 적음 → 자체 인스타 집중 · 자체 개발 중 DNS 변경을 매번 부탁드리기 번거로움.
- 🔑잔여 기간 환불 요청 안 함(우리 쪽 조기종료라 명시). 요청 = 도메인 권한 전달뿐.
- 형식 = 우리가 무엇을 준비·어떤 순서로 할지 거래처에 묻는 형태. 내부 프로그램(PFS)도 같은 도메인 사용 중이라 원활히 하고 싶다고만 언급(기술 용어 없이).
- 톤 = 페페는 짧고 비전문가 말투 선호(코디 초안 2회 반려: 전문적·길다 → 요청 나열 대신 문의형).
- ⏳ 다음 = 답장 오면 아래 「받아둘 것」 대조 — 특히 ①존 레코드 목록 ②우리 NS 전환 확인 전 존 삭제 금지(먼저 지우면 pfs 끊김) ③와일드카드 인증서 폐기는 전환 후 요청.
거래처와 협의할 때 받아둘 것
- 🔑존 파일 전체 export — 우리 열거는 브루트포스+CT라 놓친 레코드가 있을 수 있다. 이것만 받으면 그 공백이 닫힌다. 협의에서 가장 값어치 있는 항목
- 아임웹 도메인 연결 지정값(A IP 또는 CNAME) — 홈페이지를 잠시라도 아임웹에 둘 거면 필수. ⚠현재 apex의 IP 4개(
18.67.51.x)를 베끼면 안 된다 — CloudFront 공용 엣지라 로테이션되어 나중에 조용히 죽는다 *.poin.co.krACM 와일드카드 폐기 확약- 아임웹 계약 종료일 확인 (어드민 실측 2027-04-09)