배경
prod 백엔드(ai-server)는 Mac mini에서 Docker Compose(docker-compose.prod.yml)로 실행됩니다. Instagram raw_posts(#259) 및 entity enrichment(#495)는 Instaloader 세션 파일(~/.config/instaloader/session-<username>)이 필요합니다.
현재 ai 컨테이너에는 Instaloader 세션 볼륨 마운트가 없어, 컨테이너 재생성·재배포 시 세션이 사라지거나 docker cp로 매번 수동 복사해야 합니다.
또한 packages/ai-server/.dev.env.example에 있는 prod 관련 env(RAW_POSTS_R2_*, INSTAGRAM_*)가 루트 .env.backend.example(→ .env.backend.prod)에는 아직 반영되지 않았습니다.
목표
- prod ai 컨테이너에 Instaloader 세션 디렉터리 볼륨 마운트 — 재시작 후에도 세션 유지
.env.backend.example에 실제 prod에 필요한 env만 동기화 (packages example은 상세, 루트는 필수만)
범위
1. Docker Compose (packages/api-server/docker/stack/docker-compose.prod.yml)
-
ai 서비스에 host → container 볼륨 추가 (예시):
volumes:
- /Users/decoded/.config/instaloader:/root/.config/instaloader:ro
-
호스트 경로는 Mac mini 배포 서버 기준 (/Users/decoded/...) — compose 주석으로 문서화
-
:ro 기본 (세션 갱신은 호스트에서 instaloader -l 후 파일 교체)
2. .env.backend.example
RAW_POSTS_R2_* (bucket은 ai-server 기본값 raw → example 생략)
INSTAGRAM_SESSION_USERNAME, INSTAGRAM_SYNC_SINCE
ENTITY_ENRICHMENT_GEMINI_MODEL 등 코드 기본값으로 충분한 항목은 루트 example에 넣지 않음 (packages example에만 유지)
3. (선택) 운영 메모
- 최초 1회: 호스트 또는
docker exec -it으로 instaloader -l <부계정> → session-* 파일 생성
- 이후 ai-server 기동 시 별도
instaloader -l 불필요 — 코드가 load_session_from_file로 자동 로드
- 세션 만료 시: 호스트에서 갱신 + (선택) Telegram 알림은 후속 이슈
비범위
- 컨테이너 startup 시 Instaloader 대화형 login
- Telegram webhook 기반 login 자동화
packages/ai-server/.dev.env.example 변경 (이미 상세히 있음)
수용 기준
관련
테스트 계획
배경
prod 백엔드(ai-server)는 Mac mini에서 Docker Compose(
docker-compose.prod.yml)로 실행됩니다. Instagram raw_posts(#259) 및 entity enrichment(#495)는 Instaloader 세션 파일(~/.config/instaloader/session-<username>)이 필요합니다.현재 ai 컨테이너에는 Instaloader 세션 볼륨 마운트가 없어, 컨테이너 재생성·재배포 시 세션이 사라지거나
docker cp로 매번 수동 복사해야 합니다.또한
packages/ai-server/.dev.env.example에 있는 prod 관련 env(RAW_POSTS_R2_*,INSTAGRAM_*)가 루트.env.backend.example(→.env.backend.prod)에는 아직 반영되지 않았습니다.목표
.env.backend.example에 실제 prod에 필요한 env만 동기화 (packages example은 상세, 루트는 필수만)범위
1. Docker Compose (
packages/api-server/docker/stack/docker-compose.prod.yml)ai서비스에 host → container 볼륨 추가 (예시):호스트 경로는 Mac mini 배포 서버 기준 (
/Users/decoded/...) — compose 주석으로 문서화:ro기본 (세션 갱신은 호스트에서instaloader -l후 파일 교체)2.
.env.backend.exampleRAW_POSTS_R2_*(bucket은 ai-server 기본값raw→ example 생략)INSTAGRAM_SESSION_USERNAME,INSTAGRAM_SYNC_SINCEENTITY_ENRICHMENT_GEMINI_MODEL등 코드 기본값으로 충분한 항목은 루트 example에 넣지 않음 (packages example에만 유지)3. (선택) 운영 메모
docker exec -it으로instaloader -l <부계정>→session-*파일 생성instaloader -l불필요 — 코드가load_session_from_file로 자동 로드비범위
packages/ai-server/.dev.env.example변경 (이미 상세히 있음)수용 기준
/root/.config/instaloader/session-*유지INSTAGRAM_SESSION_USERNAME설정 + 유효 세션 파일 시 entity enrichment / raw_posts Instagram adapter 동작.env.backend.example에 위 env 항목 반영, packages dev example과 역할 분리(루트=필수, packages=상세) 주석 또는 팀 합의대로관련
테스트 계획