Files
AriWeb-Suite/docs/verification/webmaker-hal-link-2026-10-27.md
zzabisagent-labandClaude Fable 5.1 03cb9c0777 운영 Webmaker ↔ HAL 연동 점검 도구와 dry-run 기록: scripts/webmaker-inventory.mjs(읽기 전용 inventory·안정 식별자 대조·충돌/누락 판정·비밀 차단) + 테스트 5건, RUNBOOK §8, 검증 기록
- hostinger webmaker.ariweb.net 실데이터 결과: 프로젝트 10(연결 일치 3·고유 7), 회원 12(SSO 3·고유 9), Gitea refs 13, HAL 모듈 0.1.1 ok — 충돌 0·누락 0, 적용 변경 없음(교체 불필요)
- 사전 스냅샷·복원 검증·되돌리기 절차·사후 readback 은 docs/verification/webmaker-hal-link-2026-10-27.md (비밀값 없음)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-27 05:06:37 +00:00

8.5 KiB

webmaker.ariweb.net ↔ HAL 연동 점검·dry-run 기록 (2026-10-27)

작업 승인: 오즈. 실행: Claude Fable 5.1(세션 ariweb-suite-8a). 저장소 기준 main ac072e6 에서 도구 추가(scripts/webmaker-inventory.mjs, test/webmaker-inventory.test.mjs). 비밀값(해시·토큰·키·세션)은 어디에도 출력·기록하지 않았다.

1. 실제 호스트 (DNS·운영 위치, 개발 저장소로 추정하지 않음)

항목 실제 값
webmaker.ariweb.net A 187.53.133.173 = hostinger(srv1953374, Ubuntu 24.04.4, Node v22.23.2, nginx 1.24.0)
서비스 systemd webmaker.service(User master, ExecStart node server.js, 127.0.0.1:3080) + webmaker-setup.service
코드 /srv/webmaker/current → /srv/webmaker/releases/0.1.1(프로세스 cwd 동일), REVISION.json = 모듈 0.1.1 / 상류 1.7.3, HAL 작업으로 2026-10-26 14:00:21Z 설치 — 즉 이미 Ariweb Suite Webmaker(도입 모듈) 이며 교체 대상이 아니다
데이터 DATA_ROOT=/data/webmaker(0700, 691M) · DATA_DIR=/data/webmaker/sites · SITES_ROOT=/var/www/webmaker-sites(969M) · STATS_LOG=/var/log/nginx/webmaker-sites.log · 설정 /data/webmaker/config.json(값은 보관소)
저장 구조 JSON 파일(원자적 저장 + .bak): users.json(회원·scrypt 해시) · sites/<id>.json(프로젝트·배포 이력·git 변경) · domains.json · deploy-targets.json · ariweb-links.json(포털 연결 등록부) · mail-servers.json · credits.json 등. 로컬 git /data/webmaker/git/<id>(7개) → Gitea 127.0.0.1:3030(hostinger 로컬, 저장소 webmaker/sites, 브랜치 sites/<id>/main)
HAL hostinger 자체 HAL(ariweb-hal, 127.0.0.1:8900, nginx hal.ariweb.net — 공개 DNS 없음) 부트스트랩 완료, 서버 srv_01a178829d5848f93a15f93a17(control, ariweb.net) + Agent ag_01a178829f1c3d88381d2c0c75 활성, module_targets.webmaker 0.1.1/0.1.1 health ok
bear HAL(hal21.ariweb.net) 운영자 1·서버 0·Agent 0·부트스트랩 미완료. 운영자 로그인 정보는 이 세션에 없다(피어 세션 ariweb-suite-36 도 만들지 않았다고 답함)

2. inventory (원본, 안정 식별자)

자원 수 식별자·비고
Webmaker 회원 12 고유 9(oz-admin, admin, guest01, icqmomo, keytron, thewings, mingks01, visionplus, yunmi7266) + 포털 SSO 3(aw-01a17894-01a17894, aw-01a17895-01a17895, aw-01a1789f-01a1789f)
프로젝트(사이트) 10 32-hex id. 배포 이력 있음 3(291da329… sample.ariweb.net 14회, 41ca22fd… guide.ariweb.net 3회, 572a1d94… hs-company 1회), 로컬 git 7, 포털 연결 3(검증 사이트)
도메인(Webmaker 등록부) 2 sample.ariweb.net, guide.ariweb.net(모두 icqmomo, active). hs-company.ariweb.net 은 프로젝트 도메인 목록에만 있고 DNS 는 bear(121.152.149.45)를 가리킴
배포 대상 1 a7ae448c0593 기본서버-자체호스팅(local, /var/www/webmaker-sites, https://webmaker.ariweb.net)
메일 서버 0 mail-servers.json items 비어 있음(메일 연동은 config.mail.provider=arimail, https://webmail.ariweb.net)
Gitea refs 13 heads sites/<id>/main 7개 + changes/* 5개 + main
사이트 디렉터리 10 파일 수: 291da 13 · 41ca 16 · 4cbe 61 · 572a 31,780(961M) · 7e10 8 · b354 4 · cf7c 4 · 검증 3개 0
nginx 3 webmaker.ariweb.net.conf, wh-291da…conf, wh-41ca…conf (+wh-default.conf)
포털 DB users 7 · groups 10 · sites 3 · domains 6 · mail_services 4 · deployments 0 사이트 3개 모두 webmaker_project_id 로 검증 프로젝트에 연결

3. 사전 스냅샷 (hostinger, 사설, 비밀 미출력)

위치 /srv/webmaker/backups/pre-hal-link-20261027T045715Z/(master 0700, 파일 0600). 내용: data-webmaker.tar.gz(708,460,310B) · sites-root.tar.gz(76,467,803B) · checksums-source.txt(원본 32,608 파일 sha256) · conf/(webmaker·webmaker-setup 유닛, nginx 3+1 파일, sites-enabled 목록, 유닛 상태) · gitea-refs.txt(13) · local-git-heads.txt · hal.sqlite·portal.sqlite(VACUUM INTO 일관 사본) · MANIFEST.sha256 · ROLLBACK.md · dry-run.json. MANIFEST.sha256 자체 sha256 앞 16자리 b3d7d97e66ace583, data tar 29d13e5846871a63, sites tar 8690f9de6e1246fd, checksums 8d01acf5721ac7ec. 복원 가능성 검증: 두 tar 를 임시 디렉터리에 풀어 checksums-source.txt 32,608건 전부 대조 → RESTORE_TEST_OK 32608 files(04:58:32Z), 임시 디렉터리 삭제. 되돌리기 절차는 ROLLBACK.md(정지 → 현재 보존 → tar 복원 → 설정 복원 → 기동 → 체크섬·refs 대조).

4. 연동 경로 조사 (코드·테스트)

  • HAL 은 사이트·계정을 모델링하지 않는다(테이블: servers·agents·modules·module_targets·releases·jobs…). Webmaker 의 "HAL 리소스" 는 모듈 등록(module_targets)뿐이며 이미 등록·건강 ok.
  • 포털 ↔ Webmaker 연결은 양쪽 등록부(ariweb-links.json ↔ sites.webmaker_project_id)로만 이뤄지고, 기존 프로젝트 연결은 포털 사용자 세션의 사이트 생성(projectMode=existing) 경로뿐이다(portal/sites/service.mjs). Webmaker 내부 API /api/internal/ariweb/* 는 포털 서비스 서명 필요. "콘텐츠 가져오기" 는 이번 버전 미지원(portal/sites/ui.mjs).
  • 비밀 입력 없이 쓸 수 있는 경로: 읽기 전용 inventory/dry-run(scripts/webmaker-inventory.mjs)뿐. 고유 회원 9명을 포털 계정으로 만드는 일은 사용자 자격 증명·동의가 필요해 하지 않았다(해시·세션 재사용 금지).

5. dry-run 결과 (hostinger 실데이터, 읽기 전용, dry-run.json sha256 e94116e71a5c1a81…)

판정 수
linked_consistent(양쪽 등록부 일치) 3 (85e1859a…→s_01a1789f…, 899f5bbe…→s_01a17895…, ad015867…→s_01a17894…)
unlinked_native(Webmaker 고유, 변경 대상 아님) 7
충돌(link_mismatch·duplicate·한쪽만·SSO 신원 누락·도메인 불일치·HAL 버전/건강) 0
누락(missing_project·Gitea ref·HAL 등록) 0 (Gitea sites/<id>/main 7/7, 마지막 푸시 커밋 일치)
SSO 회원 ↔ 포털 그룹·사용자 3/3 일치, 고유 회원 9 = 포털 신원 없음(keep)
HAL 모듈 registered, server srv_01a178829d…, target 0.1.1 = actual 0.1.1 = 설치 0.1.1(상류 1.7.3), health ok, Agent online
applyPlan no-op — 적용할 변경 없음

6. 적용 (5단계)

적용한 변경 없음. 교체 불필요(이미 Ariweb Suite Webmaker 모듈 0.1.1). 운영 Webmaker 의 회원·프로젝트·도메인·배포·메일 연결·Gitea·설정·세션은 바이트 단위로 보존(아래 7).

7. 사후 검증 (05:01~05:03Z, 모두 readback)

  • 콘텐츠 체크섬: /data/webmaker + /var/www/webmaker-sites 32,608 파일 sha256sum -c 불일치 0.
  • git fsck 로컬 7개 저장소 오류 0 · Gitea ls-remote --heads 13건 스냅샷과 동일.
  • webmaker.service active, MainPID 1041361, NRestarts 0, ActiveEnter 2026-10-26 14:00:23Z(스냅샷 전후 동일), 최근 2시간 err 저널 0. ariweb-hal/portal/agent, arihakdang-mail, nginx, webmaker-setup 모두 active·재시작 0.
  • nginx -t 성공, 유닛·vhost 4개 sha256 스냅샷과 동일. TLS: webmaker.ariweb.net CN 전용(2027-01-12), sample/guide *.ariweb.net(2027-01-13).
  • 외부 HTTP: https://webmaker.ariweb.net/ 302→/login(200, 제목 "로그인 — AI Webmaker" — 화면·세션 호환, 자격 증명 미사용) · sample.ariweb.net /,/en/,/ja/ 200 · guide.ariweb.net /,/en/ 200 · webmaker.ariweb.net 미리보기 경로 3개(/291da…/, /41ca…/, /572a…/) 200.
  • HAL readback: module_targets.webmaker 0.1.1/0.1.1 health ok last_check 05:01:44Z. session.secret·users.json mtime 변동 없음.

8. 미해결 blocker (사람 결정 필요)

  1. bear HAL(hal21.ariweb.net)에 hostinger 를 서버로 등록하거나 Agent 를 재등록하려면 hal21 운영자 로그인(등록 토큰 발급)이 필요하다 — 이 세션에는 자격 증명이 없고, 운영자 1건은 누가 만들었는지 확인되지 않았다. 또한 hostinger Agent 는 hostinger HAL 에 등록돼 있어 제어 평면을 hal21 로 옮기는 것은 별도 결정·절차(§34 "하나의 HAL")가 필요하다.
  2. Webmaker 고유 회원 9명·고유 프로젝트 7개를 포털 자원(계정·그룹·사이트)으로 옮기는 기능은 없고, 만들려면 각 사용자의 자격 증명·동의가 필요하다.