DOCS/troubleshooting/250919_skill_slack_deployment_plan.md
happybell80 9549b05613 Add skill-slack deployment plan for 51124 server
- 현재 상태 분석 (미배포 상태)
- Gitea Actions 자동 배포 워크플로우 설계
- SSH 원격 배포 전략 (51123 → 51124)
- 환경변수 설정 가이드
- 단계별 실행 체크리스트
- 트러블슈팅 및 보안 고려사항
2025-09-19 21:12:01 +09:00

4.7 KiB

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

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 파일 (수동 생성 필요):

# 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 수정

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
헬스체크 실패 서비스 시작 지연 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. 참고 문서