# skill-slack 서비스 배포 계획 (51124 서버) ## 날짜: 2025-09-19 ## 작성자: Claude ## 관련 서비스: skill-slack (포트 8502) ## 목적: 51124 서버에 skill-slack 자동 배포 설정 --- ## 1. 현재 상태 분석 ### 1.1 서비스 현황 - **위치**: `/home/happybell/projects/ivada/skill-slack` - **포트**: 8502 - **상태**: 미배포 (docker ps 결과 없음) - **Gitea Actions**: cicd.yml 파일 존재하지만 deploy.yml 필요 ### 1.2 기존 파일 구조 ``` skill-slack/ ├── .gitea/workflows/cicd.yml # 기존 CI/CD (비활성) ├── app/ # 애플리케이션 코드 ├── docker-compose.yml # 개발용 compose ├── Dockerfile # 이미지 빌드 └── requirements.txt # Python 의존성 ``` ### 1.3 문제점 - cicd.yml은 self-hosted runner 사용 (51123 서버용) - 51124 서버 배포를 위한 별도 워크플로우 필요 - 환경변수 설정 필요 (Slack 토큰 등) --- ## 2. 배포 전략 ### 2.1 서버별 역할 | 서버 | 역할 | 배포 방식 | |------|------|-----------| | 51123 | Gitea Actions 실행 | self-hosted runner | | 51124 | skill-slack 실행 | SSH 원격 배포 | ### 2.2 배포 흐름 ``` 1. Git Push → 2. Gitea Actions (51123) → 3. SSH 배포 (51124) ``` --- ## 3. 구현 계획 ### 3.1 deploy.yml 작성 (새 파일 생성) **경로**: `.gitea/workflows/deploy.yml` ```yaml name: Deploy skill-slack to 51124 on: push: branches: [main] workflow_dispatch: jobs: deploy: runs-on: self-hosted steps: - uses: actions/checkout@v4 - name: Deploy to 51124 server run: | ssh happybell@51124 "cd ~/projects/ivada/skill-slack && \ git pull && \ docker compose down && \ docker compose up -d --build" - name: Health check on 51124 run: | sleep 10 curl -f http://51124:8502/health || exit 1 ``` ### 3.2 환경변수 설정 **51124 서버 .env 파일** (수동 생성 필요): ```bash # Slack 토큰 (실제 값 필요) SLACK_BOT_TOKEN=xoxb-... SLACK_APP_TOKEN=xapp-... SLACK_BOT_TOKEN_RB8001=xoxb-... # 서비스 연결 LLM_GATEWAY_URL=http://localhost:8001 STATE_SERVICE_URL=http://localhost:8507 # 기본 설정 SERVICE_NAME=skill-slack PORT=8502 ENVIRONMENT=production ``` ### 3.3 docker-compose.yml 수정 ```yaml services: skill-slack: # ... 기존 설정 ... ports: - "8502:8502" # 포트 명시적 매핑 추가 environment: # 환경변수는 .env 파일에서 로드 - SLACK_BOT_TOKEN=${SLACK_BOT_TOKEN} # ... ``` --- ## 4. 실행 단계별 체크리스트 ### 4.1 사전 준비 (51124 서버) - [ ] skill-slack 디렉토리 존재 확인 - [ ] git remote 설정 확인 - [ ] .env 파일 생성 및 토큰 설정 - [ ] Docker 설치 상태 확인 ### 4.2 Gitea Actions 설정 - [ ] .gitea/workflows/deploy.yml 생성 - [ ] SSH 키 설정 (51123 → 51124) - [ ] workflow_dispatch 트리거 활성화 ### 4.3 초기 배포 - [ ] 수동 git pull (51124 서버) - [ ] docker compose up -d --build 실행 - [ ] 헬스체크: curl http://localhost:8502/health - [ ] 로그 확인: docker logs skill-slack ### 4.4 연동 테스트 - [ ] rb8001 → skill-slack API 호출 테스트 - [ ] Slack 메시지 포맷팅 기능 테스트 - [ ] 에러 로그 모니터링 --- ## 5. 트러블슈팅 ### 5.1 일반적인 문제 | 문제 | 원인 | 해결 방법 | |------|------|-----------| | 포트 충돌 | 8502 이미 사용 중 | `ss -tlnp | grep 8502` 확인 | | 헬스체크 실패 | 서비스 시작 지연 | start_period 늘리기 | | Slack 토큰 에러 | 잘못된 토큰 | .env 파일 확인 | ### 5.2 로그 위치 - Docker 로그: `docker logs skill-slack` - 애플리케이션 로그: `./logs/` 디렉토리 - Gitea Actions 로그: 웹 UI에서 확인 --- ## 6. 보안 고려사항 ### 6.1 토큰 관리 - Slack 토큰은 .env 파일로만 관리 - .env는 절대 git에 커밋하지 않음 - 서버별로 다른 토큰 사용 권장 ### 6.2 네트워크 - network_mode: host 사용 주의 - 필요시 bridge 네트워크 고려 - 방화벽 규칙 확인 필요 --- ## 7. 향후 개선사항 ### 7.1 단기 (1주일 내) - [ ] 자동 배포 워크플로우 테스트 - [ ] 롤백 전략 수립 - [ ] 모니터링 대시보드 설정 ### 7.2 장기 (1개월 내) - [ ] Blue-Green 배포 전략 도입 - [ ] 로드 밸런싱 설정 - [ ] 자동 스케일링 검토 --- ## 8. 참고 문서 - [NaverWorks-Slack 기본 구성](./250919_naverworks_slack_01_base_configuration.md) - [Slack 메시지 처리 아키텍처](../ideas/250812_claude_Slack_메시지_처리_아키텍처_분석.md) - [서비스 재구조화 계획](../plans/250807_서비스_재구조화_계획.md)