2026-08-06 ServiceOn Blog 작업일지입니다. 오늘은 2건의 작업을 진행했습니다.

배포 도메인

현상/기능

  • `https://blog.serviceon.kr/` 관리자 버튼이 localhost 로 이동 → 개발/운영 URL 분리

현상/기능

  • 관리자 URL을 `https://admin.blog.serviceon.kr` 로 사용 (DNS는 사용자 추가)
  • nginx conf 검토·수정 (기존 blog conf가 n8n/workflow 인증서로 잘못됨)
  • PM2 등록 방법

작업

  • `NEXT_PUBLIC_ADMIN_URL` 제거 → 런타임 `ADMIN_LOGIN_URL` ( 개발 / 운영)
  • 신규 → `getAdminLoginUrl`
  • → Header에 `adminUrl` props 주입 (운영 기본값 admin.blog.serviceon.kr)
  • `서버 설정=https://admin.blog.serviceon.kr`
  • `NEXT_PUBLIC_ADMIN_URL=https://admin.blog.serviceon.kr/login`
  • README 운영 도메인 안내 반영
  • `ops/nginx/blog.serviceon.kr.conf`: HTTP(80)만 → certbot으로 SSL (인증서 없는 443 제거, http2 경고 해소)
  • `scripts/ecosystem.config.cjs`: blog-web(**3001**) / blog-admin(**3002**) — 3000 충돌 회피
  • nginx proxy_pass / pack 기본 포트도 3001·3002로 변경
  • pack이 `deploy/ecosystem.config.cjs` 를 확실히 쓰도록 수정 (`pnpm build`만으로는 없음 → `pnpm build:deploy` 또는 `pnpm pack:deploy`)
  • pack `tar -h`: symlink dereference — 서버 `Cannot find module 'next'` 대응
  • pack: pnpm peer(`@swc/helpers` 등)을 app `node_modules`로 호이스트 + cwd를 server.js 위치로
  • pack Windows symlink 수정: `realpathSync`/`existsSync` EPERM → `readlink`+`lstat`로 peer(`react`, `@swc/helpers` 등) 실파일 복사 (로컬 `node ` HTTP 200 확인)

n8n 워크플로우 (t2)

현상/기능

  • AI Agent Structured Output Parser에 `message` 필드 추가

작업

  • Structured Output Parser JSON 예시에 `message`(메일용 plain text) 추가
  • AI Agent 프롬프트에 message 출력 지시 반영
  • Gmail `Send a message` 본문을 `{{ $json.output.message }}` 로 연결