클로드 코드 + NAS 운영 가이드

Mac Studio · Synology 2대 · 자체 호스팅 인프라
최종 갱신: 2026-05-11

1. 시스템 개요

1.1 핵심 자산

자산역할위치
Mac Studio주 작업기, 클로드 코드 운영, 자동화 스크립트 호스트로컬
NAS 1 — sysadcom (RS822+)웹 호스팅, 24/7 서비스, Docker 메인외부 도메인 sysadcom.dscloud.me
NAS 2 — live79bambu (RS815+)대용량 저장(영화), 백업외부 도메인 live79bambu.dscloud.me

1.2 NAS 스펙 비교

항목sysadcom (메인)live79bambu (서브)
모델RS822+ (2022)RS815+ (2015)
CPUAMD Ryzen V1500B (Zen, 4코어 2.2GHz)Intel Atom C2538 (4코어 2.4GHz)
RAM32 GB2 GB
저장 용량37 TB14 TB
DSM 버전7.3.27.1.1
인터넷 회선1 Gbps10 Gbps
외부 노출 포트80 (HTTP), 5001 (DSM)5001 (DSM)
실측 다운로드 속도~561 Mbps~679 Mbps

2. 호스팅된 웹사이트 (sysadcom)

2.1 사이트 인벤토리

호칭NAS 경로URL용도
보안 2급/web/portfolio/http://sysadcom.dscloud.me/portfolio/토스 포트폴리오 실시간 보고서
로네 (Ronnefeldt)/web/Ronnefeldt/http://sysadcom.dscloud.me/Ronnefeldt/로네펠트 선릉점 직원 관리 SPA
라이브 (Office Live)/web/Office Live/http://sysadcom.dscloud.me/Office%20Live/HLS 라이브 스트리밍 (LG UltraFine 카메라)
댄스/web/dance/http://sysadcom.dscloud.me/dance/댄스 관련 (용도 미상)

2.2 보안 2급 (토스 포트폴리오)

사용자: 배은광 — 한국 주식 투자자 (한국투자증권 A 계좌, 토스증권 B 계좌)

데이터 흐름

토스 watchlists 페이지 (Tampermonkey 오버레이)
    ↓ 10초마다 가격 읽기
iCloud Drive (~/Library/Mobile Documents/com~apple~CloudDocs/Code Claude/보안 2급/)
    ├── portfolio_data.json
    └── daily.json
    ↓ launchd 30초마다 sync (~/bin/sync-icloud-to-nas.sh)
NAS sysadcom — Web Station
    └── /web/portfolio/
    ↓ HTTP fetch
보고서: http://sysadcom.dscloud.me/portfolio/

구성 파일

주요 디자인 결정

2.3 Ronnefeldt (로네펠트 선릉점 직원 관리)

타입: 단일 HTML SPA (~140KB), 한국어, 클라이언트 사이드 저장(localStorage)

주요 기능

권한 시스템

배포 전략 (B+C 조합)

자동 백업 + 클라이언트 자동 페일오버

2.4 Office Live (HLS 라이브 스트림)

구성내용
소스LG UltraFine 카메라 + 디스플레이 마이크
인코딩H.264 720p @15fps + AAC stereo 48kHz
세그먼트2초 단위 .ts, 5개 rolling window (delete_segments)
워터마크좌하단 실시간 시각
운영 스크립트~/bin/live-stream.sh (launchd 24/7), ~/bin/live-record-daemon.sh (트리거 녹화)
자동 청소~/bin/live-cleanup.sh — launchd 1시간 주기, 5분+ 묵은 .ts 일괄 삭제
외부 시청 URLhttp://sysadcom.dscloud.me/Office%20Live/
오디오 함정: LG UltraFine 마이크는 native mono 48kHz. ffmpeg 입력 단에 -ac 2 -ar 44100 강제하면 0 채널 빈 오디오로 출력됨. 입력은 그대로 받고 출력 단에서만 -ac 2 -ar 48000 변환할 것.

3. 자동화 / launchd 인프라

3.1 토스 자동 로그인

스크립트역할
~/bin/toss-prefill.sh토스 signin 폼 자동 채우기 (이름, 생년월일, 주민첫글자, 휴대폰, 통신사, 약관 마스터)
~/bin/toss-prefill-cg.pyCGEvent 기반 입력 (잠금화면/원격 환경 우회용)
~/bin/toss-watchdog.shlaunchd 60초 주기, 로그아웃 감지 시 prefill 자동 재실행, SMS rate limit 회피 5분 cooldown
~/bin/toss-health-check.shlaunchd 2시간 주기, 탭/오버레이/데이터 sync 상태 점검 + 자동 복구
~/bin/toss-popup-daemon.shChrome OTP 자동완성 popup 좌표 클릭
~/bin/toss-icloud-folder.sh오버레이 "iCloud 폴더 선택" 클릭 자동화 (NSOpenPanel)

중요 함정

3.2 라이브 스트림 인프라

3.3 NAS 동기화

3.4 Ronnefeldt 배포

~/bin/ronnefeldt-deploy.sh
  1. NAS의 현재 index.html 다운로드
  2. 그것을 ronnefeldt-pro.html로 업로드 (직전 작동 버전 백업)
  3. 로컬 index.html을 새 NAS index.html로 업로드
  4. 두 URL 모두 health check (HTTP 200)

4. NAS 접근 및 인증

4.1 자격증명 (Keychain)

서비스명대상계정
nas-portfolio-syncsysadcom NAS (FileStation/DSM API)user + pass
nas-live79bambulive79bambu NASuser + pass + host (QuickConnect URL)

FileStation API 패턴

NAS_HOST="https://sysadcom.dscloud.me:5001"
NAS_USER=$(security find-generic-password -s nas-portfolio-sync -a user -w)
NAS_PASS=$(security find-generic-password -s nas-portfolio-sync -a pass -w)
# Login → SYNO.API.Auth (session=FileStation, format=sid)
# List → SYNO.FileStation.List (folder_path=...)
# Upload → SYNO.FileStation.Upload

4.2 외부 접속 메커니즘

NAS외부 도메인외부 노출 포트
sysadcomsysadcom.dscloud.me80 (Web Station), 5001 (DSM HTTPS)
live79bambulive79bambu.dscloud.me5001 (DSM HTTPS만)

4.3 Tailscale (영화 시청용 가상 망)

4.4 video 공유 (live79bambu)

숨김 공유 — 직원에게 안 보이게 의도 설계

영화 폴더 인벤토리

5. 클로드 코드 운영 컨벤션

5.1 워크스페이스 (iCloud Drive)

~/Library/Mobile Documents/com~apple~CloudDocs/Code Claude/ 가 마스터 작업 폴더.

Code Claude/
├── CLAUDE.md                        ← 단일 마스터 인덱스 (한 개 파일 정책)
├── 보안 2급/                          ← 토스 포트폴리오 프로젝트
├── Ronnefeldt/                       ← 로네펠트 사이트 작업 사본
│   ├── index.html
│   ├── ronnefeldt-pro.html
│   └── img/
└── (PDF 매뉴얼 3개)

5.2 메모리 시스템

5.3 원격 제어 — /remote-control

6. 운영 노하우 / 주의사항

6.1 FileVault + 자동 로그인 함정

6.2 NAS API 한계

6.3 외부 접속 경로별 한계

경로한계
QuickConnect브라우저 전용. API 자동화 안 됨
DDNS:5001 (DSM)API 정상. 다만 패키지 설치 등 일부 제한
DDNS:80 (Web Station)sysadcom만 노출. live79bambu는 라우터 작업 후 가능
TailscaleSMB/IP 직접 접근. 모든 포트 사용 가능

6.4 트랜스코딩 vs 직재생

7. 자주 쓰는 명령

토스 동기화 로그

tail -f ~/Library/Logs/sync-icloud-to-nas.log
tail -f ~/Library/Logs/toss-watchdog.log
tail -f ~/Library/Logs/toss-health-check.log
tail -f ~/Library/Logs/live-stream.log
tail -f ~/Library/Logs/live-cleanup.log

NAS 데이터 확인

curl -s "http://sysadcom.dscloud.me/portfolio/portfolio_data.json" | python3 -m json.tool
curl -s "http://sysadcom.dscloud.me/portfolio/trades.json" | python3 -m json.tool

Ronnefeldt 배포

~/bin/ronnefeldt-deploy.sh

localStorage 리셋 (오버레이 코드 변경 후)

// 토스 페이지 F12 → Console
localStorage.removeItem('_portfolio_holdings');
localStorage.removeItem('_portfolio_buy_prices');

이전 세션 이어가기

claude --resume <session-id>
# 세션 파일 위치: ~/.claude/projects/-Users-macstudio/*.jsonl

8. 라이브 사이트 URL 모음

사이트URL
📊 보안 2급 (포트폴리오)http://sysadcom.dscloud.me/portfolio/
🍵 로네펠트 직원 관리http://sysadcom.dscloud.me/Ronnefeldt/
📺 Office Live (라이브 스트림)http://sysadcom.dscloud.me/Office%20Live/
💃 dancehttp://sysadcom.dscloud.me/dance/
🎬 영화 (Tailscale 후)smb://100.84.81.75/video
🔧 sysadcom DSMhttps://sysadcom.dscloud.me:5001
🔧 live79bambu DSMhttps://live79bambu.dscloud.me:5001

이 문서는 클로드 코드와 함께한 작업 이력을 종합한 것입니다. 변경사항은 Code Claude/CLAUDE.md의 "최근 작업" 섹션과 메모리 시스템에서 추적됩니다.