Hermes Agent Sophie 프로필 및 OMW 기본 볼트 Hostinger VPS 이전 계획

For Hermes: 이 문서는 실행 전 승인용 마이그레이션 계획이다. 실제 이전은 각 Phase별 백업·검증 로그를 남기며 진행한다.

Goal: 현재 Windows WSL Ubuntu 환경의 Hermes Agent, sophie 프로필, Windows 로컬/WSL 경로의 OMW 기본 볼트 jyp-garden을 Hostinger VPS로 이전해 24/7 안정 운영 가능한 서버 환경으로 전환한다.

Architecture: Hostinger VPS의 Ubuntu 서버를 새 운영 호스트로 만들고, Hermes Agent는 sophie 프로필 단위로 복원한다. OMW는 현재 기본 볼트 경로 /mnt/d/projects/jyp-garden의 내용을 VPS 로컬 디스크 경로로 이전하고, omw registry가 새 경로를 가리키도록 재등록·검증한다.

Tech Stack: Ubuntu VPS, SSH, rsync/tar, Hermes Agent CLI, Hermes profiles, Slack/Telegram Gateway, cron, OMW/Obsidian Markdown vault, systemd.


0. 현재 확인된 상태

항목현재 값
기준 시각2026-06-11 12:30:21 KST
현 운영 환경WSL Ubuntu, 홈 /home/administrator
Windows 사용자 폴더/mnt/c/Users/Administrator
Hermes active profilesophie
Sophie profile path/home/administrator/.hermes/profiles/sophie
Sophie config/home/administrator/.hermes/profiles/sophie/config.yaml
Sophie env/home/administrator/.hermes/profiles/sophie/.env
Gateway 상태running
OMW active vaultjyp-garden
OMW active vault path/mnt/d/projects/jyp-garden
OMW vault type/modeobsidian / wiki
OMW registry root현재 wrapper 기준 OMW_HOME=/home/administrator/.omw

확인 필요:

  • Hostinger VPS OS 버전, SSH 접속 계정, 서버 IP/도메인.
  • VPS 디스크 용량과 OMW vault 전체 크기.
  • Slack/Telegram gateway를 VPS에서 계속 운영할지, 기존 WSL gateway와 병행 전환할지.
  • Hostinger 방화벽/패널에서 outbound/inbound 정책 제한 여부.

1. 이전 범위와 비범위

1.1 이전 범위

  • Hermes Agent 설치 및 CLI 사용 환경.
  • Hermes sophie 프로필 전체:
    • config.yaml
    • .env 및 provider/API/gateway secrets
    • skills/, skill-bundles/, cron/, sessions/, logs/, state.db, auth.json 등 프로필 상태 파일
  • OMW 실행 환경:
    • /home/administrator/.local/bin/omw wrapper 동등 구성
    • OMW source/repo 또는 설치 패키지
    • OMW_HOME registry (/home/administrator/.omw) 이전 또는 재생성
  • OMW 기본 볼트 jyp-garden 전체:
    • wiki/, raw/, system/, .obsidian/
    • .agents/, .claude/, .codex/ 등 운영 보조 디렉터리
    • .git/ 포함 여부는 백업/이전 전략에서 별도 결정
  • Google Drive one-way copy-sync cron 등 OMW 관련 자동화.

1.2 비범위 또는 별도 승인 필요

  • Windows 전체 사용자 홈 이전.
  • Obsidian 데스크톱 앱 설정 이전.
  • Slack/Telegram 봇 토큰 재발급 또는 외부 서비스 설정 변경.
  • 기존 WSL 환경 삭제.
  • Google Drive 원격 파일 삭제 또는 양방향 동기화 전환.

2. 목표 서버 구조안

권장 기본 경로:

/home/jyp/
  .hermes/
    profiles/
      sophie/
  .omw/
  .local/bin/omw
  projects/
    oh-my-wiki/
    jyp-garden/

권장 운영 원칙:

  • VPS Linux 사용자명은 jyp 또는 administrator 중 하나로 고정한다. 새 서버에서는 /home/jyp 권장.
  • OMW vault는 /home/jyp/projects/jyp-garden처럼 Linux native filesystem에 둔다. Windows mount 경로(/mnt/d/...)는 VPS에서 사용하지 않는다.
  • secrets는 .env, auth.json, Google credential 디렉터리로 분리하여 백업·전송 시 암호화한다.
  • 전환 완료 전까지 기존 WSL gateway는 유지하고, VPS gateway 검증 후 한 번만 cutover한다.

3. Phase 1 — 사전 조사 및 동결 계획

Task 1.1: 현재 시스템 인벤토리 생성

Objective: 이전 대상의 실제 파일·설정·자동화 목록을 고정한다.

Commands:

# WSL 현재 환경
hostnamectl || uname -a
python3 --version
which hermes && hermes --version
hermes profile show sophie
hermes config path
hermes config env-path
hermes tools list
hermes cron list --all
omw status
omw vault list
omw doctor
 
# 용량 확인
du -sh /home/administrator/.hermes/profiles/sophie
du -sh /home/administrator/.omw
du -sh /mnt/d/projects/jyp-garden

Output: migration-inventory-YYYYMMDD.txt로 저장.

Verification:

  • sophie 프로필 경로가 /home/administrator/.hermes/profiles/sophie로 확인된다.
  • OMW active vault가 jyp-garden이고 path가 /mnt/d/projects/jyp-garden로 확인된다.
  • cron job 목록에 morning brief, mail triage, OMW/Drive sync 관련 작업이 누락 없이 포함된다.

Task 1.2: 이전 동결 시점 결정

Objective: 데이터 불일치를 막기 위해 쓰기 작업이 적은 시간대를 정한다.

권장: KST 늦은 밤 또는 업무 전 새벽.

동결 대상:

  • OMW vault 문서 편집.
  • Sophie cron job 신규 실행.
  • Gateway를 통한 파일 수정 작업.
  • Google Drive sync 실행.

Verification: 동결 공지와 예상 복구 시점을 Slack/Telegram에 남긴다.

4. Phase 2 — 백업

Task 2.1: Hermes Sophie 프로필 백업

Objective: 프로필 전체를 재현 가능한 tarball로 저장한다.

mkdir -p /home/administrator/migration-backups/2026-06-11
cd /home/administrator
 
tar --exclude='profiles/sophie/logs/*.log' \
  -czf migration-backups/2026-06-11/hermes-profile-sophie.tar.gz \
  -C /home/administrator/.hermes/profiles sophie
 
sha256sum migration-backups/2026-06-11/hermes-profile-sophie.tar.gz \
  > migration-backups/2026-06-11/SHA256SUMS

주의: .env, auth.json, 세션 DB에는 민감 정보가 포함될 수 있으므로 외부 공유 금지.

Task 2.2: Hermes root/shared 상태 확인 및 선택 백업

Objective: sophie 프로필 밖에 존재하지만 실행에 필요한 파일을 확인한다.

# 프로필 밖 공용 경로 후보
ls -la /home/administrator/.hermes
ls -la /home/administrator/.config/gws || true
ls -la /home/administrator/.local/bin/omw || true

백업 후보:

  • /home/administrator/.config/gws — Google Workspace CLI 인증 정보.
  • /home/administrator/.local/bin/omw — OMW wrapper.
  • /home/administrator/projects/oh-my-wiki — OMW source checkout.
  • /home/administrator/.ssh — 필요 시 SSH deploy key. 단, 별도 승인 후 암호화 백업.

Task 2.3: OMW registry와 vault 백업

Objective: OMW registry와 실제 vault를 각각 백업한다.

cd /home/administrator
 
tar -czf migration-backups/2026-06-11/omw-home.tar.gz \
  -C /home/administrator .omw
 
# .git 포함 전체 백업. 용량이 크면 .git 제외본도 별도 생성.
tar -czf migration-backups/2026-06-11/jyp-garden-full.tar.gz \
  -C /mnt/d/projects jyp-garden
 
tar --exclude='jyp-garden/.git' \
  -czf migration-backups/2026-06-11/jyp-garden-no-git.tar.gz \
  -C /mnt/d/projects jyp-garden
 
sha256sum migration-backups/2026-06-11/*.tar.gz \
  >> migration-backups/2026-06-11/SHA256SUMS

Verification:

sha256sum -c migration-backups/2026-06-11/SHA256SUMS
tar -tzf migration-backups/2026-06-11/hermes-profile-sophie.tar.gz | head
tar -tzf migration-backups/2026-06-11/jyp-garden-full.tar.gz | head

5. Phase 3 — Hostinger VPS 기본 세팅

Task 3.1: VPS 초기 보안 설정

Objective: Hermes를 장기 실행할 최소 보안 기반을 만든다.

# VPS에서 실행
sudo apt update && sudo apt upgrade -y
sudo adduser jyp
sudo usermod -aG sudo jyp
sudo mkdir -p /home/jyp/.ssh
sudo cp ~/.ssh/authorized_keys /home/jyp/.ssh/authorized_keys
sudo chown -R jyp:jyp /home/jyp/.ssh
sudo chmod 700 /home/jyp/.ssh
sudo chmod 600 /home/jyp/.ssh/authorized_keys
 
# 방화벽: SSH만 우선 허용
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status

Verification: 새 SSH 세션에서 jyp@<VPS_IP>로 접속 가능해야 한다.

Task 3.2: 필수 패키지 설치

sudo apt install -y \
  git curl wget ca-certificates build-essential \
  python3 python3-venv python3-pip pipx \
  sqlite3 jq rsync tmux unzip ufw
 
python3 --version
git --version
sqlite3 --version

Verification: python3, git, sqlite3, rsync, tmux 명령이 정상 동작한다.

6. Phase 4 — Hermes Agent 설치 및 Sophie 프로필 복원

Task 4.1: Hermes Agent 설치

Objective: VPS에 Hermes CLI를 설치한다.

# Hermes 공식 설치 스크립트 사용
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
 
# shell reload 후 확인
exec $SHELL -l
which hermes
hermes --version
hermes doctor

Verification: hermes doctor에서 critical blocker가 없어야 한다.

Task 4.2: Sophie 프로필 복원

Objective: WSL의 sophie 프로필을 VPS 프로필 경로에 복원한다.

mkdir -p /home/jyp/.hermes/profiles
cd /home/jyp
 
# 전송받은 tarball 기준
sha256sum -c SHA256SUMS
 
tar -xzf hermes-profile-sophie.tar.gz -C /home/jyp/.hermes/profiles
 
hermes profile show sophie
hermes --profile sophie config path
hermes --profile sophie config check

경로 보정 체크:

  • config나 scripts 안에 /home/administrator 또는 /mnt/d/projects/jyp-garden 하드코딩이 있는지 검색한다.
  • VPS 사용자 홈이 /home/jyp라면 아래 후보를 치환한다.
grep -R "/home/administrator\|/mnt/d/projects/jyp-garden" \
  /home/jyp/.hermes/profiles/sophie \
  /home/jyp/projects/oh-my-wiki \
  2>/dev/null

수정 원칙:

  • 단순 로그·세션 기록의 과거 경로는 보존 가능.
  • active cron script, wrapper, config, skill references의 실행 경로는 반드시 VPS 경로로 수정.

Task 4.3: secrets와 OAuth 재검증

Objective: provider, Slack, Telegram, Google Workspace 인증이 VPS에서 실제로 동작하는지 확인한다.

hermes --profile sophie auth list
hermes --profile sophie status --all
HOME=/home/jyp gws account list || true

주의: 토큰 파일을 복사해도 OAuth redirect/host binding 때문에 재인증이 필요할 수 있다. 실패 시 hermes auth add <provider> 또는 해당 CLI 재로그인을 수행한다.

7. Phase 5 — OMW 설치 및 기본 볼트 복원

Task 5.1: OMW source/wrapper 복원

Objective: VPS의 Hermes 세션에서도 동일하게 omw CLI가 동작하게 한다.

mkdir -p /home/jyp/projects
cd /home/jyp/projects
 
# 기존 repo 백업을 복원하거나 원격 저장소에서 clone
# 예: tar 복원 또는 git clone <oh-my-wiki-repo-url> oh-my-wiki
 
mkdir -p /home/jyp/.local/bin
cat > /home/jyp/.local/bin/omw <<'SH'
#!/usr/bin/env bash
export HOME=/home/jyp
export OMW_HOME=/home/jyp/.omw
export PYTHONPATH=/home/jyp/projects/oh-my-wiki:${PYTHONPATH:-}
exec python3 -m scripts.omw_cli "$@"
SH
chmod +x /home/jyp/.local/bin/omw
 
export PATH=/home/jyp/.local/bin:$PATH
omw status

Verification: omw status가 JSON을 출력해야 한다.

Task 5.2: OMW registry 및 vault 복원

cd /home/jyp
 
tar -xzf omw-home.tar.gz -C /home/jyp
mkdir -p /home/jyp/projects
tar -xzf jyp-garden-full.tar.gz -C /home/jyp/projects
 
# 결과: /home/jyp/projects/jyp-garden
ls -la /home/jyp/projects/jyp-garden

경로 재등록 필요: 기존 registry는 /mnt/d/projects/jyp-garden을 가리킨다. VPS에서는 아래 둘 중 하나를 선택한다.

권장안 A — registry row를 새 vault 경로로 갱신

omw vault list
# OMW가 지원하는 명령으로 vault를 forget 후 재등록하거나, migrate 명령이 있으면 사용.
# destructive 파일 삭제 금지: registry만 수정해야 한다.
omw vault forget jyp-garden
omw vault create jyp-garden --type obsidian --mode wiki --path /home/jyp/projects/jyp-garden
omw vault use jyp-garden

대안 B — 새 registry 생성 후 vault 재등록

mv /home/jyp/.omw /home/jyp/.omw.pre-migration
mkdir -p /home/jyp/.omw
omw vault create jyp-garden --type obsidian --mode wiki --path /home/jyp/projects/jyp-garden
omw vault use jyp-garden

Verification:

omw status
omw vault list
omw fields wiki/work/projects/hermes-sophie-omw-hostinger-vps-migration-plan.md
omw lint

Task 5.3: OMW index 재생성

Objective: VPS 로컬 경로 기준으로 검색 index를 정상화한다.

# OMW CLI가 reindex 명령을 제공하면 우선 사용
omw lint
omw query "Hermes Sophie Hostinger 이전 계획" || true

Verification: 새 서버에서 해당 계획 문서가 검색되어야 한다.

8. Phase 6 — Gateway, cron, 자동화 전환

Task 6.1: VPS gateway dry run

Objective: 기존 WSL gateway를 중단하지 않고 VPS에서 설정 오류를 먼저 확인한다.

hermes --profile sophie gateway status || true
hermes --profile sophie gateway run

주의: 동일 Slack/Telegram bot token으로 두 gateway를 동시에 장시간 실행하면 메시지 중복 처리 가능성이 있다. dry run은 짧게 수행한다.

Task 6.2: cron job 경로 보정

Objective: 모든 cron script와 workdir이 VPS 경로를 사용하도록 수정한다.

체크 항목:

  • /home/administrator/home/jyp
  • /mnt/d/projects/jyp-garden/home/jyp/projects/jyp-garden
  • Google Drive sync script path
  • OMW wrapper path
  • HOME=/home/administrator gws ...HOME=/home/jyp gws ...

검증 명령:

hermes --profile sophie cron list --all
hermes --profile sophie cron run <JOB_ID>

주의: 사용자에게 발송되는 briefing/mail cron은 test delivery를 local로 바꾸거나, 실행 전 Slack에 테스트임을 명시한다.

Task 6.3: systemd service 설치 및 활성화

hermes --profile sophie gateway install
hermes --profile sophie gateway start
hermes --profile sophie gateway status
 
# SSH 로그아웃 후에도 user service 유지
sudo loginctl enable-linger jyp

Verification: VPS 재부팅 후에도 gateway가 자동 복구되어야 한다.

sudo reboot
# 재접속 후
hermes --profile sophie gateway status
hermes --profile sophie cron status

9. Phase 7 — Cutover 및 검증

Task 7.1: 기존 WSL gateway 일시 중지

# WSL에서 실행
hermes --profile sophie gateway stop
hermes --profile sophie gateway status

승인 필요: 이 시점부터 Slack/Telegram 응답 주체가 VPS로 전환된다.

Task 7.2: VPS gateway 활성 검증

체크리스트:

  • Slack thread에서 Sophie가 응답한다.
  • Telegram home channel에서 Sophie가 응답한다.
  • /status 또는 gateway status가 sophie profile을 가리킨다.
  • 도구 사용이 정상이다: terminal/file/web/cronjob 등.
  • OMW 문서 생성·검색이 정상이다.
  • Gmail/Calendar/Tasks 등 Google Workspace CLI 호출이 정상이다.
  • morning brief, mail triage, OMW sync cron 중 최소 1개를 수동 dry-run으로 검증했다.

Task 7.3: 데이터 정합성 검증

# WSL 백업 체크섬과 VPS 체크섬 비교
sha256sum -c SHA256SUMS
 
# Git vault라면
cd /home/jyp/projects/jyp-garden
git status --short
git log --oneline -5
 
# OMW
omw status
omw lint
omw query "Hostinger VPS 이전"

Acceptance Criteria:

  • omw status active path가 /home/jyp/projects/jyp-garden로 표시된다.
  • Sophie profile show가 VPS 경로를 표시한다.
  • Gateway는 VPS에서 running이고 WSL gateway는 stopped이다.
  • 사용자가 Slack에서 실제 응답을 확인했다.
  • cron job은 경로 오류 없이 최소 dry-run 1회 성공했다.

10. Rollback 계획

Rollback trigger

  • VPS gateway가 Slack/Telegram 메시지를 안정적으로 처리하지 못함.
  • OMW vault 검색/쓰기 실패.
  • Google Workspace 인증 실패로 morning brief/mail triage가 동작하지 않음.
  • VPS systemd/gateway가 재부팅 후 자동 복구되지 않음.

Rollback steps

# VPS에서 gateway 중지
hermes --profile sophie gateway stop
 
# WSL에서 기존 gateway 재시작
hermes --profile sophie gateway start
hermes --profile sophie gateway status

OMW 데이터 rollback:

  • cutover 중 VPS에서 생성된 새 문서가 있으면 rsync --dry-run으로 차이를 확인한 뒤 WSL vault로 수동 병합한다.
  • WSL의 기존 /mnt/d/projects/jyp-garden은 전환 안정화 전까지 삭제하거나 이동하지 않는다.

11. 리스크와 대응

리스크영향대응
동일 bot token gateway 이중 실행중복 응답, 세션 꼬임dry run 최소화, cutover 시 WSL gateway stop 후 VPS start
registry path 불일치OMW가 빈 vault로 보이거나 쓰기 실패omw status active path 검증, vault 재등록
secrets 누락provider/gateway/GWS 실패.env, auth.json, .config/gws 별도 체크리스트
Hostinger VPS 메모리 부족Hermes gateway/cron 불안정swap 설정, cron 동시성 축소, VPS 플랜 상향
Windows path 하드코딩cron/script 실패/home/administrator, /mnt/d 전체 검색 후 수정
Google Drive sync 오동작원격 Drive 오염삭제 동작 금지 유지, dry-run/manifest 우선
DNS/방화벽 제한webhook/API 수신 실패Slack/Telegram polling 방식 우선, 필요한 포트만 개방

12. 실행 전 최종 승인 체크리스트

  • Hostinger VPS IP/SSH 계정 확보.
  • VPS Ubuntu 버전과 디스크 용량 확인.
  • WSL 기준 전체 백업 tarball 생성 완료.
  • SHA256SUMS 검증 완료.
  • secrets 전송 방식 확정: scp over SSH 또는 암호화 archive.
  • cutover 시간 확정.
  • rollback 담당과 기준 확정.
  • Google Drive sync는 삭제 금지/one-way copy-sync 정책 유지.
  • WSL 기존 환경은 최소 7일 보존.

13. 예상 작업 순서 요약

  1. WSL 현재 상태 inventory 생성.
  2. Sophie profile, OMW registry, jyp-garden vault 백업 및 checksum 생성.
  3. Hostinger VPS Ubuntu 초기 보안·패키지 세팅.
  4. Hermes 설치.
  5. Sophie profile 복원 및 config/secrets 검증.
  6. OMW source/wrapper 복원.
  7. jyp-garden vault를 /home/jyp/projects/jyp-garden로 복원.
  8. OMW registry를 새 경로로 재등록.
  9. cron/script 경로 보정.
  10. VPS gateway dry run.
  11. WSL gateway stop → VPS gateway start.
  12. Slack/Telegram/OMW/GWS/cron 검증.
  13. 24~72시간 모니터링 후 WSL은 standby로 보존.

14. 다음 액션

  • 대표님이 Hostinger VPS 접속 정보(IP, SSH 계정명, OS)를 주시면 Phase 1 inventory부터 실제 실행한다.
  • 이전 전 이 문서를 기준으로 “백업만 먼저 수행”할지, “VPS 세팅까지 연속 수행”할지 결정한다.
  • 실행 중 사용자 승인 없이 기존 WSL 삭제, 원격 Drive 삭제, gateway token 재발급은 하지 않는다.