Skip to content

환경변수 / .env 동기화

여러 프로젝트의 .env 파일을 ainote + macOS Keychain 으로 안전 동기화.

설계

.env 파일
  ├─ 실제 값 → macOS Keychain (service: dev-env/{project})
  │              └─ iCloud Keychain 으로 맥미니 ↔ 맥북 자동 sync
  └─ 키 목록 → ainote ({project}-env-ref.md)
                 └─ 키 이름 + 타입(secret/config) + Keychain 서비스명

왜 분리:

  • 값은 Keychain (OS 레벨 암호화 + iCloud 동기화)
  • 참조만 ainote (어떤 키 있는지 파악, 새 기기 셋업 가이드)

스크립트 사용

~/scripts/ainote-env-sync.sh (이미 셋업됨, 미설치라면 GitHub repo).

Push: .env → Keychain + ainote

bash
ainote-env-sync.sh push tennis-bracket

스크립트 동작:

  1. ~/tennis_bracket/.env 읽음
  2. 각 KEY=VALUE 를 Keychain 에 저장 (service: dev-env/tennis-bracket, account: KEY)
  3. 키 목록 (이름만) 을 ainote 에 tennis-bracket-env-ref.md 로 저장

Pull: Keychain → .env (새 기기)

bash
ainote-env-sync.sh pull tennis-bracket

스크립트 동작:

  1. ainote 에서 tennis-bracket-env-ref.md 받음 → 키 목록 파싱
  2. 각 키를 Keychain 에서 read (iCloud Keychain 으로 이미 sync 됨)
  3. ~/tennis_bracket/.env 생성

일괄

bash
ainote-env-sync.sh push-all   # 등록된 모든 프로젝트
ainote-env-sync.sh pull-all
ainote-env-sync.sh list       # 등록된 프로젝트 목록

등록된 프로젝트 (예)

bash
ainote-env-sync.sh list
tennis-bracket   12 keys  Last sync: 2026-05-07
launchcrew       18 keys  Last sync: 2026-05-06
keeps             8 keys  Last sync: 2026-05-05
triphelper       15 keys
realpick          9 keys
talkk            14 keys
ax-admin         22 keys
ainote-app       11 keys

ainote 에 저장되는 형식

{project}-env-ref.md:

markdown
---
name: tennis-bracket-env-ref
type: reference
ainote_sync: env-refs/tennis-bracket-env-ref.md
---
# tennis-bracket .env Reference

| Key | Type | Keychain Service |
|-----|------|------------------|
| RAILS_ENV | config | (env) |
| DATABASE_URL | secret | dev-env/tennis-bracket |
| TOSS_CLIENT_KEY | secret | dev-env/tennis-bracket |
| TOSS_SECRET_KEY | secret | dev-env/tennis-bracket |
| FIREBASE_PROJECT_ID | config | (env) |
| ... |

값은 ainote 에 안 저장됨. 이름만.

비밀 누출 방지

  • .env 자체를 ainote 에 push 금지 (값 노출)
  • ❌ git 에 .env 커밋 금지 (.gitignore.env* 추가)
  • .env.example 만 git 에 커밋 (값 placeholder)
  • ✅ 정기적으로 키 회전 (분기마다)

새 기기 셋업 (5분)

bash
# 1. ainote-env-sync.sh 받기
curl -O https://raw.githubusercontent.com/seunghan91/ainote-tools/main/ainote-env-sync.sh
chmod +x ainote-env-sync.sh

# 2. ainote 환경변수
export AINOTE_API_KEY="..."

# 3. iCloud Keychain 켜져 있는지 확인 (시스템 설정 → Apple ID)

# 4. 일괄 pull
./ainote-env-sync.sh pull-all

→ 모든 프로젝트의 .env 가 자기 자리에 복원.

다음

MIT License · ainote.dev